	.file	"extr_vacuum.c_vacuum_set_xid_limits.c"
	.intel_syntax noprefix
	.text
	.section	.rodata.str1.8,"aMS",@progbits,1
	.align 8
.LC0:
	.string	"oldest xmin is far in the past"
	.align 8
.LC1:
	.string	"Close open transactions soon to avoid wraparound problems.\nYou might also need to commit or roll back old prepared transactions, or drop stale replication slots."
	.align 8
.LC2:
	.string	"oldest multixact is far in the past"
	.align 8
.LC3:
	.string	"Close open transactions with multixacts soon to avoid wraparound problems."
	.text
	.p2align 4
	.globl	vacuum_set_xid_limits
	.type	vacuum_set_xid_limits, @function
vacuum_set_xid_limits:
.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
	mov	r14d, ecx
	push	r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	mov	r13d, edx
	push	r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	mov	r12d, r8d
	push	rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	mov	ebp, esi
	push	rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	mov	rbx, r9
	sub	rsp, 40
	.cfi_def_cfa_offset 96
	mov	esi, DWORD PTR PROCARRAY_FLAGS_VACUUM[rip]
	mov	rax, QWORD PTR 96[rsp]
	mov	r15, QWORD PTR 104[rsp]
	mov	DWORD PTR 24[rsp], edi
	mov	QWORD PTR [rsp], rax
	mov	rax, QWORD PTR 112[rsp]
	mov	QWORD PTR 8[rsp], rax
	mov	rax, QWORD PTR 120[rsp]
	mov	QWORD PTR 16[rsp], rax
	call	GetOldestXmin@PLT
	mov	r10d, DWORD PTR 24[rsp]
	mov	edi, eax
	mov	esi, r10d
	call	TransactionIdLimitedForOldSnapshots@PLT
	mov	QWORD PTR [rbx], rax
	mov	rdi, rax
	call	TransactionIdIsNormal@PLT
	mov	edi, eax
	call	Assert@PLT
	mov	eax, DWORD PTR autovacuum_freeze_max_age[rip]
	test	ebp, ebp
	cmovs	ebp, DWORD PTR vacuum_freeze_min_age[rip]
	mov	esi, eax
	mov	edi, ebp
	shr	esi, 31
	add	esi, eax
	sar	esi
	call	Min@PLT
	mov	edi, eax
	mov	ebp, eax
	not	edi
	shr	edi, 31
	call	Assert@PLT
	movsx	rdx, ebp
	mov	rbp, QWORD PTR [rbx]
	sub	rbp, rdx
	mov	rdi, rbp
	call	TransactionIdIsNormal@PLT
	test	eax, eax
	cmove	rbp, QWORD PTR FirstNormalTransactionId[rip]
	xor	eax, eax
	call	ReadNewTransactionId@PLT
	movsx	rcx, DWORD PTR autovacuum_freeze_max_age[rip]
	sub	rax, rcx
	mov	rdi, rax
	mov	QWORD PTR 24[rsp], rax
	call	TransactionIdIsNormal@PLT
	mov	rsi, QWORD PTR 24[rsp]
	mov	rdi, rbp
	test	eax, eax
	cmove	rsi, QWORD PTR FirstNormalTransactionId[rip]
	call	TransactionIdPrecedes@PLT
	test	rax, rax
	jne	.L23
