	.file	"extr_es1688_lib.c_snd_es1688_put_single.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.type	snd_es1688_put_single, @function
snd_es1688_put_single:
.LFB0:
	.cfi_startproc
	endbr64
	push	r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	push	r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	push	r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	mov	r12, rsi
	push	rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	push	rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	mov	rbx, rdi
	call	snd_kcontrol_chip@PLT
	mov	ecx, DWORD PTR [rbx]
	mov	rdx, QWORD PTR [r12]
	mov	r13, rax
	movzx	eax, ch
	movzx	edi, BYTE PTR [rdx]
	movzx	ebp, cl
	mov	r14d, eax
	mov	eax, ecx
	sar	eax, 16
	and	edi, eax
	movzx	ebx, al
	mov	edx, edi
	mov	rdi, r13
	sub	eax, edx
	shr	ecx, 24
	mov	ecx, r14d
	cmovne	edx, eax
	xor	esi, esi
	movzx	edx, dl
	sal	edx, cl
	mov	r12d, edx
	call	spin_lock_irqsave@PLT
	mov	esi, ebp
	mov	rdi, r13
	call	snd_es1688_mixer_read@PLT
	mov	ecx, r14d
	sal	ebx, cl
	mov	edx, ebx
	not	edx
	and	edx, eax
	or	edx, r12d
	xor	r12d, r12d
	cmp	al, dl
	setne	r12b
	je	.L3
	movzx	edx, dl
	mov	esi, ebp
	mov	rdi, r13
	call	snd_es1688_mixer_write@PLT
.L3:
	mov	rdi, r13
	xor	esi, esi
	call	spin_unlock_irqrestore@PLT
	pop	rbx
	.cfi_def_cfa_offset 40
	mov	eax, r12d
	pop	rbp
	.cfi_def_cfa_offset 32
	pop	r12
	.cfi_def_cfa_offset 24
	pop	r13
	.cfi_def_cfa_offset 16
	pop	r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE0:
	.size	snd_es1688_put_single, .-snd_es1688_put_single
	.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_es1688_lib.c_snd_es1688_put_single.c"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	snd_es1688_put_single, %function
snd_es1688_put_single:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, lr}
	mov	r5, r1
	mov	r4, r0
	bl	snd_kcontrol_chip
	mov	r7, r0
	ldr	r3, [r5]
	ldr	r6, [r4]
	ldr	r2, [r3]
	asr	r3, r6, #16
	and	r2, r2, r3
	lsrs	r1, r6, #24
	and	r2, r2, #255
	subne	r2, r3, r2
	asr	r8, r6, #8
	andne	r2, r2, #255
	mov	r1, #0
	and	r8, r8, #255
	and	r6, r6, #255
	lsl	r4, r2, r8
	and	r5, r3, #255
	bl	spin_lock_irqsave
	mov	r1, r6
	mov	r0, r7
	bl	snd_es1688_mixer_read
	bic	r2, r0, r5, lsl r8
	orr	r2, r2, r4
	and	r2, r2, #255
	cmp	r0, r2
	movne	r4, #1
	moveq	r4, #0
	beq	.L3
	mov	r1, r6
	mov	r0, r7
	bl	snd_es1688_mixer_write
.L3:
	mov	r0, r7
	mov	r1, #0
	bl	spin_unlock_irqrestore
	mov	r0, r4
	pop	{r4, r5, r6, r7, r8, pc}
	.size	snd_es1688_put_single, .-snd_es1688_put_single
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
