	.file	"extr_jsstring.c_Sp_replace_regexp.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	""
	.text
	.p2align 4
	.type	Sp_replace_regexp, @function
Sp_replace_regexp:
.LFB0:
	.cfi_startproc
	endbr64
	push	r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	xor	esi, esi
	push	r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	mov	r14, rdi
	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
	sub	rsp, 104
	.cfi_def_cfa_offset 160
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR 88[rsp], rax
	xor	eax, eax
	mov	QWORD PTR 56[rsp], 0
	call	checkstring@PLT
	mov	esi, 1
	mov	rdi, r14
	mov	r12, rax
	call	js_toregexp@PLT
	lea	rcx, 64[rsp]
	xor	r8d, r8d
	mov	rdx, r12
	mov	esi, DWORD PTR 4[rax]
	mov	rdi, r14
	mov	QWORD PTR [rsp], rax
	mov	QWORD PTR 32[rsp], rcx
	call	js_doregexec@PLT
	test	rax, rax
	jne	.L53
	mov	rax, QWORD PTR [rsp]
	lea	rbp, 56[rsp]
	mov	QWORD PTR 8[rax], 0
	.p2align 4,,10
	.p2align 3
.L4:
	mov	rax, QWORD PTR 72[rsp]
	mov	esi, 2
	mov	rdi, r14
	mov	r13, QWORD PTR [rax]
	mov	rbx, QWORD PTR 8[rax]
	sub	rbx, r13
	mov	QWORD PTR 8[rsp], rbx
	mov	DWORD PTR 20[rsp], ebx
	call	js_iscallable@PLT
	mov	esi, 2
	mov	rdi, r14
	test	rax, rax
	je	.L5
	call	js_copy@PLT
	mov	rdi, r14
	call	js_pushundefined@PLT
	mov	rax, QWORD PTR 72[rsp]
	mov	rsi, QWORD PTR [rax]
	test	rsi, rsi
	je	.L33
	xor	ebx, ebx
	.p2align 4,,10
	.p2align 3
.L7:
	mov	rdx, QWORD PTR 8[rax]
	mov	rdi, r14
	sub	rdx, rsi
	call	js_pushlstring@PLT
	mov	edx, ebx
	add	rbx, 1
	mov	rax, rbx
	sal	rax, 4
	add	rax, QWORD PTR 72[rsp]
	mov	rsi, QWORD PTR [rax]
	test	rsi, rsi
	jne	.L7
	lea	ebx, 3[rdx]
.L6:
	mov	rsi, r13
	mov	rdi, r14
	sub	rsi, r12
	call	js_pushnumber@PLT
	xor	esi, esi
	mov	rdi, r14
	call	js_copy@PLT
	mov	esi, ebx
	mov	rdi, r14
	call	js_call@PLT
	mov	esi, -1
	mov	rdi, r14
	call	js_tostring@PLT
	mov	rcx, r13
	mov	rdx, r12
	mov	rsi, rbp
	mov	rbx, rax
	mov	rdi, r14
	call	js_putm@PLT
	mov	rsi, rbp
	mov	rdi, r14
	mov	rdx, rbx
	call	js_puts@PLT
	mov	esi, 1
	mov	rdi, r14
	call	js_pop@PLT
.L8:
	mov	rax, QWORD PTR [rsp]
	mov	eax, DWORD PTR [rax]
	test	DWORD PTR JS_REGEXP_G[rip], eax
	je	.L27
	mov	rax, QWORD PTR 72[rsp]
	mov	r12, QWORD PTR 8[rax]
	mov	eax, DWORD PTR 8[rsp]
	test	eax, eax
	jne	.L28
	movsx	edx, BYTE PTR [r12]
	test	dl, dl
	je	.L29
	mov	rsi, rbp
	mov	rdi, r14
	add	r12, 1
	call	js_putc@PLT
.L28:
	mov	rax, QWORD PTR [rsp]
	mov	rcx, QWORD PTR 32[rsp]
	mov	rdx, r12
	mov	rdi, r14
	mov	r8d, DWORD PTR REG_NOTBOL[rip]
	mov	esi, DWORD PTR 4[rax]
	call	js_doregexec@PLT
	test	rax, rax
	je	.L4
.L27:
	movsx	rax, DWORD PTR 20[rsp]
	add	r13, rax
.L29:
	mov	rdx, r13
	mov	rsi, rbp
	mov	rdi, r14
	call	js_puts@PLT
	xor	edx, edx
	mov	rdi, r14
	mov	rsi, rbp
	call	js_putc@PLT
	mov	rdi, r14
	call	js_try@PLT
	test	rax, rax
	jne	.L54
.L30:
	mov	rax, QWORD PTR 56[rsp]
	lea	rsi, .LC0[rip]
	test	rax, rax
	je	.L31
	mov	rsi, QWORD PTR [rax]
