	.file	"extr_cook.c_ao_string_cook_escape_char.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.globl	ao_string_cook_escape_char
	.type	ao_string_cook_escape_char, @function
ao_string_cook_escape_char:
.LFB0:
	.cfi_startproc
	endbr64
	push	r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	push	rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	push	rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	sub	rsp, 16
	.cfi_def_cfa_offset 48
	movzx	edx, BYTE PTR [rdi]
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 8[rsp], rax
	xor	eax, eax
	lea	eax, -48[rdx]
	mov	BYTE PTR [rsi], dl
	cmp	al, 72
	ja	.L18
	lea	rcx, .L4[rip]
	movzx	eax, al
	mov	rbp, rdi
	mov	rbx, rsi
	movsx	rax, DWORD PTR [rcx+rax*4]
	add	rax, rcx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L4:
	.long	.L12-.L4
	.long	.L12-.L4
	.long	.L12-.L4
	.long	.L12-.L4
	.long	.L12-.L4
	.long	.L12-.L4
	.long	.L12-.L4
	.long	.L12-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L3-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L11-.L4
	.long	.L10-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L9-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L8-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L18-.L4
	.long	.L7-.L4
	.long	.L18-.L4
	.long	.L6-.L4
	.long	.L18-.L4
	.long	.L5-.L4
	.long	.L18-.L4
	.long	.L3-.L4
	.text
	.p2align 4,,10
	.p2align 3
.L3:
	movsx	edi, BYTE PTR 1[rdi]
	call	IS_HEX_DIGIT_CHAR@PLT
	test	eax, eax
	jne	.L13
	.p2align 4,,10
	.p2align 3
.L18:
	mov	r12d, 1