.L5:
	mov	rax, QWORD PTR [rsp]
	mov	QWORD PTR [rax], rbp
	xor	eax, eax
	call	MultiXactMemberFreezeThreshold@PLT
	test	r14d, r14d
	cmovs	r14d, DWORD PTR vacuum_multixact_freeze_min_age[rip]
	mov	esi, eax
	mov	ebx, eax
	shr	esi, 31
	mov	edi, r14d
	add	esi, eax
	sar	esi
	call	Min@PLT
	movsx	rbp, eax
	mov	edi, ebp
	not	edi
	shr	edi, 31
	call	Assert@PLT
	xor	eax, eax
	call	GetOldestMultiXactId@PLT
	mov	QWORD PTR [rsp], rax
	sub	rax, rbp
	cmp	QWORD PTR FirstMultiXactId[rip], rax
	mov	rbp, rax
	cmovge	rbp, QWORD PTR FirstMultiXactId[rip]
	xor	eax, eax
	call	ReadNextMultiXactId@PLT
	movsx	rdx, ebx
	sub	rax, rdx
	cmp	QWORD PTR FirstMultiXactId[rip], rax
	mov	rdi, rbp
	cmovge	rax, QWORD PTR FirstMultiXactId[rip]
	mov	rsi, rax
	mov	r14, rax
	call	MultiXactIdPrecedes@PLT
	test	rax, rax
	jne	.L24
	mov	rax, QWORD PTR 8[rsp]
	mov	QWORD PTR [rax], rbp
	test	r15, r15
	je	.L8
.L25:
	mov	r14, QWORD PTR 16[rsp]
	xor	edi, edi
	test	r14, r14
	setne	dil
	call	Assert@PLT
	pxor	xmm0, xmm0
	test	r13d, r13d
	cmovs	r13d, DWORD PTR vacuum_freeze_table_age[rip]
	cvtsi2sd	xmm0, DWORD PTR autovacuum_freeze_max_age[rip]
	mulsd	xmm0, QWORD PTR .LC4[rip]
	mov	edi, r13d
	cvttsd2si	esi, xmm0
	call	Min@PLT
	movsx	rbp, eax
	mov	edi, ebp
	not	edi
	shr	edi, 31
	call	Assert@PLT
	xor	eax, eax
	call	ReadNewTransactionId@PLT
	sub	rax, rbp
	mov	rdi, rax
	mov	rbp, rax
	call	TransactionIdIsNormal@PLT
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, ebx
	mulsd	xmm0, QWORD PTR .LC4[rip]
	test	eax, eax
	cmove	rbp, QWORD PTR FirstNormalTransactionId[rip]
	test	r12d, r12d
	cmovs	r12d, DWORD PTR vacuum_multixact_freeze_table_age[rip]
	mov	QWORD PTR [r15], rbp
	mov	edi, r12d
	cvttsd2si	esi, xmm0
	call	Min@PLT
	movsx	rbx, eax
	mov	edi, ebx
	not	edi
	shr	edi, 31
	call	Assert@PLT
	xor	eax, eax
	call	ReadNextMultiXactId@PLT
	sub	rax, rbx
	cmp	QWORD PTR FirstMultiXactId[rip], rax
	cmovge	rax, QWORD PTR FirstMultiXactId[rip]
	mov	QWORD PTR [r14], rax
	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
.L23:
	.cfi_restore_state
	lea	rdi, .LC0[rip]
	call	errmsg@PLT
	lea	rdi, .LC1[rip]
	call	errhint@PLT
	mov	edi, DWORD PTR WARNING[rip]
	mov	esi, eax
	call	ereport@PLT
	mov	rbp, QWORD PTR [rbx]
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L24:
	lea	rdi, .LC2[rip]
	call	errmsg@PLT
	lea	rdi, .LC3[rip]
	call	errhint@PLT
	mov	edi, DWORD PTR WARNING[rip]
	mov	esi, eax
	call	ereport@PLT
	mov	rbp, QWORD PTR [rsp]
	mov	rsi, r14
	mov	rdi, rbp
	call	MultiXactIdPrecedes@PLT
	test	rax, rax
	mov	rax, QWORD PTR 8[rsp]
	cmove	rbp, r14
	mov	QWORD PTR [rax], rbp
	test	r15, r15
	jne	.L25
.L8:
	xor	edi, edi
	cmp	QWORD PTR 16[rsp], 0
	sete	dil
	add	rsp, 40
	.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
	jmp	Assert@PLT
	.cfi_endproc