.L31:
	mov	rdi, r14
	call	js_pushstring@PLT
	mov	rdi, r14
	call	js_endtry@PLT
	mov	rsi, QWORD PTR 56[rsp]
	mov	rdi, r14
	call	js_free@PLT
.L1:
	mov	rax, QWORD PTR 88[rsp]
	xor	rax, QWORD PTR fs:40
	jne	.L55
	add	rsp, 104
	.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
.L5:
	.cfi_restore_state
	call	js_tostring@PLT
	mov	rcx, r13
	mov	rdx, r12
	mov	rsi, rbp
	mov	rdi, r14
	mov	rbx, rax
	call	js_putm@PLT
	movsx	rdx, DWORD PTR 20[rsp]
	movzx	eax, BYTE PTR [rbx]
	lea	rcx, 0[r13+rdx]
	mov	QWORD PTR 24[rsp], rcx
	test	al, al
	je	.L8
	mov	QWORD PTR 40[rsp], r12
	mov	r15, rbx
	jmp	.L9
	.p2align 4,,10
	.p2align 3
.L57:
	movsx	eax, BYTE PTR 1[r15]
	cmp	al, 39
	je	.L11
	jg	.L12
	cmp	al, 36
	je	.L13
	cmp	al, 38
	jne	.L56
	mov	rcx, QWORD PTR 24[rsp]
	mov	rdx, r13
	mov	rsi, rbp
	mov	rdi, r14
	add	r15, 2
	call	js_putm@PLT
	.p2align 4,,10
	.p2align 3
.L25:
	movzx	eax, BYTE PTR [r15]
	test	al, al
	je	.L8
.L9:
	lea	r12, 1[r15]
	cmp	al, 36
	je	.L57
	movsx	edx, al
	mov	rsi, rbp
	mov	rdi, r14
	mov	r15, r12
	call	js_putc@PLT
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L56:
	test	al, al
	jne	.L16
.L15:
	mov	edx, 36
	mov	rsi, rbp
	mov	rdi, r14
	mov	r15, r12
	call	js_putc@PLT
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L12:
	cmp	al, 57
	jg	.L17
	cmp	al, 47
	jg	.L58
.L16:
	mov	edx, 36
	mov	rsi, rbp
	mov	rdi, r14
	add	r15, 2
	call	js_putc@PLT
	movsx	edx, BYTE PTR -1[r15]
	mov	rsi, rbp
	mov	rdi, r14
	call	js_putc@PLT
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L17:
	cmp	al, 96
	jne	.L16
	mov	rdx, QWORD PTR 40[rsp]
	mov	rcx, r13
	mov	rsi, rbp
	mov	rdi, r14
	add	r15, 2
	call	js_putm@PLT
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L58:
	lea	ebx, -48[rax]
	movsx	eax, BYTE PTR 2[r15]
	lea	edx, -48[rax]
	cmp	dl, 9
	ja	.L21
	lea	edx, [rbx+rbx*4]
	lea	r12, 2[r15]
	lea	ebx, -48[rax+rdx*2]
.L21:
	lea	r15, 1[r12]
	test	ebx, ebx
	je	.L22
	cmp	DWORD PTR 64[rsp], ebx
	jg	.L59
	mov	edx, 36
	mov	rsi, rbp
	mov	rdi, r14
	call	js_putc@PLT
	cmp	ebx, 10
	jle	.L24
	mov	ecx, ebx
	mov	eax, 3435973837
	mov	rsi, rbp
	mov	rdi, r14
	imul	rcx, rax
	shr	rcx, 35
	lea	edx, 48[rcx]
	mov	r12, rcx
	movzx	edx, dl
	call	js_putc@PLT
	lea	eax, [r12+r12*4]
	mov	rsi, rbp
	mov	rdi, r14
	add	eax, eax
	sub	ebx, eax
	lea	edx, 48[rbx]
	movzx	edx, dl
	call	js_putc@PLT
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L11:
	mov	rdx, QWORD PTR 24[rsp]
	mov	rsi, rbp
	mov	rdi, r14
	add	r15, 2
	call	js_puts@PLT
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L13:
	lea	r12, 2[r15]
	jmp	.L15
	.p2align 4,,10
	.p2align 3
.L22:
	mov	edx, 36
	mov	rsi, rbp
	mov	rdi, r14
	call	js_putc@PLT
.L24:
	lea	edx, 48[rbx]
	mov	rsi, rbp
	mov	rdi, r14
	movsx	edx, dl
	call	js_putc@PLT
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L59:
	mov	rax, QWORD PTR 72[rsp]
	movsx	rbx, ebx
	mov	rsi, rbp
	mov	rdi, r14
	sal	rbx, 4
	add	rax, rbx
	mov	rcx, QWORD PTR 8[rax]
	mov	rdx, QWORD PTR [rax]
	call	js_putm@PLT
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L33:
	mov	ebx, 2
	jmp	.L6