.L1:
	mov	rax, QWORD PTR 8[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L23
	add	rsp, 16
	.cfi_remember_state
	.cfi_def_cfa_offset 32
	mov	eax, r12d
	pop	rbx
	.cfi_def_cfa_offset 24
	pop	rbp
	.cfi_def_cfa_offset 16
	pop	r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L12:
	.cfi_restore_state
	movsx	edi, BYTE PTR 1[rdi]
	mov	BYTE PTR 4[rsp], dl
	call	IS_OCT_DIGIT_CHAR@PLT
	test	eax, eax
	je	.L19
	movzx	eax, BYTE PTR 1[rbp]
	movsx	edi, BYTE PTR 2[rbp]
	mov	BYTE PTR 5[rsp], al
	call	IS_OCT_DIGIT_CHAR@PLT
	test	eax, eax
	je	.L20
	movzx	eax, BYTE PTR 2[rbp]
	mov	r12d, 3
	mov	BYTE PTR 6[rsp], al
.L14:
	mov	eax, r12d
	mov	edx, 8
	lea	rdi, 4[rsp]
	xor	esi, esi
	mov	BYTE PTR 4[rsp+rax], -128
	call	strtoul@PLT
	mov	edx, 255
	cmp	rax, 255
	cmova	rax, rdx
	mov	BYTE PTR [rbx], al
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L11:
	mov	BYTE PTR [rsi], 7
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L10:
	mov	BYTE PTR [rsi], 8
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L9:
	mov	BYTE PTR [rsi], 12
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L8:
	mov	BYTE PTR [rsi], -127
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L7:
	mov	BYTE PTR [rsi], 13
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L6:
	mov	BYTE PTR [rsi], 9
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L5:
	mov	BYTE PTR [rsi], 11
	mov	r12d, 1
	jmp	.L1
	.p2align 4,,10
	.p2align 3
.L13:
	movzx	eax, BYTE PTR 1[rbp]
	movsx	edi, BYTE PTR 2[rbp]
	mov	BYTE PTR 4[rsp], al
	call	IS_HEX_DIGIT_CHAR@PLT
	test	eax, eax
	je	.L24
	movzx	eax, BYTE PTR 2[rbp]
	mov	r12d, 3
	mov	BYTE PTR 5[rsp], al
	mov	eax, 2
.L16:
	lea	rdi, 4[rsp]
	mov	edx, 16
	xor	esi, esi
	mov	BYTE PTR 4[rsp+rax], -128
	call	strtoul@PLT
	mov	BYTE PTR [rbx], al
	jmp	.L1
.L19:
	mov	r12d, 1
	jmp	.L14
.L20:
	mov	r12d, 2
	jmp	.L14
.L24:
	mov	r12d, 2
	mov	eax, 1
	jmp	.L16
.L23:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	ao_string_cook_escape_char, .-ao_string_cook_escape_char
	.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_cook.c_ao_string_cook_escape_char.c"
	.text
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC0:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	ao_string_cook_escape_char
	.syntax unified
	.arm
	.fpu softvfp
	.type	ao_string_cook_escape_char, %function
ao_string_cook_escape_char:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, lr}
	mov	r5, r1
	ldrb	r3, [r0]	@ zero_extendqisi2
	ldr	r1, .L32
	sub	sp, sp, #8
	cmp	r3, #13
	ldr	r1, [r1]
	str	r1, [sp, #4]
	mov	r1,#0
	mov	r6, r0
	strb	r3, [r5]
	beq	.L2
	sub	r1, r3, #48
	and	r0, r1, #255
	cmp	r0, #81
	bhi	.L22
	cmp	r1, #81
	ldrls	pc, [pc, r1, asl #2]
	b	.L22
.L6:
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L7
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L14
	.word	.L13
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L12
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L11
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L10
	.word	.L22
	.word	.L9
	.word	.L22
	.word	.L8
	.word	.L22
	.word	.L7
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L22
	.word	.L23
	.word	.L24
.L24:
	mov	r4, #1
.L5:
	strb	r2, [r5]
	b	.L1
.L23:
	mov	r4, #0
.L1:
	ldr	r3, .L32
	ldr	r2, [r3]
	ldr	r3, [sp, #4]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L30
	mov	r0, r4
	add	sp, sp, #8
	@ sp needed
	pop	{r4, r5, r6, pc}
.L7:
	ldrb	r0, [r6, #1]	@ zero_extendqisi2
	bl	IS_HEX_DIGIT_CHAR
	cmp	r0, #0
	bne	.L31
.L22:
	mov	r4, #1
	b	.L1
.L8:
	mov	r3, #11
	mov	r4, #1
	strb	r3, [r5]
	b	.L1
.L15:
	ldrb	r0, [r6, #1]	@ zero_extendqisi2
	strb	r3, [sp]
	bl	IS_OCT_DIGIT_CHAR
	cmp	r0, #0
	beq	.L26
	ldrb	r3, [r6, #1]	@ zero_extendqisi2
	ldrb	r0, [r6, #2]	@ zero_extendqisi2
	strb	r3, [sp, #1]
	bl	IS_OCT_DIGIT_CHAR
	cmp	r0, #0
	beq	.L27
	mov	r4, #3
	ldrb	r3, [r6, #2]	@ zero_extendqisi2
	strb	r3, [sp, #2]
.L18:
	mov	r2, #8
	mvn	r0, #127
	add	r3, sp, r2
	add	r3, r3, r4
	strb	r0, [r3, #-8]
	mov	r1, #0
	mov	r0, sp
	bl	strtoul
	cmp	r0, #255
	movcs	r0, #255
	strb	r0, [r5]
	b	.L1
.L14:
	mov	r3, #7
	mov	r4, #1
	strb	r3, [r5]
	b	.L1
.L13:
	mov	r3, #8
	mov	r4, #1
	strb	r3, [r5]
	b	.L1
.L12:
	mov	r3, #12
	mov	r4, #1
	strb	r3, [r5]
	b	.L1
.L11:
	mvn	r3, #126
	mov	r4, #1
	strb	r3, [r5]
	b	.L1
.L10:
	mov	r3, #13
	mov	r4, #1
	strb	r3, [r5]
	b	.L1
.L9:
	mov	r3, #9
	mov	r4, #1
	strb	r3, [r5]
	b	.L1
.L2:
	ldrb	r3, [r0, #1]	@ zero_extendqisi2
	cmp	r3, #129
	bne	.L22
	mov	r4, #2
	b	.L5
.L31:
	ldrb	r3, [r6, #1]	@ zero_extendqisi2
	ldrb	r0, [r6, #2]	@ zero_extendqisi2
	strb	r3, [sp]
	bl	IS_HEX_DIGIT_CHAR
	cmp	r0, #0
	moveq	r4, #2
	moveq	r3, #1
	movne	r4, #3
	movne	r3, #2
	ldrbne	r2, [r6, #2]	@ zero_extendqisi2
	strbne	r2, [sp, #1]
.L20:
	mvn	r0, #127
	add	r2, sp, #8
	add	r3, r2, r3
	strb	r0, [r3, #-8]
	mov	r2, #16
	mov	r1, #0
	mov	r0, sp
	bl	strtoul
	strb	r0, [r5]
	b	.L1
.L26:
	mov	r4, #1
	b	.L18
.L27:
	mov	r4, #2
	b	.L18
.L30:
	bl	__stack_chk_fail
.L33:
	.align	2
.L32:
	.word	.LC0
	.size	ao_string_cook_escape_char, .-ao_string_cook_escape_char
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
