	.file	"extr_coreaudio_common.c_ca_Render.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.globl	ca_Render
	.type	ca_Render, @function
ca_Render:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	mov	r15, r8
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	mov	r14d, esi
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	mov	r13, rcx
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	mov	rbp, rdi
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	rbx, rdx
	sub	rsp, 8
	.cfi_def_cfa_offset 64
	mov	r12, QWORD PTR [rdi]
	mov	rdi, r12
	call	lock_lock@PLT
	mov	eax, DWORD PTR [r12]
	test	eax, eax
	jne	.L32
.L2:
	cmp	QWORD PTR 64[r12], 0
	je	.L33
.L3:
	mov	rdx, r15
	xor	esi, esi
	mov	rdi, r13
.L30:
	call	memset@PLT
.L11:
	add	rsp, 8
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	mov	rdi, r12
	pop	rbx
	.cfi_def_cfa_offset 48
	pop	rbp
	.cfi_def_cfa_offset 40
	pop	r12
	.cfi_def_cfa_offset 32
	pop	r13
	.cfi_def_cfa_offset 24
	pop	r14
	.cfi_def_cfa_offset 16
	pop	r15
	.cfi_def_cfa_offset 8
	jmp	lock_unlock@PLT
	.p2align 4,,10
	.p2align 3
.L33:
	.cfi_restore_state
	xor	edi, edi
	cmp	QWORD PTR 8[r12], 0
	sete	dil
	call	unlikely@PLT
	test	rax, rax
	jne	.L3
	xor	edi, edi
	cmp	QWORD PTR 8[r12], rbx
	setg	dil
	call	unlikely@PLT
	test	rax, rax
	jne	.L34
.L4:
	mov	DWORD PTR 48[r12], r14d
	mov	rbp, QWORD PTR 32[r12]
	xor	r14d, r14d
	mov	QWORD PTR 56[r12], rbx
	test	r15, r15
	je	.L5
	test	rbp, rbp
	jne	.L8
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L6:
	xor	edi, edi
	test	r15, r15
	sete	dil
	call	assert@PLT
	add	QWORD PTR 8[rbp], rbx
	sub	QWORD PTR 0[rbp], rbx
.L7:
	test	rbp, rbp
	je	.L5
	test	r15, r15
	je	.L5
.L8:
	mov	rsi, QWORD PTR 0[rbp]
	mov	rdi, r15
	call	__MIN@PLT
	mov	rsi, QWORD PTR 8[rbp]
	lea	rdi, 0[r13+r14*4]
	mov	rbx, rax
	mov	rdx, rax
	call	memcpy@PLT
	sub	r15, rbx
	add	r14, rbx
	cmp	QWORD PTR 0[rbp], rbx
	jne	.L6
	mov	rbx, QWORD PTR 16[rbp]
	mov	rdi, rbp
	call	block_Release@PLT
	mov	rbp, rbx
	jmp	.L7
	.p2align 4,,10
	.p2align 3
.L32:
	mov	rdi, rbp
	call	ca_ClearOutBuffers@PLT
	mov	DWORD PTR [r12], 0
	lea	rdi, 72[r12]
	call	vlc_sem_post@PLT
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L34:
	mov	rsi, r15
	mov	rdi, r12
	call	BytesToFrames@PLT
	mov	rdi, r12
	mov	esi, eax
	call	FramesToUs@PLT
	mov	rdi, rax
	call	TickToHostTime@PLT
	mov	rdi, QWORD PTR 8[r12]
	add	rax, rbx
	cmp	rdi, rax
	jge	.L3
	sub	rdi, rbx
	call	HostTimeToTick@PLT
	mov	rdi, r12
	mov	esi, eax
	call	UsToFrames@PLT
	mov	rdi, r12
	mov	esi, eax
	call	FramesToBytes@PLT
	xor	edi, edi
	cmp	rax, r15
	mov	rbp, rax
	setbe	dil
	sub	r15, rbp
	call	assert@PLT
	mov	rdx, rbp
	xor	esi, esi
	mov	rdi, r13
	call	memset@PLT
	jmp	.L4
	.p2align 4,,10
	.p2align 3
.L5:
	mov	QWORD PTR 32[r12], rbp
	test	rbp, rbp
	je	.L35
.L10:
	mov	rax, QWORD PTR 16[r12]
	sub	rax, r14
	mov	QWORD PTR 16[r12], rax
	test	r15, r15
	je	.L11
	xor	edi, edi
	test	rax, rax
	sete	dil
	call	assert@PLT
	add	QWORD PTR 24[r12], r15
	mov	rdx, r15
	xor	esi, esi
	lea	rdi, 0[r13+r14*4]
	jmp	.L30
	.p2align 4,,10
	.p2align 3
