	.file	"extr_ngx_string.c_ngx_unescape_uri.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.globl	ngx_unescape_uri
	.type	ngx_unescape_uri, @function
ngx_unescape_uri:
.LFB0:
	.cfi_startproc
	endbr64
	mov	r9, QWORD PTR [rdi]
	mov	r8, QWORD PTR [rsi]
	test	rdx, rdx
	je	.L49
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	push	rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	lea	rbx, -1[rdx]
	.p2align 4,,10
	.p2align 3
.L10:
	movzx	eax, BYTE PTR [r8]
	lea	r11, 1[r8]
	cmp	al, 63
	je	.L3
.L6:
	lea	r10, -1[rbx]
	cmp	al, 37
	jne	.L33
	test	rbx, rbx
	je	.L34
	movzx	ebx, BYTE PTR [r11]
	lea	r8, 1[r11]
	lea	rdx, -1[r10]
	lea	eax, -48[rbx]
	cmp	al, 9
	jbe	.L57
	mov	eax, ebx
	or	eax, 32
	lea	ebp, -97[rax]
	cmp	bpl, 5
	ja	.L12
	sub	eax, 87
.L57:
	test	r10, r10
	je	.L2
	lea	r8, 2[r11]
	movzx	r11d, BYTE PTR 1[r11]
	lea	ebx, -48[r11]
	cmp	bl, 9
	ja	.L15
	sal	eax, 4
	lea	rbx, -2[r10]
	add	eax, r11d
	lea	r11d, -48[rax]
	test	DWORD PTR NGX_UNESCAPE_REDIRECT[rip], ecx
	je	.L54
	sub	eax, 86
	cmp	al, 88
	jbe	.L54
.L27:
	mov	BYTE PTR [r9], 37
	movzx	eax, BYTE PTR -2[r8]
	lea	r10, 3[r9]
	mov	BYTE PTR 1[r9], al
	movzx	eax, BYTE PTR -1[r8]
	mov	BYTE PTR 2[r9], al
	test	rdx, rdx
	je	.L52
.L18:
	movzx	eax, BYTE PTR [r8]
	lea	r11, 1[r8]
	mov	r9, r10
.L30:
	cmp	al, 63
	jne	.L6
.L3:
	mov	eax, DWORD PTR NGX_UNESCAPE_URI[rip]
	or	eax, DWORD PTR NGX_UNESCAPE_REDIRECT[rip]
	test	eax, ecx
	jne	.L7
	mov	rdx, rbx
	mov	r8, r11
	sub	rbx, 1
	mov	r10, r9
	mov	eax, 63
.L4:
	mov	BYTE PTR [r10], al
	add	r9, 1
	test	rdx, rdx
	jne	.L10
.L2:
	mov	QWORD PTR [rdi], r9
	pop	rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	mov	QWORD PTR [rsi], r8
	pop	rbp
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L15:
	.cfi_restore_state
	or	r11d, 32
	lea	ebx, -97[r11]
	cmp	bl, 5
	ja	.L21
	sal	eax, 4
	add	eax, r11d
	lea	r11d, -87[rax]
	test	DWORD PTR NGX_UNESCAPE_URI[rip], ecx
	je	.L22
	lea	rbp, 1[r9]
	cmp	r11b, 63
	je	.L64
.L61:
	mov	BYTE PTR [r9], r11b
	lea	rbx, -2[r10]
	test	rdx, rdx
	je	.L35
	movzx	eax, BYTE PTR [r8]
	lea	r11, 1[r8]
	mov	r9, rbp
	jmp	.L30
	.p2align 4,,10
	.p2align 3
.L22:
	test	DWORD PTR NGX_UNESCAPE_REDIRECT[rip], ecx
	je	.L25
	cmp	r11b, 63
	je	.L65
	sub	eax, 125
	lea	rbx, -2[r10]
	cmp	al, 88
	ja	.L27
	.p2align 4,,10
	.p2align 3
.L54:
	mov	BYTE PTR [r9], r11b
	lea	r10, 1[r9]
	test	rdx, rdx
	jne	.L18
.L52:
	mov	r9, r10
	pop	rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	pop	rbp
	.cfi_def_cfa_offset 8
	mov	QWORD PTR [rdi], r9
	mov	QWORD PTR [rsi], r8
	ret
	.p2align 4,,10
	.p2align 3
.L33:
	.cfi_restore_state
	mov	rdx, rbx
	mov	r8, r11
	mov	rbx, r10
	mov	r10, r9
	jmp	.L4
	.p2align 4,,10
	.p2align 3
.L12:
	mov	BYTE PTR [r9], bl
	lea	rbp, 1[r9]
	test	r10, r10
	je	.L35
	movzx	eax, BYTE PTR 1[r11]
	mov	rbx, rdx
	add	r11, 2
	mov	r9, rbp
	jmp	.L30
	.p2align 4,,10
	.p2align 3
.L21:
	lea	rbx, -2[r10]
	test	rdx, rdx
	je	.L2
	movzx	eax, BYTE PTR [r8]
	lea	r11, 1[r8]
	jmp	.L30
	.p2align 4,,10
	.p2align 3
.L25:
	lea	rbp, 1[r9]
	jmp	.L61
.L35:
	mov	r9, rbp
	jmp	.L2
.L7:
	mov	BYTE PTR [r9], 63
	mov	r8, r11
	add	r9, 1
	jmp	.L2
.L34:
	mov	r8, r11
	jmp	.L2
.L49:
	.cfi_def_cfa_offset 8
	.cfi_restore 3
	.cfi_restore 6
	mov	QWORD PTR [rdi], r9
	mov	QWORD PTR [rsi], r8
	ret
.L64:
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	.cfi_offset 6, -16
	mov	BYTE PTR [r9], 63
	mov	r9, rbp
	jmp	.L2