.L54:
	mov	rsi, QWORD PTR 56[rsp]
	mov	rdi, r14
	call	js_free@PLT
	mov	rdi, r14
	call	js_throw@PLT
	jmp	.L30
.L53:
	xor	esi, esi
	mov	rdi, r14
	call	js_copy@PLT
	jmp	.L1
.L55:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE0:
	.size	Sp_replace_regexp, .-Sp_replace_regexp
	.comm	REG_NOTBOL,4,4
	.comm	JS_REGEXP_G,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_jsstring.c_Sp_replace_regexp.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"\000"
	.section	.rodata.cst4,"aM",%progbits,4
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	Sp_replace_regexp, %function
Sp_replace_regexp:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	mov	r4, #0
	ldr	r3, .L57
	sub	sp, sp, #36
	mov	r1, r4
	ldr	r3, [r3]
	str	r3, [sp, #28]
	mov	r3,#0
	mov	r5, r0
	str	r4, [sp, #16]
	bl	checkstring
	mov	r1, #1
	mov	r7, r0
	mov	r0, r5
	bl	js_toregexp
	mov	r2, r7
	ldr	r1, [r0, #4]
	mov	r10, r0
	str	r4, [sp]
	mov	r0, r5
	add	r3, sp, #20
	bl	js_doregexec
	cmp	r0, #0
	bne	.L52
	ldr	fp, .L57+4
	str	r0, [r10, #8]
.L4:
	ldr	r3, [sp, #24]
	mov	r1, #2
	ldm	r3, {r4, r9}
	mov	r0, r5
	bl	js_iscallable
	cmp	r0, #0
	mov	r1, #2
	mov	r0, r5
	beq	.L5
	bl	js_copy
	mov	r0, r5
	bl	js_pushundefined
	ldr	r3, [sp, #24]
	ldr	r1, [r3]
	cmp	r1, #0
	beq	.L35
	mov	r6, #0
.L7:
	ldr	r2, [r3, #4]
	mov	r0, r5
	sub	r2, r2, r1
	bl	js_pushlstring
	ldr	r3, [sp, #24]
	mov	r2, r6
	add	r6, r6, #1
	ldr	r1, [r3, r6, lsl #3]
	add	r3, r3, r6, lsl #3
	cmp	r1, #0
	bne	.L7
	add	r6, r2, #3
.L6:
	sub	r1, r4, r7
	mov	r0, r5
	bl	js_pushnumber
	mov	r1, #0
	mov	r0, r5
	bl	js_copy
	mov	r1, r6
	mov	r0, r5
	bl	js_call
	mvn	r1, #0
	mov	r0, r5
	bl	js_tostring
	mov	r6, r0
	mov	r2, r7
	mov	r3, r4
	add	r1, sp, #16
	mov	r0, r5
	bl	js_putm
	add	r1, sp, #16
	mov	r2, r6
	mov	r0, r5
	bl	js_puts
	mov	r1, #1
	mov	r0, r5
	bl	js_pop
.L8:
	ldr	r2, [r10]
	ldr	r3, [fp]
	tst	r2, r3
	beq	.L32
	ldr	r3, [sp, #24]
	cmp	r9, r4
	ldr	r7, [r3, #4]
	bne	.L31
	ldrb	r2, [r7]	@ zero_extendqisi2
	cmp	r2, #0
	beq	.L32
	mov	r0, r5
	add	r1, sp, #16
	add	r7, r7, #1
	bl	js_putc
.L31:
	ldr	r3, .L57+8
	ldr	r1, [r10, #4]
	ldr	r3, [r3]
	mov	r2, r7
	str	r3, [sp]
	mov	r0, r5
	add	r3, sp, #20
	bl	js_doregexec
	cmp	r0, #0
	beq	.L4
.L32:
	mov	r2, r9
	add	r1, sp, #16
	mov	r0, r5
	bl	js_puts
	mov	r2, #0
	add	r1, sp, #16
	mov	r0, r5
	bl	js_putc
	mov	r0, r5
	bl	js_try
	cmp	r0, #0
	bne	.L53
.L30:
	ldr	r3, [sp, #16]
	mov	r0, r5
	cmp	r3, #0
	ldrne	r1, [r3]
	ldreq	r1, .L57+12
	bl	js_pushstring
	mov	r0, r5
	bl	js_endtry
	mov	r0, r5
	ldr	r1, [sp, #16]
	bl	js_free
.L1:
	ldr	r3, .L57
	ldr	r2, [r3]
	ldr	r3, [sp, #28]
	eors	r2, r3, r2
	mov	r3, #0
	bne	.L54
	add	sp, sp, #36
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L5:
	bl	js_tostring
	mov	r3, r4
	mov	r6, r0
	mov	r2, r7
	mov	r0, r5
	add	r1, sp, #16
	bl	js_putm
.L50:
	ldrb	r2, [r6]	@ zero_extendqisi2
	cmp	r2, #0
	beq	.L8
	cmp	r2, #36
	add	r3, r6, #1
	bne	.L10
	ldrb	r2, [r6, #1]	@ zero_extendqisi2
	cmp	r2, #57
	bhi	.L11
	cmp	r2, #35
	bls	.L55
	sub	r1, r2, #36
	cmp	r1, #21
	ldrls	pc, [pc, r1, asl #2]
	b	.L14
.L16:
	.word	.L19
	.word	.L14
	.word	.L18
	.word	.L17
	.word	.L14
	.word	.L14
	.word	.L14
	.word	.L14
	.word	.L14
	.word	.L14
	.word	.L14
	.word	.L14
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
	.word	.L15
.L15:
	ldrb	r1, [r6, #2]	@ zero_extendqisi2
	sub	r8, r2, #48
	sub	r2, r1, #48
	cmp	r2, #9
	addls	r2, r8, r8, lsl #2
	addls	r2, r1, r2, lsl #1
	subls	r8, r2, #48
	addls	r3, r6, #2
	cmp	r8, #0
	add	r6, r3, #1
	beq	.L23
	ldr	r3, [sp, #20]
	cmp	r3, r8
	bgt	.L56
	mov	r2, #36
	mov	r0, r5
	add	r1, sp, #16
	bl	js_putc
	cmp	r8, #10
	ble	.L25
	ldr	r3, .L57+16
	add	r1, sp, #16
	umull	r2, r3, r8, r3
	lsr	r3, r3, #3
	add	r2, r3, #48
	mov	r0, r5
	and	r2, r2, #255
	str	r3, [sp, #12]
	bl	js_putc
	ldr	r3, [sp, #12]
	mov	r0, r5
	add	r2, r3, r3, lsl #2
	sub	r2, r8, r2, lsl #1
	add	r2, r2, #48
	and	r2, r2, #255
	add	r1, sp, #16
	bl	js_putc
	b	.L50
.L17:
	mov	r2, r9
	mov	r0, r5
	add	r1, sp, #16
	add	r6, r6, #2
	bl	js_puts
	b	.L50
.L18:
	mov	r3, r9
	mov	r2, r4
	mov	r0, r5
	add	r1, sp, #16
	add	r6, r6, #2
	bl	js_putm
	b	.L50
.L19:
	add	r3, r6, #2
.L13:
	mov	r2, #36
	mov	r0, r5
	add	r1, sp, #16
	mov	r6, r3
	bl	js_putc
	b	.L50
.L55:
	cmp	r2, #0
	beq	.L13
.L14:
	add	r1, sp, #16
	mov	r2, #36
	mov	r0, r5
	bl	js_putc
	ldrb	r2, [r6, #1]	@ zero_extendqisi2
	mov	r0, r5
	add	r1, sp, #16
	add	r6, r6, #2
	bl	js_putc
	b	.L50
.L11:
	cmp	r2, #96
	bne	.L14
	mov	r3, r4
	mov	r2, r7
	mov	r0, r5
	add	r1, sp, #16
	add	r6, r6, #2
	bl	js_putm
	b	.L50
.L10:
	mov	r0, r5
	add	r1, sp, #16
	mov	r6, r3
	bl	js_putc
	b	.L50
.L23:
	mov	r2, #36
	mov	r0, r5
	add	r1, sp, #16
	bl	js_putc
.L25:
	add	r2, r8, #48
	mov	r0, r5
	and	r2, r2, #255
	add	r1, sp, #16
	bl	js_putc
	b	.L50
.L56:
	ldr	r2, [sp, #24]
	mov	r0, r5
	add	r3, r2, r8, lsl #3
	ldr	r3, [r3, #4]
	ldr	r2, [r2, r8, lsl #3]
	add	r1, sp, #16
	bl	js_putm
	b	.L50
.L35:
	mov	r6, #2
	b	.L6
.L53:
	mov	r0, r5
	ldr	r1, [sp, #16]
	bl	js_free
	mov	r0, r5
	bl	js_throw
	b	.L30
.L52:
	mov	r1, r4
	mov	r0, r5
	bl	js_copy
	b	.L1
.L54:
	bl	__stack_chk_fail
.L58:
	.align	2
.L57:
	.word	.LC1
	.word	JS_REGEXP_G
	.word	REG_NOTBOL
	.word	.LC0
	.word	-858993459
	.size	Sp_replace_regexp, .-Sp_replace_regexp
	.comm	REG_NOTBOL,4,4
	.comm	JS_REGEXP_G,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
