	.file	"extr_load.c_lex_scan_string.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"premature end of input"
.LC1:
	.string	"unexpected newline"
.LC2:
	.string	"control character 0x%x"
.LC3:
	.string	"invalid escape"
.LC4:
	.string	"invalid Unicode escape '%.6s'"
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC5:
	.string	"invalid Unicode '\\u%04X\\u%04X'"
	.section	.rodata.str1.1
.LC6:
	.string	"invalid Unicode '\\u%04X'"
	.text
	.p2align 4
	.type	lex_scan_string, @function
lex_scan_string:
.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
	mov	r13, rsi
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12, rdi
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	sub	rsp, 40
	.cfi_def_cfa_offset 96
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 24[rsp], rax
	xor	eax, eax
	mov	eax, DWORD PTR TOKEN_INVALID[rip]
	mov	QWORD PTR 8[rdi], 0
	mov	DWORD PTR [rdi], eax
	call	lex_get_save@PLT
	cmp	eax, 34
	je	.L17
	movabs	rbx, -9187308055463723007
	mov	ebp, eax
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L9:
	call	lex_get_save@PLT
	mov	ebp, eax
.L13:
	cmp	ebp, 34
	je	.L17
.L2:
	cmp	DWORD PTR STREAM_STATE_ERROR[rip], ebp
	je	.L6
	cmp	DWORD PTR STREAM_STATE_EOF[rip], ebp
	je	.L73
	cmp	ebp, 31
	jbe	.L74
	mov	rsi, r13
	mov	rdi, r12
	cmp	ebp, 92
	jne	.L9
	call	lex_get_save@PLT
	cmp	eax, 117
	je	.L75
	mov	edx, eax
	and	edx, -65
	cmp	edx, 34
	je	.L14
	lea	edx, -47[rax]
	cmp	edx, 63
	jbe	.L15
	sub	eax, 114
	and	eax, -3
	jne	.L16
.L14:
	mov	rsi, r13
	mov	rdi, r12
	call	lex_get_save@PLT
	mov	ebp, eax
	cmp	ebp, 34
	jne	.L2
.L17:
	mov	rax, QWORD PTR 24[r12]
	lea	rdi, 1[rax]
	call	jsonp_malloc@PLT
	mov	r14, rax
	test	rax, rax
	je	.L6
	mov	QWORD PTR 8[r12], rax
	lea	rdi, 24[r12]
	call	strbuffer_value@PLT
	lea	rbx, 1[rax]
	movzx	eax, BYTE PTR 1[rax]
	cmp	al, 34
	je	.L18
	lea	rbp, .L34[rip]
	jmp	.L40
	.p2align 4,,10
	.p2align 3
.L19:
	mov	BYTE PTR [r14], al
	mov	rbx, rdi
	add	r14, 1
.L29:
	movzx	eax, BYTE PTR [rbx]
	cmp	al, 34
	je	.L18
.L40:
	lea	rdi, 1[rbx]
	cmp	al, 92
	jne	.L19
	movzx	edx, BYTE PTR 1[rbx]
	cmp	dl, 117
	je	.L76
	cmp	dl, 116
	jg	.L30
	cmp	dl, 91
	jle	.L77
	lea	eax, -92[rdx]
	cmp	al, 24
	ja	.L30
	movzx	eax, al
	movsx	rax, DWORD PTR 0[rbp+rax*4]
	add	rax, rbp
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L34:
	.long	.L32-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L38-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L37-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L36-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L30-.L34
	.long	.L35-.L34
	.long	.L30-.L34
	.long	.L33-.L34
	.text
	.p2align 4,,10
	.p2align 3
.L15:
	bt	rbx, rdx
	jc	.L14
.L16:
	lea	rdx, .LC3[rip]
	mov	rsi, r12
	mov	rdi, r13
	xor	eax, eax
	call	error_set@PLT
	.p2align 4,,10
	.p2align 3
.L6:
	mov	rdi, r12
	call	lex_free_string@PLT