.LFE0:
	.size	vacuum_set_xid_limits, .-vacuum_set_xid_limits
	.comm	vacuum_multixact_freeze_table_age,4,4
	.comm	vacuum_multixact_freeze_min_age,4,4
	.comm	vacuum_freeze_table_age,4,4
	.comm	vacuum_freeze_min_age,4,4
	.comm	autovacuum_freeze_max_age,4,4
	.comm	WARNING,4,4
	.comm	PROCARRAY_FLAGS_VACUUM,4,4
	.comm	FirstNormalTransactionId,8,8
	.comm	FirstMultiXactId,8,8
	.section	.rodata.cst8,"aM",@progbits,8
	.align 8
.LC4:
	.long	1717986918
	.long	1072588390
	.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_vacuum.c_vacuum_set_xid_limits.c"
	.text
	.section	.rodata.str1.4,"aMS",%progbits,1
	.align	2
.LC0:
	.ascii	"oldest xmin is far in the past\000"
	.align	2
.LC1:
	.ascii	"Close open transactions soon to avoid wraparound pr"
	.ascii	"oblems.\012You might also need to commit or roll ba"
	.ascii	"ck old prepared transactions, or drop stale replica"
	.ascii	"tion slots.\000"
	.align	2
.LC2:
	.ascii	"oldest multixact is far in the past\000"
	.align	2
.LC3:
	.ascii	"Close open transactions with multixacts soon to avo"
	.ascii	"id wraparound problems.\000"
	.global	__aeabi_i2d
	.global	__aeabi_dmul
	.global	__aeabi_d2iz
	.text
	.align	2
	.global	vacuum_set_xid_limits
	.syntax unified
	.arm
	.fpu softvfp
	.type	vacuum_set_xid_limits, %function
