	.file	"extr_avstring.c_av_utf8_decode.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.globl	av_utf8_decode
	.type	av_utf8_decode, @function
av_utf8_decode:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	movabs	rbx, 549755813888
	sub	rsp, 40
	.cfi_def_cfa_offset 96
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 24[rsp], rax
	xor	eax, eax
	mov	QWORD PTR [rsp], rbx
	mov	rax, QWORD PTR [rsi]
	movabs	rbx, 281474976712704
	mov	QWORD PTR 8[rsp], rbx
	movabs	rbx, 288230376153808896
	mov	QWORD PTR 16[rsp], rbx
	cmp	rax, rdx
	jnb	.L21
	lea	r14, 4[rax]
	mov	eax, DWORD PTR [rax]
	mov	r13d, ecx
	mov	r12, rsi
	mov	ecx, eax
	and	ecx, 192
	cmp	ecx, 128
	je	.L35
	cmp	eax, 253
	jg	.L35
	mov	r9d, eax
	mov	ebx, eax
	mov	rbp, rdi
	sar	r9d
	and	r9d, 64
	and	ebx, r9d
	je	.L22
	cmp	rdx, r14
	jbe	.L37
	mov	r8, r14
	mov	ebx, 1
	jmp	.L8
	.p2align 4,,10
	.p2align 3
.L10:
	sal	eax, 6
	sal	r9d, 5
	add	eax, edi
	test	eax, r9d
	je	.L39
	add	ebx, 1
	cmp	rdx, r8
	jbe	.L37
.L8:
	mov	esi, DWORD PTR [r8]
	add	r8, 4
	lea	edi, -128[rsi]
	mov	ecx, edi
	shr	ecx, 6
	je	.L10
