	.file	"extr_fts5_vocab.c_fts5VocabBestIndexMethod.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.type	fts5VocabBestIndexMethod, @function
fts5VocabBestIndexMethod:
.LFB0:
	.cfi_startproc
	endbr64
	push	r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	push	r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	push	rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	push	rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	mov	rbx, rsi
	sub	rsp, 8
	.cfi_def_cfa_offset 48
	call	UNUSED_PARAM@PLT
	mov	r9d, DWORD PTR [rbx]
	test	r9d, r9d
	jle	.L2
	mov	r13, QWORD PTR SQLITE_INDEX_CONSTRAINT_EQ[rip]
	mov	r12, QWORD PTR SQLITE_INDEX_CONSTRAINT_LE[rip]
	xor	eax, eax
	mov	edi, -1
	mov	rbp, QWORD PTR SQLITE_INDEX_CONSTRAINT_LT[rip]
	mov	r11, QWORD PTR SQLITE_INDEX_CONSTRAINT_GE[rip]
	mov	r8d, -1
	mov	esi, -1
	mov	r10, QWORD PTR SQLITE_INDEX_CONSTRAINT_GT[rip]
	mov	rdx, QWORD PTR 40[rbx]
	.p2align 4,,10
	.p2align 3
.L8:
	cmp	QWORD PTR [rdx], 0
	je	.L3
	cmp	QWORD PTR 8[rdx], 0
	jne	.L3
	mov	rcx, QWORD PTR 16[rdx]
	cmp	rcx, r13
	cmove	esi, eax
	cmp	rcx, r12
	cmove	edi, eax
	cmp	rcx, rbp
	cmove	edi, eax
	cmp	rcx, r11
	cmove	r8d, eax
	cmp	rcx, r10
	cmove	r8d, eax
.L3:
	add	eax, 1
	add	rdx, 24
	cmp	eax, r9d
	jne	.L8
	cmp	esi, -1
	je	.L11
	mov	rdx, QWORD PTR 32[rbx]
	movsx	rsi, esi
	mov	eax, DWORD PTR FTS5_VOCAB_TERM_EQ[rip]
	mov	DWORD PTR [rdx+rsi*4], 1
	mov	DWORD PTR 4[rbx], 100
.L10:
	cmp	DWORD PTR 8[rbx], 1
	je	.L22
.L13:
	mov	DWORD PTR 16[rbx], eax
	mov	eax, DWORD PTR SQLITE_OK[rip]
	add	rsp, 8
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	pop	rbx
	.cfi_def_cfa_offset 32
	pop	rbp
	.cfi_def_cfa_offset 24
	pop	r12
	.cfi_def_cfa_offset 16
	pop	r13
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L22:
	.cfi_restore_state
	mov	rdx, QWORD PTR 24[rbx]
	cmp	QWORD PTR [rdx], 0
	jne	.L13
	cmp	QWORD PTR 8[rdx], 0
	jne	.L13
	mov	DWORD PTR 12[rbx], 1
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L11:
	mov	DWORD PTR 4[rbx], 1000000
	cmp	r8d, -1
	je	.L14
	mov	rdx, QWORD PTR 32[rbx]
	movsx	r8, r8d
	mov	eax, DWORD PTR FTS5_VOCAB_TERM_GE[rip]
	mov	DWORD PTR [rdx+r8*4], 1
	mov	edx, 1
	mov	DWORD PTR 4[rbx], 500000
.L12:
	cmp	edi, -1
	je	.L10
	mov	rcx, QWORD PTR 32[rbx]
	add	edx, 1
	movsx	rdi, edi
	or	eax, DWORD PTR FTS5_VOCAB_TERM_LE[rip]
	mov	DWORD PTR [rcx+rdi*4], edx
	mov	ecx, DWORD PTR 4[rbx]
	mov	edx, ecx
	shr	edx, 31
	add	edx, ecx
	sar	edx
	mov	DWORD PTR 4[rbx], edx
	jmp	.L10
	.p2align 4,,10
	.p2align 3
.L2:
	mov	DWORD PTR 4[rbx], 1000000
	xor	eax, eax
	jmp	.L10
.L14:
	xor	edx, edx
	xor	eax, eax
	jmp	.L12
	.cfi_endproc
.LFE0:
	.size	fts5VocabBestIndexMethod, .-fts5VocabBestIndexMethod
	.comm	SQLITE_OK,4,4
	.comm	SQLITE_INDEX_CONSTRAINT_LT,8,8
	.comm	SQLITE_INDEX_CONSTRAINT_LE,8,8
	.comm	SQLITE_INDEX_CONSTRAINT_GT,8,8
	.comm	SQLITE_INDEX_CONSTRAINT_GE,8,8
	.comm	SQLITE_INDEX_CONSTRAINT_EQ,8,8
	.comm	FTS5_VOCAB_TERM_LE,4,4
	.comm	FTS5_VOCAB_TERM_GE,4,4
	.comm	FTS5_VOCAB_TERM_EQ,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_fts5_vocab.c_fts5VocabBestIndexMethod.c"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	fts5VocabBestIndexMethod, %function