vacuum_set_xid_limits:
	@ args = 24, pretend = 0, frame = 16
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	mov	r7, r0
	mov	r5, r3
	ldr	r3, .L25
	sub	sp, sp, #20
	mov	r8, r1
	ldr	r1, [r3]
	ldr	r3, [sp, #68]
	mov	r6, r2
	str	r3, [sp, #4]
	ldr	r3, [sp, #72]
	ldr	r4, [sp, #60]
	str	r3, [sp, #12]
	ldr	r3, [sp, #76]
	ldr	r10, [sp, #56]
	str	r3, [sp, #8]
	ldr	fp, [sp, #64]
	bl	GetOldestXmin
	mov	r1, r7
	bl	TransactionIdLimitedForOldSnapshots
	str	r0, [r4]
	bl	TransactionIdIsNormal
	bl	Assert
	ldr	r7, .L25+4
	cmp	r8, #0
	ldrlt	r3, .L25+8
	ldr	r1, [r7]
	ldrlt	r8, [r3]
	add	r1, r1, r1, lsr #31
	asr	r1, r1, #1
	mov	r0, r8
	bl	Min
	mov	r8, r0
	mvn	r0, r0
	lsr	r0, r0, #31
	bl	Assert
	ldr	r0, [r4]
	sub	r8, r0, r8
	mov	r0, r8
	bl	TransactionIdIsNormal
	cmp	r0, #0
	ldreq	r3, .L25+12
	ldreq	r8, [r3]
	bl	ReadNewTransactionId
	ldr	r1, [r7]
	sub	r9, r0, r1
	mov	r0, r9
	bl	TransactionIdIsNormal
	cmp	r0, #0
	ldreq	r2, .L25+12
	mov	r0, r8
	ldreq	r9, [r2]
	mov	r1, r9
	bl	TransactionIdPrecedes
	cmp	r0, #0
	bne	.L23
.L5:
	str	r8, [fp]
	bl	MultiXactMemberFreezeThreshold
	cmp	r5, #0
	ldrlt	r3, .L25+16
	add	r1, r0, r0, lsr #31
	ldrlt	r5, [r3]
	asr	r1, r1, #1
	mov	r4, r0
	mov	r0, r5
	bl	Min
	mov	r8, r0
	mvn	r0, r0
	lsr	r0, r0, #31
	bl	Assert
	bl	GetOldestMultiXactId
	ldr	fp, .L25+20
	sub	r3, r0, r8
	mov	r5, r0
	ldr	r0, [fp]
	cmp	r3, r0
	movge	r8, r3
	movlt	r8, r0
	bl	ReadNextMultiXactId
	ldr	r2, [fp]
	sub	r0, r0, r4
	cmp	r0, r2
	movge	r9, r0
	movlt	r9, r2
	mov	r0, r8
	mov	r1, r9
	bl	MultiXactIdPrecedes
	cmp	r0, #0
	bne	.L24
.L7:
	ldr	r3, [sp, #4]
	cmp	r3, #0
	ldr	r3, [sp, #12]
	str	r8, [r3]
	ldr	r3, [sp, #8]
	beq	.L8
	subs	r0, r3, #0
	movne	r0, #1
	bl	Assert
	cmp	r6, #0
	ldrlt	r3, .L25+24
	ldr	r0, [r7]
	ldrlt	r6, [r3]
	bl	__aeabi_i2d
	ldr	r3, .L25+28
	ldr	r2, .L25+32
	bl	__aeabi_dmul
	bl	__aeabi_d2iz
	mov	r1, r0
	mov	r0, r6
	bl	Min
	mov	r5, r0
	mvn	r0, r0
	lsr	r0, r0, #31
	bl	Assert
	bl	ReadNewTransactionId
	sub	r5, r0, r5
	mov	r0, r5
	bl	TransactionIdIsNormal
	cmp	r0, #0
	ldreq	r3, .L25+12
	mov	r0, r4
	ldreq	r5, [r3]
	ldr	r3, [sp, #4]
	cmp	r10, #0
	str	r5, [r3]
	ldrlt	r3, .L25+36
	ldrlt	r10, [r3]
	bl	__aeabi_i2d
	ldr	r2, .L25+32
	ldr	r3, .L25+28
	bl	__aeabi_dmul
	bl	__aeabi_d2iz
	mov	r1, r0
	mov	r0, r10
	bl	Min
	mov	r4, r0
	mvn	r0, r0
	lsr	r0, r0, #31
	bl	Assert
	bl	ReadNextMultiXactId
	ldr	r3, [fp]
	sub	r0, r0, r4
	cmp	r3, r0
	movlt	r3, r0
	ldr	r2, [sp, #8]
	str	r3, [r2]
	add	sp, sp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L23:
	ldr	r3, .L25+40
	ldr	r0, .L25+44
	ldr	r8, [r3]
	bl	errmsg
	ldr	r0, .L25+48
	bl	errhint
	mov	r1, r0
	mov	r0, r8
	bl	ereport
	ldr	r8, [r4]
	b	.L5
.L24:
	ldr	r3, .L25+40
	ldr	r0, .L25+52
	ldr	r8, [r3]
	bl	errmsg
	ldr	r0, .L25+56
	bl	errhint
	mov	r1, r0
	mov	r0, r8
	bl	ereport
	mov	r1, r9
	mov	r0, r5
	bl	MultiXactIdPrecedes
	cmp	r0, #0
	movne	r8, r5
	moveq	r8, r9
	b	.L7
.L8:
	clz	r0, r3
	lsr	r0, r0, #5
	add	sp, sp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	b	Assert
.L26:
	.align	2
.L25:
	.word	PROCARRAY_FLAGS_VACUUM
	.word	autovacuum_freeze_max_age
	.word	vacuum_freeze_min_age
	.word	FirstNormalTransactionId
	.word	vacuum_multixact_freeze_min_age
	.word	FirstMultiXactId
	.word	vacuum_freeze_table_age
	.word	1072588390
	.word	1717986918
	.word	vacuum_multixact_freeze_table_age
	.word	WARNING
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.size	vacuum_set_xid_limits, .-vacuum_set_xid_limits
	.comm	vacuum_multixact_freeze_table_age,4,4
	.comm	vacuum_multixact_freeze_min_age,4,4
	.comm	vacuum_freeze_table_age,4,4
	.comm	vacuum_freeze_min_age,4,4
	.comm	autovacuum_freeze_max_age,4,4
	.comm	WARNING,4,4
	.comm	PROCARRAY_FLAGS_VACUUM,4,4
	.comm	FirstNormalTransactionId,4,4
	.comm	FirstMultiXactId,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