.L1:
	mov	rax, QWORD PTR 24[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L78
	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
.L75:
	.cfi_restore_state
	mov	rsi, r13
	mov	rdi, r12
	mov	r14d, 4
	call	lex_get_save@PLT
	mov	ebp, eax
.L12:
	mov	edi, ebp
	call	l_isxdigit@PLT
	test	eax, eax
	je	.L16
	mov	rsi, r13
	mov	rdi, r12
	call	lex_get_save@PLT
	mov	ebp, eax
	sub	r14d, 1
	jne	.L12
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L73:
	lea	rdx, .LC0[rip]
	mov	rsi, r12
	mov	rdi, r13
	xor	eax, eax
	call	error_set@PLT
	jmp	.L6
	.p2align 4,,10
	.p2align 3
.L74:
	mov	esi, ebp
	mov	rdi, r12
	call	lex_unget_unsave@PLT
	cmp	ebp, 10
	je	.L79
	mov	ecx, ebp
	lea	rdx, .LC2[rip]
	mov	rsi, r12
	mov	rdi, r13
	xor	eax, eax
	call	error_set@PLT
	jmp	.L6
.L33:
	mov	BYTE PTR [r14], 9
	.p2align 4,,10
	.p2align 3
.L39:
	movzx	eax, BYTE PTR 2[rbx]
	add	rbx, 2
	add	r14, 1
	cmp	al, 34
	jne	.L40
.L18:
	mov	BYTE PTR [r14], 0
	mov	eax, DWORD PTR TOKEN_STRING[rip]
	sub	r14, QWORD PTR 8[r12]
	mov	DWORD PTR 16[r12], r14d
	mov	DWORD PTR [r12], eax
	jmp	.L1
.L35:
	mov	BYTE PTR [r14], 13
	jmp	.L39
.L36:
	mov	BYTE PTR [r14], 10
	jmp	.L39
.L37:
	mov	BYTE PTR [r14], 12
	jmp	.L39
.L38:
	mov	BYTE PTR [r14], 8
	jmp	.L39
	.p2align 4,,10
	.p2align 3
.L77:
	cmp	dl, 34
	je	.L32
	cmp	dl, 47
	jne	.L30
.L32:
	mov	BYTE PTR [r14], dl
	jmp	.L39
.L30:
	xor	edi, edi
	call	assert@PLT
	jmp	.L39
.L79:
	lea	rdx, .LC1[rip]
	mov	rsi, r12
	mov	rdi, r13
	xor	eax, eax
	call	error_set@PLT
	jmp	.L6
	.p2align 4,,10
	.p2align 3
.L76:
	call	decode_unicode_escape@PLT
	mov	r9d, eax
	test	eax, eax
	js	.L80
	lea	edx, -55296[rax]
	lea	r15, 6[rbx]
	cmp	edx, 1023
	mov	DWORD PTR 8[rsp], edx
	ja	.L23
	cmp	BYTE PTR 6[rbx], 92
	jne	.L70
	cmp	BYTE PTR 7[rbx], 117
	jne	.L70
	lea	rdi, 7[rbx]
	mov	DWORD PTR 12[rsp], eax
	call	decode_unicode_escape@PLT
	mov	r9d, DWORD PTR 12[rsp]
	mov	edx, DWORD PTR 8[rsp]
	test	eax, eax
	js	.L81
	lea	ecx, -56320[rax]
	lea	r15, 12[rbx]
	cmp	ecx, 1023
	ja	.L26
	sal	edx, 10
	lea	r9d, 65536[rcx+rdx]
.L27:
	lea	rdx, 16[rsp]
	mov	rsi, r14
	mov	edi, r9d
	call	utf8_encode@PLT
	test	rax, rax
	jne	.L82
.L28:
	add	r14, QWORD PTR 16[rsp]
	mov	rbx, r15
	jmp	.L29
	.p2align 4,,10
	.p2align 3
.L23:
	lea	eax, -56320[rax]
	cmp	eax, 1023
	ja	.L27
.L70:
	mov	ecx, r9d
	lea	rdx, .LC6[rip]
	mov	rsi, r12
	mov	rdi, r13
	xor	eax, eax
	call	error_set@PLT
	jmp	.L6
	.p2align 4,,10
	.p2align 3
.L82:
	xor	edi, edi
	call	assert@PLT
	jmp	.L28
.L80:
	mov	rcx, rbx
.L71:
	lea	rdx, .LC4[rip]
	mov	rsi, r12
	mov	rdi, r13
	xor	eax, eax
	call	error_set@PLT
	jmp	.L6
.L26:
	mov	r8d, eax
	mov	ecx, r9d
	lea	rdx, .LC5[rip]
	mov	rsi, r12
	mov	rdi, r13
	xor	eax, eax
	call	error_set@PLT
	jmp	.L6
.L81:
	mov	rcx, r15
	jmp	.L71
.L78:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	lex_scan_string, .-lex_scan_string
	.comm	TOKEN_STRING,4,4
	.comm	TOKEN_INVALID,4,4
	.comm	STREAM_STATE_ERROR,4,4
	.comm	STREAM_STATE_EOF,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_load.c_lex_scan_string.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"premature end of input\000"
	.align	2
.LC1:
	.ascii	"unexpected newline\000"
	.align	2
.LC2:
	.ascii	"control character 0x%x\000"
	.align	2
.LC3:
	.ascii	"invalid escape\000"
	.align	2
.LC4:
	.ascii	"invalid Unicode escape '%.6s'\000"
	.align	2
.LC5:
	.ascii	"invalid Unicode '\\u%04X\\u%04X'\000"
	.align	2
.LC6:
	.ascii	"invalid Unicode '\\u%04X'\000"
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC7:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	lex_scan_string, %function
lex_scan_string:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 0, uses_anonymous_args = 0
	mov	r2, #0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	ldr	r3, .L82
	ldr	ip, .L82+4
	ldr	r3, [r3]
	sub	sp, sp, #28
	ldr	ip, [ip]
	str	ip, [sp, #20]
	mov	ip,#0
	str	r2, [r0, #4]
	str	r3, [r0]
	mov	r5, r0
	mov	r6, r1
	bl	lex_get_save
	cmp	r0, #34
	beq	.L16
	mov	r4, r0
	ldr	r7, .L82+8
	ldr	r8, .L82+12
	b	.L2
.L9:
	bl	lex_get_save
	mov	r4, r0
.L13:
	cmp	r4, #34
	beq	.L16
.L2:
	ldr	r3, [r7]
	cmp	r3, r4
	beq	.L6
	ldr	r3, [r8]
	cmp	r3, r4
	beq	.L72
	cmp	r4, #31
	bls	.L73
	cmp	r4, #92
	mov	r1, r6
	mov	r0, r5
	bne	.L9
	bl	lex_get_save
	cmp	r0, #117
	beq	.L74
	bic	r3, r0, #64
	cmp	r0, #92
	cmpne	r3, #34
	beq	.L14
	cmp	r0, #47
	beq	.L14
	bic	r3, r0, #8
	cmp	r3, #102
	beq	.L14
	sub	r0, r0, #114
	bics	r3, r0, #2
	bne	.L15
.L14:
	mov	r1, r6
	mov	r0, r5
	bl	lex_get_save
	mov	r4, r0
	cmp	r4, #34
	bne	.L2
.L16:
	ldr	r0, [r5, #12]
	add	r0, r0, #1
	bl	jsonp_malloc
	subs	r9, r0, #0
	beq	.L6
	str	r9, [r5, #4]
	add	r0, r5, #12
	bl	strbuffer_value
	ldrb	r3, [r0, #1]	@ zero_extendqisi2
	add	r4, r0, #1
	cmp	r3, #34
	beq	.L17
	mov	r8, #9
	mov	r7, #13
	b	.L39
.L18:
	mov	r1, r9
	strb	r3, [r1], #1
	mov	r9, r1
	mov	r4, r0
.L28:
	ldrb	r3, [r4]	@ zero_extendqisi2
	cmp	r3, #34
	beq	.L17
.L39:
	cmp	r3, #92
	add	r0, r4, #1
	bne	.L18
	ldrb	r3, [r4, #1]	@ zero_extendqisi2
	cmp	r3, #117
	beq	.L75
	cmp	r3, #116
	bhi	.L29
	cmp	r3, #91
	bls	.L76
	sub	r2, r3, #92
	cmp	r2, #24
	ldrls	pc, [pc, r2, asl #2]
	b	.L29
.L33:
	.word	.L69
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L37
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L36
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L35
	.word	.L29
	.word	.L29
	.word	.L29
	.word	.L34
	.word	.L29
	.word	.L32
.L72:
	mov	r0, r6
	mov	r1, r5
	ldr	r2, .L82+16
	bl	error_set
.L6:
	mov	r0, r5
	bl	lex_free_string
.L1:
	ldr	r3, .L82+4
	ldr	r2, [r3]
	ldr	r3, [sp, #20]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L77
	add	sp, sp, #28
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L74:
	mov	r1, r6
	mov	r0, r5
	bl	lex_get_save
	mov	r9, #4
	mov	r4, r0
.L12:
	mov	r0, r4
	bl	l_isxdigit
	cmp	r0, #0
	beq	.L15
	mov	r1, r6
	mov	r0, r5
	bl	lex_get_save
	subs	r9, r9, #1
	mov	r4, r0
	bne	.L12
	b	.L13
.L73:
	mov	r1, r4
	mov	r0, r5
	bl	lex_unget_unsave
	cmp	r4, #10
	beq	.L78
	mov	r3, r4
	mov	r0, r6
	mov	r1, r5
	ldr	r2, .L82+20
	bl	error_set
	b	.L6
.L37:
	mov	r3, #8
.L69:
	strb	r3, [r9]
.L38:
	ldrb	r3, [r4, #2]	@ zero_extendqisi2
	add	r4, r4, #2
	cmp	r3, #34
	add	r9, r9, #1
	bne	.L39
.L17:
	mov	r2, #0
	ldr	r3, .L82+24
	strb	r2, [r9]
	ldr	r1, [r5, #4]
	ldr	r3, [r3]
	sub	r1, r9, r1
	str	r1, [r5, #8]
	str	r3, [r5]
	b	.L1
.L76:
	cmp	r3, #34
	beq	.L69
	cmp	r3, #47
	beq	.L69
.L29:
	mov	r0, #0
	bl	assert
	b	.L38
.L32:
	strb	r8, [r9]
	b	.L38
.L34:
	strb	r7, [r9]
	b	.L38
.L35:
	mov	r3, #10
	strb	r3, [r9]
	b	.L38
.L36:
	mov	r3, #12
	strb	r3, [r9]
	b	.L38
.L78:
	mov	r0, r6
	mov	r1, r5
	ldr	r2, .L82+28
	bl	error_set
	b	.L6
.L75:
	bl	decode_unicode_escape
	subs	r10, r0, #0
	blt	.L79
	sub	r3, r10, #55296
	cmp	r3, #1024
	str	r3, [sp, #12]
	add	fp, r4, #6
	bcs	.L22
	ldrb	r2, [r4, #6]	@ zero_extendqisi2
	cmp	r2, #92
	bne	.L70
	ldrb	r2, [r4, #7]	@ zero_extendqisi2
	cmp	r2, #117
	bne	.L70
	add	r0, r4, #7
	bl	decode_unicode_escape
	cmp	r0, #0
	ldr	r3, [sp, #12]
	blt	.L80
	sub	r2, r0, #56320
	cmp	r2, #1024
	add	fp, r4, #12
	bcs	.L25
	add	r3, r2, r3, lsl #10
	add	r10, r3, #65536
.L26:
	mov	r0, r10
	mov	r1, r9
	add	r2, sp, #16
	bl	utf8_encode
	cmp	r0, #0
	bne	.L81
.L27:
	ldr	r3, [sp, #16]
	mov	r4, fp
	add	r9, r9, r3
	b	.L28
.L22:
	sub	r3, r10, #56320
	cmp	r3, #1024
	bcs	.L26
.L70:
	mov	r3, r10
	mov	r0, r6
	mov	r1, r5
	ldr	r2, .L82+32
	bl	error_set
	b	.L6
.L81:
	mov	r0, #0
	bl	assert
	b	.L27
.L15:
	mov	r0, r6
	mov	r1, r5
	ldr	r2, .L82+36
	bl	error_set
	b	.L6
.L79:
	mov	r3, r4
	mov	r0, r6
	mov	r1, r5
	ldr	r2, .L82+40
	bl	error_set
	b	.L6
.L25:
	str	r0, [sp]
	mov	r3, r10
	mov	r0, r6
	mov	r1, r5
	ldr	r2, .L82+44
	bl	error_set
	b	.L6
.L80:
	mov	r3, fp
	mov	r0, r6
	mov	r1, r5
	ldr	r2, .L82+40
	bl	error_set
	b	.L6
.L77:
	bl	__stack_chk_fail
.L83:
	.align	2
.L82:
	.word	TOKEN_INVALID
	.word	.LC7
	.word	STREAM_STATE_ERROR
	.word	STREAM_STATE_EOF
	.word	.LC0
	.word	.LC2
	.word	TOKEN_STRING
	.word	.LC1
	.word	.LC6
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.size	lex_scan_string, .-lex_scan_string
	.comm	TOKEN_STRING,4,4
	.comm	TOKEN_INVALID,4,4
	.comm	STREAM_STATE_ERROR,4,4
	.comm	STREAM_STATE_EOF,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