fts5VocabBestIndexMethod:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, lr}
	mov	r5, r1
	bl	UNUSED_PARAM
	ldr	r4, [r5]
	cmp	r4, #0
	ble	.L2
	mvn	ip, #0
	mov	r3, #0
	mov	lr, ip
	mov	r1, ip
	ldr	r8, .L26
	ldr	r7, .L26+4
	ldr	r6, .L26+8
	ldr	r2, .L26+12
	ldr	r0, .L26+16
	ldr	r10, [r8]
	ldr	r9, [r7]
	ldr	r8, [r6]
	ldr	r7, [r0]
	ldr	r6, [r2]
	ldr	r2, [r5, #28]
.L8:
	ldr	r0, [r2]
	cmp	r0, #0
	beq	.L3
	ldr	r0, [r2, #4]
	cmp	r0, #0
	bne	.L3
	ldr	r0, [r2, #8]
	cmp	r0, r9
	moveq	ip, r3
	cmp	r0, r7
	moveq	lr, r3
	cmp	r0, r8
	moveq	ip, r3
	cmp	r0, r6
	moveq	lr, r3
	cmp	r0, r10
	moveq	r1, r3
.L3:
	add	r3, r3, #1
	cmp	r3, r4
	add	r2, r2, #12
	bne	.L8
	cmn	r1, #1
	beq	.L11
	mov	ip, #1
	mov	r2, #100
	ldr	r3, .L26+20
	ldr	r0, [r5, #24]
	ldr	r3, [r3]
	str	ip, [r0, r1, lsl #2]
	str	r2, [r5, #4]
.L10:
	ldr	r2, [r5, #8]
	cmp	r2, #1
	beq	.L25
.L13:
	ldr	r2, .L26+24
	str	r3, [r5, #16]
	ldr	r0, [r2]
	pop	{r4, r5, r6, r7, r8, r9, r10, pc}
.L25:
	ldr	r1, [r5, #20]
	ldr	r0, [r1]
	cmp	r0, #0
	bne	.L13
	ldr	r1, [r1, #4]
	cmp	r1, #0
	streq	r2, [r5, #12]
	b	.L13
.L11:
	cmn	lr, #1
	movne	r2, #1
	moveq	r2, #0
	ldr	r3, .L26+28
	ldrne	r0, [r5, #24]
	str	r3, [r5, #4]
	ldrne	r1, .L26+32
	ldrne	r3, .L26+36
	moveq	r3, r2
	ldrne	r3, [r3]
	strne	r2, [r0, lr, lsl #2]
	strne	r1, [r5, #4]
	cmn	ip, #1
	beq	.L10
	ldr	r0, .L26+40
	ldr	r1, [r5, #4]
	ldr	r0, [r0]
	add	r1, r1, r1, lsr #31
	orr	r3, r3, r0
	ldr	r0, [r5, #24]
	add	r2, r2, #1
	asr	r1, r1, #1
	str	r2, [r0, ip, lsl #2]
	str	r1, [r5, #4]
	b	.L10
.L2:
	ldr	r2, .L26+28
	mov	r3, #0
	str	r2, [r5, #4]
	b	.L10
.L27:
	.align	2
.L26:
	.word	SQLITE_INDEX_CONSTRAINT_EQ
	.word	SQLITE_INDEX_CONSTRAINT_LE
	.word	SQLITE_INDEX_CONSTRAINT_LT
	.word	SQLITE_INDEX_CONSTRAINT_GT
	.word	SQLITE_INDEX_CONSTRAINT_GE
	.word	FTS5_VOCAB_TERM_EQ
	.word	SQLITE_OK
	.word	1000000
	.word	500000
	.word	FTS5_VOCAB_TERM_GE
	.word	FTS5_VOCAB_TERM_LE
	.size	fts5VocabBestIndexMethod, .-fts5VocabBestIndexMethod
	.comm	SQLITE_OK,4,4
	.comm	SQLITE_INDEX_CONSTRAINT_LT,4,4
	.comm	SQLITE_INDEX_CONSTRAINT_LE,4,4
	.comm	SQLITE_INDEX_CONSTRAINT_GT,4,4
	.comm	SQLITE_INDEX_CONSTRAINT_GE,4,4
	.comm	SQLITE_INDEX_CONSTRAINT_EQ,4,4
	.comm	FTS5_VOCAB_TERM_LE,4,4
	.comm	FTS5_VOCAB_TERM_GE,4,4
	.comm	FTS5_VOCAB_TERM_EQ,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