.L37:
	mov	QWORD PTR [r12], r14
	mov	rax, QWORD PTR 24[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L36
	mov	edi, DWORD PTR EILSEQ[rip]
	add	rsp, 40
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	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	AVERROR@PLT
	.p2align 4,,10
	.p2align 3
.L39:
	.cfi_restore_state
	xor	edi, edi
	cmp	ebx, 5
	mov	r14, r8
	setle	dil
.L6:
	lea	r15d, -1[r9+r9]
	movsx	rbx, ebx
	and	r15d, eax
	call	av_assert0@PLT
	cmp	DWORD PTR [rsp+rbx*4], r15d
	jg	.L35
	test	r15d, r15d
	js	.L35
	mov	DWORD PTR 0[rbp], r15d
	cmp	r15d, 1114111
	jle	.L15
	xor	eax, eax
	test	DWORD PTR AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES[rip], r13d
	je	.L18
.L16:
	lea	edx, -55296[r15]
	cmp	edx, 2047
	ja	.L17
	test	DWORD PTR AV_UTF8_FLAG_ACCEPT_SURROGATES[rip], r13d
	jne	.L5
	.p2align 4,,10
	.p2align 3
.L35:
	mov	edi, DWORD PTR EILSEQ[rip]
	call	AVERROR@PLT
.L5:
	mov	QWORD PTR [r12], r14
.L1:
	mov	rdx, QWORD PTR 24[rsp]
	xor	rdx, QWORD PTR fs:40
	jne	.L36
	add	rsp, 40
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	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
	ret
	.p2align 4,,10
	.p2align 3
.L21:
	.cfi_restore_state
	xor	eax, eax
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L15:
	lea	eax, -9[r15]
	cmp	eax, 1
	jbe	.L24
	cmp	r15d, 31
	jg	.L24
	cmp	r15d, 13
	je	.L25
	test	DWORD PTR AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES[rip], r13d
	jne	.L18
.L24:
	xor	eax, eax
	jmp	.L16
.L18:
	mov	edi, DWORD PTR EILSEQ[rip]
	call	AVERROR@PLT
	jmp	.L16
.L25:
	xor	eax, eax
.L17:
	sub	r15d, 65534
	cmp	r15d, 1
	ja	.L5
	test	DWORD PTR AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS[rip], r13d
	jne	.L5
	jmp	.L35
.L22:
	mov	edi, 1
	jmp	.L6
.L36:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	av_utf8_decode, .-av_utf8_decode
	.comm	EILSEQ,4,4
	.comm	AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES,4,4
	.comm	AV_UTF8_FLAG_ACCEPT_SURROGATES,4,4
	.comm	AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS,4,4
	.comm	AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES,4,4
	.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_avstring.c_av_utf8_decode.c"
	.text
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	av_utf8_decode
	.syntax unified
	.arm
	.fpu softvfp
	.type	av_utf8_decode, %function
av_utf8_decode:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, lr}
	mov	r5, r1
	mov	r10, r2
	sub	sp, sp, #32
	ldr	lr, .L33
	add	ip, sp, #4
	mov	r7, r0
	mov	r6, r3
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1}
	ldr	r8, [r5]
	ldr	r3, .L33+4
	cmp	r8, r10
	ldr	r3, [r3]
	str	r3, [sp, #28]
	mov	r3,#0
	stm	ip, {r0, r1}
	bcs	.L20
	ldr	r3, [r8], #4
	cmp	r3, #253
	movle	r2, #0
	movgt	r2, #1
	and	r1, r3, #192
	cmp	r1, #128
	orreq	r2, r2, #1
	cmp	r2, #0
	bne	.L27
	asr	lr, r3, #1
	and	lr, lr, #64
	ands	r9, r3, lr
	beq	.L21
	cmp	r10, r8
	bls	.L29
	mov	r2, r8
	mov	r9, #1
	b	.L7
.L9:
	add	r3, ip, r3, lsl #6
	lsl	lr, lr, #5
	tst	r3, lr
	beq	.L31
	cmp	r10, r2
	add	r9, r9, #1
	bls	.L29
.L7:
	ldr	ip, [r2], #4
	sub	ip, ip, #128
	lsrs	r1, ip, #6
	beq	.L9
.L29:
	ldr	r3, .L33+4
	str	r8, [r5]
	ldr	r2, [r3]
	ldr	r3, [sp, #28]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L28
	ldr	r3, .L33+8
	ldr	r0, [r3]
	add	sp, sp, #32
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, lr}
	b	AVERROR
.L31:
	cmp	r9, #5
	mov	r8, r2
	movgt	r0, #0
	movle	r0, #1
.L5:
	lsl	r4, lr, #1
	sub	r4, r4, #1
	and	r4, r4, r3
	bl	av_assert0
	add	r3, sp, #32
	add	r9, r3, r9, lsl #2
	ldr	r3, [r9, #-28]
	cmp	r3, r4
	bgt	.L27
	cmp	r4, #0
	blt	.L27
	cmp	r4, #1114112
	str	r4, [r7]
	bge	.L32
	sub	r0, r4, #9
	cmp	r0, #1
	movls	r0, #0
	movhi	r0, #1
	cmp	r4, #31
	movgt	r0, #0
	cmp	r0, #0
	beq	.L15
	cmp	r4, #13
	beq	.L24
	ldr	r3, .L33+12
	ldr	r3, [r3]
	ands	r0, r6, r3
	bne	.L17
.L15:
	sub	r3, r4, #55296
	cmp	r3, #2048
	bcs	.L16
	ldr	r3, .L33+16
	ldr	r3, [r3]
	tst	r6, r3
	bne	.L4
.L27:
	ldr	r3, .L33+8
	ldr	r0, [r3]
	bl	AVERROR
.L4:
	str	r8, [r5]
.L1:
	ldr	r3, .L33+4
	ldr	r2, [r3]
	ldr	r3, [sp, #28]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L28
	add	sp, sp, #32
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
.L20:
	mov	r0, #0
	b	.L1
.L32:
	ldr	r3, .L33+20
	ldr	r3, [r3]
	tst	r6, r3
	movne	r0, #0
	bne	.L15
.L17:
	ldr	r3, .L33+8
	ldr	r0, [r3]
	bl	AVERROR
	b	.L15
.L24:
	mov	r0, #0
.L16:
	sub	r4, r4, #65280
	sub	r4, r4, #254
	cmp	r4, #1
	bhi	.L4
	ldr	r3, .L33+24
	ldr	r3, [r3]
	tst	r6, r3
	bne	.L4
	b	.L27
.L21:
	mov	r0, #1
	b	.L5
.L28:
	bl	__stack_chk_fail
.L34:
	.align	2
.L33:
	.word	.LANCHOR0
	.word	.LC1
	.word	EILSEQ
	.word	AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES
	.word	AV_UTF8_FLAG_ACCEPT_SURROGATES
	.word	AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES
	.word	AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS
	.size	av_utf8_decode, .-av_utf8_decode
	.comm	EILSEQ,4,4
	.comm	AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES,4,4
	.comm	AV_UTF8_FLAG_ACCEPT_SURROGATES,4,4
	.comm	AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS,4,4
	.comm	AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES,4,4
	.section	.rodata
	.align	2
	.set	.LANCHOR0,. + 0
.LC0:
	.word	0
	.word	128
	.word	2048
	.word	65536
	.word	2097152
	.word	67108864
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