.L65:
	mov	BYTE PTR [r9], 63
	add	r9, 1
	jmp	.L2
	.cfi_endproc
.LFE0:
	.size	ngx_unescape_uri, .-ngx_unescape_uri
	.comm	NGX_UNESCAPE_URI,4,4
	.comm	NGX_UNESCAPE_REDIRECT,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_ngx_string.c_ngx_unescape_uri.c"
	.text
	.align	2
	.global	ngx_unescape_uri
	.syntax unified
	.arm
	.fpu softvfp
	.type	ngx_unescape_uri, %function
ngx_unescape_uri:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	cmp	r2, #0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	ldr	ip, [r0]
	ldr	r4, [r1]
	beq	.L2
	mov	r8, #37
	ldr	r7, .L64
	ldr	r6, .L64+4
	sub	r9, r2, #1
.L10:
	mov	r2, r4
	ldrb	lr, [r2], #1	@ zero_extendqisi2
	cmp	lr, #63
	bne	.L6
	b	.L3
.L8:
	cmp	r5, #0
	beq	.L2
.L52:
	add	r4, r2, #2
	ldrb	r2, [r2, #1]	@ zero_extendqisi2
	sub	r10, r2, #48
	cmp	r10, #9
	bhi	.L14
	add	r2, r2, r9, lsl #4
	ldr	r9, [r6]
	and	r2, r2, #255
	sub	r10, r2, #48
	tst	r3, r9
	and	r10, r10, #255
	sub	r9, r5, #2
	beq	.L53
	sub	r2, r2, #86
	cmp	r2, #88
	bls	.L53
.L26:
	strb	r8, [ip]
	ldrb	r2, [r4, #-2]	@ zero_extendqisi2
	cmp	lr, #0
	strb	r2, [ip, #1]
	ldrb	r2, [r4, #-1]	@ zero_extendqisi2
	add	lr, ip, #3
	strb	r2, [ip, #2]
	beq	.L60
	mov	r2, r4
	mov	ip, lr
	ldrb	lr, [r2], #1	@ zero_extendqisi2
.L29:
	cmp	lr, #63
	beq	.L3
.L6:
	cmp	lr, #37
	sub	r5, r9, #1
	bne	.L32
	cmp	r9, #0
	mov	r4, r2
	beq	.L2
	ldrb	r10, [r4], #1	@ zero_extendqisi2
	sub	lr, r5, #1
	sub	r9, r10, #48
	and	r9, r9, #255
	cmp	r9, #9
	bls	.L8
	orr	r9, r10, #32
	sub	fp, r9, #97
	cmp	fp, #5
	bhi	.L11
	sub	r9, r9, #87
	cmp	r5, #0
	and	r9, r9, #255
	bne	.L52
.L2:
	str	ip, [r0]
	str	r4, [r1]
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L14:
	orr	r2, r2, #32
	sub	r10, r2, #97
	cmp	r10, #5
	bhi	.L20
	add	r2, r2, r9, lsl #4
	ldr	r9, [r7]
	and	r2, r2, #255
	sub	r10, r2, #87
	tst	r3, r9
	and	r10, r10, #255
	beq	.L21
	cmp	r10, #63
	add	fp, ip, #1
	beq	.L61
	cmp	lr, #0
	strb	r10, [ip]
	sub	r9, r5, #2
	beq	.L62
	mov	r2, r4
	ldrb	lr, [r2], #1	@ zero_extendqisi2
	mov	ip, fp
	cmp	lr, #63
	bne	.L6
.L3:
	ldr	lr, [r7]
	ldr	r4, [r6]
	orr	lr, lr, r4
	tst	lr, r3
	bne	.L7
	mov	r4, r2
	mov	lr, #63
	mov	r2, ip
	mov	r10, r9
	sub	r9, r9, #1
.L4:
	cmp	r10, #0
	add	ip, ip, #1
	strb	lr, [r2]
	bne	.L10
	b	.L2
.L21:
	ldr	r9, [r6]
	tst	r3, r9
	beq	.L24
	cmp	r10, #63
	beq	.L63
	sub	r2, r2, #125
	cmp	r2, #88
	sub	r9, r5, #2
	bhi	.L26
.L53:
	cmp	lr, #0
	strb	r10, [ip], #1
	beq	.L2
.L51:
	mov	r2, r4
	ldrb	lr, [r2], #1	@ zero_extendqisi2
	b	.L29
.L32:
	mov	r10, r9
	mov	r4, r2
	mov	r9, r5
	mov	r2, ip
	b	.L4
.L11:
	cmp	r5, #0
	strb	r10, [ip], #1
	beq	.L2
	mov	r9, lr
	add	r2, r2, #2
	ldrb	lr, [r2, #-1]	@ zero_extendqisi2
	b	.L29
.L20:
	cmp	lr, #0
	sub	r9, r5, #2
	bne	.L51
	b	.L2
.L24:
	cmp	lr, #0
	strb	r10, [ip], #1
	sub	r9, r5, #2
	bne	.L51
	b	.L2
.L7:
	mov	r3, #63
	mov	r4, r2
	strb	r3, [ip], #1
	b	.L2
.L60:
	mov	ip, lr
	b	.L2
.L61:
	strb	r10, [ip]
	mov	ip, fp
	b	.L2
.L62:
	mov	ip, fp
	b	.L2
.L63:
	strb	r10, [ip], #1
	b	.L2
.L65:
	.align	2
.L64:
	.word	NGX_UNESCAPE_URI
	.word	NGX_UNESCAPE_REDIRECT
	.size	ngx_unescape_uri, .-ngx_unescape_uri
	.comm	NGX_UNESCAPE_URI,4,4
	.comm	NGX_UNESCAPE_REDIRECT,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