.L35:
	lea	rax, 32[r12]
	mov	QWORD PTR 40[r12], rax
	jmp	.L10
	.cfi_endproc
.LFE0:
	.size	ca_Render, .-ca_Render
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_coreaudio_common.c_ca_Render.c"
	.text
	.align	2
	.global	ca_Render
	.syntax unified
	.arm
	.fpu softvfp
	.type	ca_Render, %function
ca_Render:
	@ args = 4, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, lr}
	ldr	r7, [r0]
	mov	r4, r0
	mov	r0, r7
	mov	r9, r3
	mov	r10, r1
	mov	r8, r2
	ldr	r6, [sp, #32]
	bl	lock_lock
	ldr	r3, [r7]
	cmp	r3, #0
	bne	.L25
.L2:
	ldr	r3, [r7, #32]
	cmp	r3, #0
	beq	.L26
.L3:
	mov	r2, r6
	mov	r0, r9
.L23:
	mov	r1, #0
	bl	memset
.L10:
	mov	r0, r7
	pop	{r4, r5, r6, r7, r8, r9, r10, lr}
	b	lock_unlock
.L26:
	ldr	r0, [r7, #4]
	clz	r0, r0
	lsr	r0, r0, #5
	bl	unlikely
	subs	r4, r0, #0
	bne	.L3
	ldr	r0, [r7, #4]
	cmp	r0, r8
	movle	r0, #0
	movgt	r0, #1
	bl	unlikely
	cmp	r0, #0
	bne	.L27
.L4:
	ldr	r5, [r7, #16]
	str	r8, [r7, #28]
	subs	r8, r5, #0
	movne	r8, #1
	cmp	r6, #0
	moveq	r8, #0
	cmp	r8, #0
	str	r10, [r7, #24]
	beq	.L5
	mov	r8, #0
	b	.L8
.L6:
	clz	r0, r6
	lsr	r0, r0, #5
	bl	assert
	ldm	r5, {r0, r3}
	cmp	r5, #0
	cmpne	r6, #0
	add	r3, r3, r4
	sub	r0, r0, r4
	stm	r5, {r0, r3}
	beq	.L5
.L8:
	mov	r0, r6
	ldr	r1, [r5]
	bl	__MIN
	mov	r4, r0
	mov	r2, r0
	ldr	r1, [r5, #4]
	add	r0, r9, r8, lsl #2
	bl	memcpy
	ldr	r3, [r5]
	sub	r6, r6, r4
	cmp	r3, r4
	add	r8, r8, r4
	bne	.L6
	ldr	r4, [r5, #8]
	mov	r0, r5
	mov	r5, r4
	bl	block_Release
	cmp	r5, #0
	cmpne	r6, #0
	bne	.L8
.L5:
	cmp	r5, #0
	ldr	r0, [r7, #8]
	addeq	r3, r7, #16
	streq	r3, [r7, #20]
	sub	r0, r0, r8
	cmp	r6, #0
	str	r5, [r7, #16]
	str	r0, [r7, #8]
	beq	.L10
	clz	r0, r0
	lsr	r0, r0, #5
	bl	assert
	ldr	r3, [r7, #12]
	mov	r2, r6
	add	r3, r3, r6
	add	r0, r9, r8, lsl #2
	str	r3, [r7, #12]
	b	.L23
.L25:
	mov	r0, r4
	bl	ca_ClearOutBuffers
	mov	r3, #0
	mov	r0, r7
	str	r3, [r0], #36
	bl	vlc_sem_post
	b	.L2
.L27:
	mov	r1, r6
	mov	r0, r7
	bl	BytesToFrames
	mov	r1, r0
	mov	r0, r7
	bl	FramesToUs
	bl	TickToHostTime
	ldr	r2, [r7, #4]
	add	r3, r8, r0
	cmp	r2, r3
	bge	.L3
	sub	r0, r2, r8
	bl	HostTimeToTick
	mov	r1, r0
	mov	r0, r7
	bl	UsToFrames
	mov	r1, r0
	mov	r0, r7
	bl	FramesToBytes
	mov	r5, r0
	cmp	r0, r6
	movhi	r0, #0
	movls	r0, #1
	bl	assert
	mov	r2, r5
	mov	r1, r4
	mov	r0, r9
	bl	memset
	sub	r6, r6, r5
	b	.L4
	.size	ca_Render, .-ca_Render
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
