	.file	"53732.c"
	.intel_syntax noprefix
	.text
	.type	sys_memfd_create, @function
sys_memfd_create:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	DWORD PTR -12[rbp], esi
	mov	edx, DWORD PTR -12[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	mov	edi, 319
	mov	eax, 0
	call	syscall@PLT
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	sys_memfd_create, .-sys_memfd_create
	.section	.rodata
	.align 8
.LC0:
	.string	"memfd_create(\"%s\", %u) failed: %m\n"
.LC1:
	.string	"ftruncate(%llu) failed: %m\n"
	.text
	.type	mfd_assert_new, @function
mfd_assert_new:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	edx, DWORD PTR -36[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	sys_memfd_create
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	jns	.L4
	mov	edx, DWORD PTR -36[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L4:
	mov	rdx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	ftruncate@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L5
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L5:
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	mfd_assert_new, .-mfd_assert_new
	.section	.rodata
	.align 8
.LC2:
	.string	"memfd_create(\"%s\", %u) succeeded, but failure expected\n"
	.text
	.type	mfd_fail_new, @function
mfd_fail_new:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	sys_memfd_create
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	js	.L9
	mov	edx, DWORD PTR -28[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	call	abort@PLT
.L9:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	mfd_fail_new, .-mfd_fail_new
	.section	.rodata
.LC3:
	.string	"GET_SEALS(%d) failed: %m\n"
	.text
	.type	mfd_assert_get_seals, @function
mfd_assert_get_seals:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 1034
	mov	edi, eax
	mov	eax, 0
	call	fcntl@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L11
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L11:
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	mfd_assert_get_seals, .-mfd_assert_get_seals
	.section	.rodata
.LC4:
	.string	"%u != %u = GET_SEALS(%d)\n"
	.text
	.type	mfd_assert_has_seals, @function
mfd_assert_has_seals:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	mfd_assert_get_seals
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -24[rbp]
	je	.L15
	mov	ecx, DWORD PTR -20[rbp]
	mov	edx, DWORD PTR -4[rbp]
	mov	eax, DWORD PTR -24[rbp]
	mov	esi, eax
	lea	rdi, .LC4[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L15:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	mfd_assert_has_seals, .-mfd_assert_has_seals
	.section	.rodata
	.align 8
.LC5:
	.string	"ADD_SEALS(%d, %u -> %u) failed: %m\n"
	.text
	.type	mfd_assert_add_seals, @function
mfd_assert_add_seals:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	mfd_assert_get_seals
	mov	DWORD PTR -8[rbp], eax
	mov	edx, DWORD PTR -24[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 1033
	mov	edi, eax
	mov	eax, 0
	call	fcntl@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L18
	mov	ecx, DWORD PTR -24[rbp]
	mov	edx, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC5[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L18:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	mfd_assert_add_seals, .-mfd_assert_add_seals
	.section	.rodata
	.align 8
.LC6:
	.string	"ADD_SEALS(%d, %u -> %u) didn't fail as expected\n"
	.text
	.type	mfd_fail_add_seals, @function
mfd_fail_add_seals:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	DWORD PTR -24[rbp], esi
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 1034
	mov	edi, eax
	mov	eax, 0
	call	fcntl@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L20
	mov	DWORD PTR -8[rbp], 0
	jmp	.L21
.L20:
	mov	eax, DWORD PTR -4[rbp]
	mov	DWORD PTR -8[rbp], eax
.L21:
	mov	edx, DWORD PTR -24[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 1033
	mov	edi, eax
	mov	eax, 0
	call	fcntl@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	js	.L23
	mov	ecx, DWORD PTR -24[rbp]
	mov	edx, DWORD PTR -8[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC6[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L23:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	mfd_fail_add_seals, .-mfd_fail_add_seals
	.section	.rodata
.LC7:
	.string	"fstat(%d) failed: %m\n"
	.align 8
.LC8:
	.string	"wrong file size %lld, but expected %lld\n"
	.text
	.type	mfd_assert_size, @function
mfd_assert_size:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 192
	mov	DWORD PTR -180[rbp], edi
	mov	QWORD PTR -192[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdx, -160[rbp]
	mov	eax, DWORD PTR -180[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	fstat@PLT
	mov	DWORD PTR -164[rbp], eax
	cmp	DWORD PTR -164[rbp], 0
	jns	.L25
	mov	eax, DWORD PTR -180[rbp]
	mov	esi, eax
	lea	rdi, .LC7[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L25:
	mov	rdx, QWORD PTR -112[rbp]
	mov	rax, QWORD PTR -192[rbp]
	cmp	rdx, rax
	je	.L28
	mov	rdx, QWORD PTR -192[rbp]
	mov	rax, QWORD PTR -112[rbp]
	mov	rsi, rax
	lea	rdi, .LC8[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L28:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	mfd_assert_size, .-mfd_assert_size
	.section	.rodata
.LC9:
	.string	"dup(%d) failed: %m\n"
	.text
	.type	mfd_assert_dup, @function
mfd_assert_dup:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	dup@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L30
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC9[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L30:
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	mfd_assert_dup, .-mfd_assert_dup
	.section	.rodata
.LC10:
	.string	"mmap() failed: %m\n"
	.text
	.type	mfd_assert_mmap_shared, @function
mfd_assert_mmap_shared:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 1
	mov	edx, 3
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], -1
	jne	.L33
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L33:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	mfd_assert_mmap_shared, .-mfd_assert_mmap_shared
	.type	mfd_assert_mmap_private, @function
mfd_assert_mmap_private:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 2
	mov	edx, 1
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], -1
	jne	.L36
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L36:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	mfd_assert_mmap_private, .-mfd_assert_mmap_private
	.section	.rodata
.LC11:
	.string	"/proc/self/fd/%d"
.LC12:
	.string	"open(%s) failed: %m\n"
	.text
	.type	mfd_assert_open, @function
mfd_assert_open:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 560
	mov	DWORD PTR -548[rbp], edi
	mov	DWORD PTR -552[rbp], esi
	mov	DWORD PTR -556[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -548[rbp]
	lea	rax, -528[rbp]
	lea	rsi, .LC11[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	mov	edx, DWORD PTR -556[rbp]
	mov	ecx, DWORD PTR -552[rbp]
	lea	rax, -528[rbp]
	mov	esi, ecx
	mov	rdi, rax
	mov	eax, 0
	call	open@PLT
	mov	DWORD PTR -532[rbp], eax
	cmp	DWORD PTR -532[rbp], 0
	jns	.L39
	lea	rax, -528[rbp]
	mov	rsi, rax
	lea	rdi, .LC12[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L39:
	mov	eax, DWORD PTR -532[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L41
	call	__stack_chk_fail@PLT
.L41:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	mfd_assert_open, .-mfd_assert_open
	.section	.rodata
	.align 8
.LC13:
	.string	"open(%s) didn't fail as expected\n"
	.text
	.type	mfd_fail_open, @function
mfd_fail_open:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 560
	mov	DWORD PTR -548[rbp], edi
	mov	DWORD PTR -552[rbp], esi
	mov	DWORD PTR -556[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	edx, DWORD PTR -548[rbp]
	lea	rax, -528[rbp]
	lea	rsi, .LC11[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	mov	edx, DWORD PTR -556[rbp]
	mov	ecx, DWORD PTR -552[rbp]
	lea	rax, -528[rbp]
	mov	esi, ecx
	mov	rdi, rax
	mov	eax, 0
	call	open@PLT
	mov	DWORD PTR -532[rbp], eax
	cmp	DWORD PTR -532[rbp], 0
	js	.L45
	lea	rax, -528[rbp]
	mov	rsi, rax
	lea	rdi, .LC13[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L45:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L44
	call	__stack_chk_fail@PLT
.L44:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	mfd_fail_open, .-mfd_fail_open
	.section	.rodata
.LC14:
	.string	"read() failed: %m\n"
	.text
	.type	mfd_assert_read, @function
mfd_assert_read:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	DWORD PTR -52[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rcx, -32[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	edx, 16
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	mov	QWORD PTR -48[rbp], rax
	cmp	QWORD PTR -48[rbp], 16
	je	.L47
	lea	rdi, .LC14[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L47:
	mov	eax, DWORD PTR -52[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 2
	mov	edx, 1
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -40[rbp], rax
	cmp	QWORD PTR -40[rbp], -1
	jne	.L48
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L48:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 8192
	mov	rdi, rax
	call	munmap@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 2
	mov	edx, 3
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -40[rbp], rax
	cmp	QWORD PTR -40[rbp], -1
	jne	.L49
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L49:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 8192
	mov	rdi, rax
	call	munmap@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L50
	call	__stack_chk_fail@PLT
.L50:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	mfd_assert_read, .-mfd_assert_read
	.section	.rodata
.LC15:
	.string	""
	.string	""
	.string	""
	.string	""
	.string	""
.LC16:
	.string	"write() failed: %m\n"
.LC17:
	.string	"mprotect() failed: %m\n"
	.align 8
.LC18:
	.string	"fallocate(PUNCH_HOLE) failed: %m\n"
	.text
	.type	mfd_assert_write, @function
mfd_assert_write:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	DWORD PTR -36[rbp], edi
	mov	eax, DWORD PTR -36[rbp]
	mov	edx, 4
	lea	rsi, .LC15[rip]
	mov	edi, eax
	call	write@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 4
	je	.L52
	lea	rdi, .LC16[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L52:
	mov	eax, DWORD PTR -36[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 1
	mov	edx, 3
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], -1
	jne	.L53
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L53:
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 8192
	mov	rdi, rax
	call	munmap@PLT
	mov	eax, DWORD PTR -36[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 1
	mov	edx, 2
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], -1
	jne	.L54
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L54:
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 8192
	mov	rdi, rax
	call	munmap@PLT
	mov	eax, DWORD PTR -36[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 1
	mov	edx, 1
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], -1
	jne	.L55
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L55:
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 3
	mov	esi, 8192
	mov	rdi, rax
	call	mprotect@PLT
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	jns	.L56
	lea	rdi, .LC17[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L56:
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 8192
	mov	rdi, rax
	call	munmap@PLT
	mov	eax, DWORD PTR -36[rbp]
	mov	ecx, 8192
	mov	edx, 0
	mov	esi, 3
	mov	edi, eax
	mov	eax, 0
	call	fallocate@PLT
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	jns	.L58
	lea	rdi, .LC18[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L58:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	mfd_assert_write, .-mfd_assert_write
	.section	.rodata
.LC19:
	.string	"data"
	.align 8
.LC20:
	.string	"expected EPERM on write(), but got %d: %m\n"
	.align 8
.LC21:
	.string	"mmap() didn't fail as expected"
	.align 8
.LC22:
	.string	"mmap()+mprotect() didn't fail as expected"
	.align 8
.LC23:
	.string	"fallocate(PUNCH_HOLE) didn't fail as expected"
	.text
	.type	mfd_fail_write, @function
mfd_fail_write:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	DWORD PTR -36[rbp], edi
	mov	eax, DWORD PTR -36[rbp]
	mov	edx, 4
	lea	rsi, .LC19[rip]
	mov	edi, eax
	call	write@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], -1
	je	.L60
	mov	rax, QWORD PTR -16[rbp]
	mov	esi, eax
	lea	rdi, .LC20[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L60:
	mov	eax, DWORD PTR -36[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 1
	mov	edx, 3
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], -1
	je	.L61
	lea	rdi, .LC21[rip]
	call	puts@PLT
	call	abort@PLT
.L61:
	mov	eax, DWORD PTR -36[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 1
	mov	edx, 2
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], -1
	je	.L62
	lea	rdi, .LC21[rip]
	call	puts@PLT
	call	abort@PLT
.L62:
	mov	eax, DWORD PTR -36[rbp]
	mov	r9d, 0
	mov	r8d, eax
	mov	ecx, 1
	mov	edx, 1
	mov	esi, 8192
	mov	edi, 0
	call	mmap@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], -1
	je	.L63
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, 3
	mov	esi, 8192
	mov	rdi, rax
	call	mprotect@PLT
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	js	.L63
	lea	rdi, .LC22[rip]
	call	puts@PLT
	call	abort@PLT
.L63:
	mov	eax, DWORD PTR -36[rbp]
	mov	ecx, 8192
	mov	edx, 0
	mov	esi, 3
	mov	edi, eax
	mov	eax, 0
	call	fallocate@PLT
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], 0
	js	.L65
	lea	rdi, .LC23[rip]
	call	puts@PLT
	call	abort@PLT
.L65:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	mfd_fail_write, .-mfd_fail_write
	.section	.rodata
.LC24:
	.string	"ftruncate(SHRINK) failed: %m\n"
	.text
	.type	mfd_assert_shrink, @function
mfd_assert_shrink:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 4096
	mov	edi, eax
	call	ftruncate@PLT
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 0
	jns	.L67
	lea	rdi, .LC24[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L67:
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 4096
	mov	edi, eax
	call	mfd_assert_size
	mov	eax, DWORD PTR -20[rbp]
	mov	edx, 384
	mov	esi, 578
	mov	edi, eax
	call	mfd_assert_open
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_size
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	mfd_assert_shrink, .-mfd_assert_shrink
	.section	.rodata
	.align 8
.LC25:
	.string	"ftruncate(SHRINK) didn't fail as expected"
	.text
	.type	mfd_fail_shrink, @function
mfd_fail_shrink:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 4096
	mov	edi, eax
	call	ftruncate@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	js	.L69
	lea	rdi, .LC25[rip]
	call	puts@PLT
	call	abort@PLT
.L69:
	mov	eax, DWORD PTR -20[rbp]
	mov	edx, 384
	mov	esi, 578
	mov	edi, eax
	call	mfd_fail_open
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	mfd_fail_shrink, .-mfd_fail_shrink
	.section	.rodata
.LC26:
	.string	"ftruncate(GROW) failed: %m\n"
.LC27:
	.string	"fallocate(ALLOC) failed: %m\n"
	.text
	.type	mfd_assert_grow, @function
mfd_assert_grow:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 16384
	mov	edi, eax
	call	ftruncate@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L71
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L71:
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 16384
	mov	edi, eax
	call	mfd_assert_size
	mov	eax, DWORD PTR -20[rbp]
	mov	ecx, 32768
	mov	edx, 0
	mov	esi, 0
	mov	edi, eax
	mov	eax, 0
	call	fallocate@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L72
	lea	rdi, .LC27[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L72:
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 32768
	mov	edi, eax
	call	mfd_assert_size
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	mfd_assert_grow, .-mfd_assert_grow
	.section	.rodata
	.align 8
.LC28:
	.string	"ftruncate(GROW) didn't fail as expected"
	.align 8
.LC29:
	.string	"fallocate(ALLOC) didn't fail as expected"
	.text
	.type	mfd_fail_grow, @function
mfd_fail_grow:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 16384
	mov	edi, eax
	call	ftruncate@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	js	.L74
	lea	rdi, .LC28[rip]
	call	puts@PLT
	call	abort@PLT
.L74:
	mov	eax, DWORD PTR -20[rbp]
	mov	ecx, 32768
	mov	edx, 0
	mov	esi, 0
	mov	edi, eax
	mov	eax, 0
	call	fallocate@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	js	.L76
	lea	rdi, .LC29[rip]
	call	puts@PLT
	call	abort@PLT
.L76:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	mfd_fail_grow, .-mfd_fail_grow
	.section	.rodata
.LC30:
	.string	"pwrite() failed: %m\n"
	.text
	.type	mfd_assert_grow_write, @function
mfd_assert_grow_write:
.LFB26:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	ecx, 0
	mov	edx, 65536
	lea	rsi, buf.1[rip]
	mov	edi, eax
	call	pwrite@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 65536
	je	.L78
	lea	rdi, .LC30[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L78:
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, 65536
	mov	edi, eax
	call	mfd_assert_size
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	mfd_assert_grow_write, .-mfd_assert_grow_write
	.section	.rodata
	.align 8
.LC31:
	.string	"pwrite() didn't fail as expected"
	.text
	.type	mfd_fail_grow_write, @function
mfd_fail_grow_write:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	ecx, 0
	mov	edx, 65536
	lea	rsi, buf.0[rip]
	mov	edi, eax
	call	pwrite@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 65536
	jne	.L81
	lea	rdi, .LC31[rip]
	call	puts@PLT
	call	abort@PLT
.L81:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	mfd_fail_grow_write, .-mfd_fail_grow_write
	.type	idle_thread_fn, @function
idle_thread_fn:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 176
	mov	QWORD PTR -168[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, -144[rbp]
	mov	rdi, rax
	call	sigemptyset@PLT
	lea	rax, -144[rbp]
	mov	esi, 15
	mov	rdi, rax
	call	sigaddset@PLT
	lea	rdx, -148[rbp]
	lea	rax, -144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	sigwait@PLT
	mov	eax, 0
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L84
	call	__stack_chk_fail@PLT
.L84:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	idle_thread_fn, .-idle_thread_fn
	.section	.rodata
	.align 8
.LC32:
	.string	"malloc(STACK_SIZE) failed: %m\n"
.LC33:
	.string	"clone() failed: %m\n"
	.text
	.type	spawn_idle_thread, @function
spawn_idle_thread:
.LFB29:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	edi, 65535
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L86
	lea	rdi, .LC32[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L86:
	mov	eax, DWORD PTR -20[rbp]
	or	eax, 17
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 65535
	mov	ecx, 0
	mov	rsi, rax
	lea	rdi, idle_thread_fn[rip]
	mov	eax, 0
	call	clone@PLT
	mov	DWORD PTR -12[rbp], eax
	cmp	DWORD PTR -12[rbp], 0
	jns	.L87
	lea	rdi, .LC33[rip]
	mov	eax, 0
	call	printf@PLT
	call	abort@PLT
.L87:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	spawn_idle_thread, .-spawn_idle_thread
	.type	join_idle_thread, @function
join_idle_thread:
.LFB30:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -4[rbp], edi
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 15
	mov	edi, eax
	call	kill@PLT
	mov	eax, DWORD PTR -4[rbp]
	mov	edx, 0
	mov	esi, 0
	mov	edi, eax
	mov	eax, 0
	call	waitpid@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	join_idle_thread, .-join_idle_thread
	.section	.rodata
.LC34:
	.string	""
	.text
	.type	test_create, @function
test_create:
.LFB31:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 2080
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	esi, 0
	mov	edi, 0
	call	mfd_fail_new
	lea	rax, -2064[rbp]
	mov	edx, 2048
	mov	esi, 255
	mov	rdi, rax
	call	memset@PLT
	lea	rax, -2064[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	mfd_fail_new
	lea	rax, -2064[rbp]
	mov	edx, 2048
	mov	esi, 255
	mov	rdi, rax
	call	memset@PLT
	mov	BYTE PTR -17[rbp], 0
	lea	rax, -2064[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	mfd_fail_new
	mov	edx, 0
	mov	esi, 0
	lea	rdi, .LC34[rip]
	call	mfd_assert_new
	mov	DWORD PTR -2068[rbp], eax
	mov	eax, DWORD PTR -2068[rbp]
	mov	edi, eax
	call	close@PLT
	mov	esi, 256
	lea	rdi, .LC34[rip]
	call	mfd_fail_new
	mov	esi, -2
	lea	rdi, .LC34[rip]
	call	mfd_fail_new
	mov	esi, -3
	lea	rdi, .LC34[rip]
	call	mfd_fail_new
	mov	esi, -1
	lea	rdi, .LC34[rip]
	call	mfd_fail_new
	mov	esi, -2147483648
	lea	rdi, .LC34[rip]
	call	mfd_fail_new
	mov	edx, 1
	mov	esi, 0
	lea	rdi, .LC34[rip]
	call	mfd_assert_new
	mov	DWORD PTR -2068[rbp], eax
	mov	eax, DWORD PTR -2068[rbp]
	mov	edi, eax
	call	close@PLT
	mov	edx, 2
	mov	esi, 0
	lea	rdi, .LC34[rip]
	call	mfd_assert_new
	mov	DWORD PTR -2068[rbp], eax
	mov	eax, DWORD PTR -2068[rbp]
	mov	edi, eax
	call	close@PLT
	mov	edx, 3
	mov	esi, 0
	lea	rdi, .LC34[rip]
	call	mfd_assert_new
	mov	DWORD PTR -2068[rbp], eax
	mov	eax, DWORD PTR -2068[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L91
	call	__stack_chk_fail@PLT
.L91:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	test_create, .-test_create
	.section	.rodata
.LC35:
	.string	"kern_memfd_basic"
	.text
	.type	test_basic, @function
test_basic:
.LFB32:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC35[rip]
	call	mfd_assert_new
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 5
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 15
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 4
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	mov	edx, 1
	mov	esi, 8192
	lea	rdi, .LC35[rip]
	call	mfd_assert_new
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 14
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	test_basic, .-test_basic
	.section	.rodata
.LC36:
	.string	"kern_memfd_seal_write"
	.text
	.type	test_seal_write, @function
test_seal_write:
.LFB33:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC36[rip]
	call	mfd_assert_new
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_read
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_fail_write
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_shrink
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_grow
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_fail_grow_write
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	test_seal_write, .-test_seal_write
	.section	.rodata
.LC37:
	.string	"kern_memfd_seal_shrink"
	.text
	.type	test_seal_shrink, @function
test_seal_shrink:
.LFB34:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC37[rip]
	call	mfd_assert_new
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 2
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 2
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_read
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_write
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_fail_shrink
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_grow
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_grow_write
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	test_seal_shrink, .-test_seal_shrink
	.section	.rodata
.LC38:
	.string	"kern_memfd_seal_grow"
	.text
	.type	test_seal_grow, @function
test_seal_grow:
.LFB35:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC38[rip]
	call	mfd_assert_new
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 4
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 4
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_read
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_write
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_shrink
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_fail_grow
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_fail_grow_write
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	test_seal_grow, .-test_seal_grow
	.section	.rodata
.LC39:
	.string	"kern_memfd_seal_resize"
	.text
	.type	test_seal_resize, @function
test_seal_resize:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC39[rip]
	call	mfd_assert_new
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 6
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 6
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_read
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_assert_write
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_fail_shrink
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_fail_grow
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	mfd_fail_grow_write
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	test_seal_resize, .-test_seal_resize
	.section	.rodata
.LC40:
	.string	"kern_memfd_share_dup"
	.text
	.type	test_share_dup, @function
test_share_dup:
.LFB37:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC40[rip]
	call	mfd_assert_new
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	mfd_assert_dup
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 2
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 11
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 11
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 4
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 4
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 4
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	test_share_dup, .-test_share_dup
	.section	.rodata
.LC41:
	.string	"kern_memfd_share_mmap"
	.text
	.type	test_share_mmap, @function
test_share_mmap:
.LFB38:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC41[rip]
	call	mfd_assert_new
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -12[rbp]
	mov	edi, eax
	call	mfd_assert_mmap_shared
	mov	QWORD PTR -8[rbp], rax
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, 2
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, 2
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 8192
	mov	rdi, rax
	call	munmap@PLT
	mov	eax, DWORD PTR -12[rbp]
	mov	edi, eax
	call	mfd_assert_mmap_private
	mov	QWORD PTR -8[rbp], rax
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	rax, QWORD PTR -8[rbp]
	mov	esi, 8192
	mov	rdi, rax
	call	munmap@PLT
	mov	eax, DWORD PTR -12[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	test_share_mmap, .-test_share_mmap
	.section	.rodata
.LC42:
	.string	"kern_memfd_share_open"
	.text
	.type	test_share_open, @function
test_share_open:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC42[rip]
	call	mfd_assert_new
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	edx, 0
	mov	esi, 2
	mov	edi, eax
	call	mfd_assert_open
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 2
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	close@PLT
	mov	eax, DWORD PTR -4[rbp]
	mov	edx, 0
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_open
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 10
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	mov	eax, DWORD PTR -8[rbp]
	mov	edx, 0
	mov	esi, 2
	mov	edi, eax
	call	mfd_assert_open
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 11
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 11
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	test_share_open, .-test_share_open
	.section	.rodata
.LC43:
	.string	"kern_memfd_share_fork"
	.text
	.type	test_share_fork, @function
test_share_fork:
.LFB40:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	edx, 3
	mov	esi, 8192
	lea	rdi, .LC43[rip]
	call	mfd_assert_new
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 0
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	edi, 0
	call	spawn_idle_thread
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_assert_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	join_idle_thread
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 8
	mov	edi, eax
	call	mfd_fail_add_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, 1
	mov	edi, eax
	call	mfd_assert_has_seals
	mov	eax, DWORD PTR -8[rbp]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	test_share_fork, .-test_share_fork
	.section	.rodata
.LC44:
	.string	"memfd: CREATE"
.LC45:
	.string	"memfd: BASIC"
.LC46:
	.string	"memfd: SEAL-WRITE"
.LC47:
	.string	"memfd: SEAL-SHRINK"
.LC48:
	.string	"memfd: SEAL-GROW"
.LC49:
	.string	"memfd: SEAL-RESIZE"
.LC50:
	.string	"memfd: SHARE-DUP"
.LC51:
	.string	"memfd: SHARE-MMAP"
.LC52:
	.string	"memfd: SHARE-OPEN"
.LC53:
	.string	"memfd: SHARE-FORK"
	.align 8
.LC54:
	.string	"memfd: SHARE-DUP (shared file-table)"
	.align 8
.LC55:
	.string	"memfd: SHARE-MMAP (shared file-table)"
	.align 8
.LC56:
	.string	"memfd: SHARE-OPEN (shared file-table)"
	.align 8
.LC57:
	.string	"memfd: SHARE-FORK (shared file-table)"
.LC58:
	.string	"memfd: DONE"
	.text
	.globl	main
	.type	main, @function
main:
.LFB41:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	lea	rdi, .LC44[rip]
	call	puts@PLT
	call	test_create
	lea	rdi, .LC45[rip]
	call	puts@PLT
	call	test_basic
	lea	rdi, .LC46[rip]
	call	puts@PLT
	call	test_seal_write
	lea	rdi, .LC47[rip]
	call	puts@PLT
	call	test_seal_shrink
	lea	rdi, .LC48[rip]
	call	puts@PLT
	call	test_seal_grow
	lea	rdi, .LC49[rip]
	call	puts@PLT
	call	test_seal_resize
	lea	rdi, .LC50[rip]
	call	puts@PLT
	call	test_share_dup
	lea	rdi, .LC51[rip]
	call	puts@PLT
	call	test_share_mmap
	lea	rdi, .LC52[rip]
	call	puts@PLT
	call	test_share_open
	lea	rdi, .LC53[rip]
	call	puts@PLT
	call	test_share_fork
	mov	edi, 1792
	call	spawn_idle_thread
	mov	DWORD PTR -4[rbp], eax
	lea	rdi, .LC54[rip]
	call	puts@PLT
	call	test_share_dup
	lea	rdi, .LC55[rip]
	call	puts@PLT
	call	test_share_mmap
	lea	rdi, .LC56[rip]
	call	puts@PLT
	call	test_share_open
	lea	rdi, .LC57[rip]
	call	puts@PLT
	call	test_share_fork
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	join_idle_thread
	lea	rdi, .LC58[rip]
	call	puts@PLT
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	main, .-main
	.local	buf.1
	.comm	buf.1,65536,32
	.local	buf.0
	.comm	buf.0,65536,32
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.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, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"53732.c"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	sys_memfd_create, %function
sys_memfd_create:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-8]
	ldr	r0, .L3
	bl	syscall
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L4:
	.align	2
.L3:
	.word	385
	.size	sys_memfd_create, .-sys_memfd_create
	.section	.rodata
	.align	2
.LC0:
	.ascii	"memfd_create(\"%s\", %u) failed: %m\012\000"
	.align	2
.LC1:
	.ascii	"ftruncate(%llu) failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_new, %function
mfd_assert_new:
	@ args = 4, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r1, [fp, #4]
	ldr	r0, [fp, #-16]
	bl	sys_memfd_create
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bge	.L6
	ldr	r2, [fp, #4]
	ldr	r1, [fp, #-16]
	ldr	r0, .L9
	bl	printf
	bl	abort
.L6:
	ldr	r3, [fp, #-28]
	mov	r1, r3
	ldr	r0, [fp, #-12]
	bl	ftruncate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L7
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	ldr	r0, .L9+4
	bl	printf
	bl	abort
.L7:
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L10:
	.align	2
.L9:
	.word	.LC0
	.word	.LC1
	.size	mfd_assert_new, .-mfd_assert_new
	.section	.rodata
	.align	2
.LC2:
	.ascii	"memfd_create(\"%s\", %u) succeeded, but failure exp"
	.ascii	"ected\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_fail_new, %function
mfd_fail_new:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	sys_memfd_create
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L13
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-16]
	ldr	r0, .L14
	bl	printf
	ldr	r0, [fp, #-8]
	bl	close
	bl	abort
.L13:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L15:
	.align	2
.L14:
	.word	.LC2
	.size	mfd_fail_new, .-mfd_fail_new
	.section	.rodata
	.align	2
.LC3:
	.ascii	"GET_SEALS(%d) failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_get_seals, %function
mfd_assert_get_seals:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r1, .L19
	ldr	r0, [fp, #-16]
	bl	fcntl
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L17
	ldr	r1, [fp, #-16]
	ldr	r0, .L19+4
	bl	printf
	bl	abort
.L17:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L20:
	.align	2
.L19:
	.word	1034
	.word	.LC3
	.size	mfd_assert_get_seals, .-mfd_assert_get_seals
	.section	.rodata
	.align	2
.LC4:
	.ascii	"%u != %u = GET_SEALS(%d)\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_has_seals, %function
mfd_assert_has_seals:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	mfd_assert_get_seals
	str	r0, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	beq	.L23
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-20]
	ldr	r0, .L24
	bl	printf
	bl	abort
.L23:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L25:
	.align	2
.L24:
	.word	.LC4
	.size	mfd_assert_has_seals, .-mfd_assert_has_seals
	.section	.rodata
	.align	2
.LC5:
	.ascii	"ADD_SEALS(%d, %u -> %u) failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_add_seals, %function
mfd_assert_add_seals:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	mfd_assert_get_seals
	str	r0, [fp, #-12]
	ldr	r2, [fp, #-20]
	ldr	r1, .L29
	ldr	r0, [fp, #-16]
	bl	fcntl
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L28
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, .L29+4
	bl	printf
	bl	abort
.L28:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L30:
	.align	2
.L29:
	.word	1033
	.word	.LC5
	.size	mfd_assert_add_seals, .-mfd_assert_add_seals
	.section	.rodata
	.align	2
.LC6:
	.ascii	"ADD_SEALS(%d, %u -> %u) didn't fail as expected\012"
	.ascii	"\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_fail_add_seals, %function
mfd_fail_add_seals:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r1, .L36
	ldr	r0, [fp, #-16]
	bl	fcntl
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L32
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L33
.L32:
	ldr	r3, [fp, #-8]
	str	r3, [fp, #-12]
.L33:
	ldr	r2, [fp, #-20]
	ldr	r1, .L36+4
	ldr	r0, [fp, #-16]
	bl	fcntl
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L35
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, .L36+8
	bl	printf
	bl	abort
.L35:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L37:
	.align	2
.L36:
	.word	1034
	.word	1033
	.word	.LC6
	.size	mfd_fail_add_seals, .-mfd_fail_add_seals
	.section	.rodata
	.align	2
.LC7:
	.ascii	"fstat(%d) failed: %m\012\000"
	.align	2
.LC8:
	.ascii	"wrong file size %lld, but expected %lld\012\000"
	.align	2
.LC9:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_size, %function
mfd_assert_size:
	@ args = 0, pretend = 0, frame = 112
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #120
	str	r0, [fp, #-112]
	str	r1, [fp, #-116]
	ldr	r3, .L43
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #100
	mov	r1, r3
	ldr	r0, [fp, #-112]
	bl	fstat
	str	r0, [fp, #-104]
	ldr	r3, [fp, #-104]
	cmp	r3, #0
	bge	.L39
	ldr	r1, [fp, #-112]
	ldr	r0, .L43+4
	bl	printf
	bl	abort
.L39:
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-116]
	cmp	r2, r3
	beq	.L42
	ldr	r3, [fp, #-56]
	mov	r0, r3
	asr	r1, r0, #31
	ldr	r3, [fp, #-116]
	mov	r2, r3
	mov	r3, #0
	stm	sp, {r2-r3}
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L43+8
	bl	printf
	bl	abort
.L42:
	nop
	ldr	r3, .L43
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L41
	bl	__stack_chk_fail
.L41:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L44:
	.align	2
.L43:
	.word	.LC9
	.word	.LC7
	.word	.LC8
	.size	mfd_assert_size, .-mfd_assert_size
	.section	.rodata
	.align	2
.LC10:
	.ascii	"dup(%d) failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_dup, %function
mfd_assert_dup:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	dup
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L46
	ldr	r1, [fp, #-16]
	ldr	r0, .L48
	bl	printf
	bl	abort
.L46:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L49:
	.align	2
.L48:
	.word	.LC10
	.size	mfd_assert_dup, .-mfd_assert_dup
	.section	.rodata
	.align	2
.LC11:
	.ascii	"mmap() failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_mmap_shared, %function
mfd_assert_mmap_shared:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-16]
	str	r3, [sp]
	mov	r3, #1
	mov	r2, #3
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	bne	.L51
	ldr	r0, .L53
	bl	printf
	bl	abort
.L51:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L54:
	.align	2
.L53:
	.word	.LC11
	.size	mfd_assert_mmap_shared, .-mfd_assert_mmap_shared
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_mmap_private, %function
mfd_assert_mmap_private:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-16]
	str	r3, [sp]
	mov	r3, #2
	mov	r2, #1
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	bne	.L56
	ldr	r0, .L58
	bl	printf
	bl	abort
.L56:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L59:
	.align	2
.L58:
	.word	.LC11
	.size	mfd_assert_mmap_private, .-mfd_assert_mmap_private
	.section	.rodata
	.align	2
.LC12:
	.ascii	"/proc/self/fd/%d\000"
	.align	2
.LC13:
	.ascii	"open(%s) failed: %m\012\000"
	.align	2
.LC14:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_open, %function
mfd_assert_open:
	@ args = 0, pretend = 0, frame = 536
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #536
	str	r0, [fp, #-528]
	str	r1, [fp, #-532]
	str	r2, [fp, #-536]
	ldr	r3, .L64
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #520
	ldr	r2, [fp, #-528]
	ldr	r1, .L64+4
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #520
	ldr	r2, [fp, #-536]
	ldr	r1, [fp, #-532]
	mov	r0, r3
	bl	open
	str	r0, [fp, #-524]
	ldr	r3, [fp, #-524]
	cmp	r3, #0
	bge	.L61
	sub	r3, fp, #520
	mov	r1, r3
	ldr	r0, .L64+8
	bl	printf
	bl	abort
.L61:
	ldr	r3, [fp, #-524]
	ldr	r2, .L64
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L63
	bl	__stack_chk_fail
.L63:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L65:
	.align	2
.L64:
	.word	.LC14
	.word	.LC12
	.word	.LC13
	.size	mfd_assert_open, .-mfd_assert_open
	.section	.rodata
	.align	2
.LC15:
	.ascii	"open(%s) didn't fail as expected\012\000"
	.align	2
.LC16:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_fail_open, %function
mfd_fail_open:
	@ args = 0, pretend = 0, frame = 536
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #536
	str	r0, [fp, #-528]
	str	r1, [fp, #-532]
	str	r2, [fp, #-536]
	ldr	r3, .L70
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #520
	ldr	r2, [fp, #-528]
	ldr	r1, .L70+4
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #520
	ldr	r2, [fp, #-536]
	ldr	r1, [fp, #-532]
	mov	r0, r3
	bl	open
	str	r0, [fp, #-524]
	ldr	r3, [fp, #-524]
	cmp	r3, #0
	blt	.L69
	sub	r3, fp, #520
	mov	r1, r3
	ldr	r0, .L70+8
	bl	printf
	bl	abort
.L69:
	nop
	ldr	r3, .L70
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L68
	bl	__stack_chk_fail
.L68:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L71:
	.align	2
.L70:
	.word	.LC16
	.word	.LC12
	.word	.LC15
	.size	mfd_fail_open, .-mfd_fail_open
	.section	.rodata
	.align	2
.LC17:
	.ascii	"read() failed: %m\012\000"
	.align	2
.LC18:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_read, %function
mfd_assert_read:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-40]
	ldr	r3, .L77
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #24
	mov	r2, #16
	mov	r1, r3
	ldr	r0, [fp, #-40]
	bl	read
	str	r0, [fp, #-32]
	ldr	r3, [fp, #-32]
	cmp	r3, #16
	beq	.L73
	ldr	r0, .L77+4
	bl	printf
	bl	abort
.L73:
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-40]
	str	r3, [sp]
	mov	r3, #2
	mov	r2, #1
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmn	r3, #1
	bne	.L74
	ldr	r0, .L77+8
	bl	printf
	bl	abort
.L74:
	mov	r1, #8192
	ldr	r0, [fp, #-28]
	bl	munmap
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-40]
	str	r3, [sp]
	mov	r3, #2
	mov	r2, #3
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmn	r3, #1
	bne	.L75
	ldr	r0, .L77+8
	bl	printf
	bl	abort
.L75:
	mov	r1, #8192
	ldr	r0, [fp, #-28]
	bl	munmap
	nop
	ldr	r3, .L77
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L76
	bl	__stack_chk_fail
.L76:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L78:
	.align	2
.L77:
	.word	.LC18
	.word	.LC17
	.word	.LC11
	.size	mfd_assert_read, .-mfd_assert_read
	.section	.rodata
	.align	2
.LC19:
	.ascii	"\000\000\000\000\000"
	.align	2
.LC20:
	.ascii	"write() failed: %m\012\000"
	.align	2
.LC21:
	.ascii	"mprotect() failed: %m\012\000"
	.align	2
.LC22:
	.ascii	"fallocate(PUNCH_HOLE) failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_write, %function
mfd_assert_write:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	mov	r2, #4
	ldr	r1, .L87
	ldr	r0, [fp, #-24]
	bl	write
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #4
	beq	.L80
	ldr	r0, .L87+4
	bl	printf
	bl	abort
.L80:
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	mov	r3, #1
	mov	r2, #3
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	bne	.L81
	ldr	r0, .L87+8
	bl	printf
	bl	abort
.L81:
	ldr	r3, [fp, #-12]
	mov	r2, #0
	strb	r2, [r3]
	mov	r1, #8192
	ldr	r0, [fp, #-12]
	bl	munmap
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	mov	r3, #1
	mov	r2, #2
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	bne	.L82
	ldr	r0, .L87+8
	bl	printf
	bl	abort
.L82:
	ldr	r3, [fp, #-12]
	mov	r2, #0
	strb	r2, [r3]
	mov	r1, #8192
	ldr	r0, [fp, #-12]
	bl	munmap
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	mov	r3, #1
	mov	r2, #1
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	bne	.L83
	ldr	r0, .L87+8
	bl	printf
	bl	abort
.L83:
	mov	r2, #3
	mov	r1, #8192
	ldr	r0, [fp, #-12]
	bl	mprotect
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L84
	ldr	r0, .L87+12
	bl	printf
	bl	abort
.L84:
	ldr	r3, [fp, #-12]
	mov	r2, #0
	strb	r2, [r3]
	mov	r1, #8192
	ldr	r0, [fp, #-12]
	bl	munmap
	mov	r3, #8192
	mov	r2, #0
	mov	r1, #3
	ldr	r0, [fp, #-24]
	bl	fallocate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L86
	ldr	r0, .L87+16
	bl	printf
	bl	abort
.L86:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L88:
	.align	2
.L87:
	.word	.LC19
	.word	.LC20
	.word	.LC11
	.word	.LC21
	.word	.LC22
	.size	mfd_assert_write, .-mfd_assert_write
	.section	.rodata
	.align	2
.LC23:
	.ascii	"data\000"
	.align	2
.LC24:
	.ascii	"expected EPERM on write(), but got %d: %m\012\000"
	.align	2
.LC25:
	.ascii	"mmap() didn't fail as expected\000"
	.align	2
.LC26:
	.ascii	"mmap()+mprotect() didn't fail as expected\000"
	.align	2
.LC27:
	.ascii	"fallocate(PUNCH_HOLE) didn't fail as expected\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_fail_write, %function
mfd_fail_write:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	mov	r2, #4
	ldr	r1, .L96
	ldr	r0, [fp, #-24]
	bl	write
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmn	r3, #1
	beq	.L90
	ldr	r1, [fp, #-16]
	ldr	r0, .L96+4
	bl	printf
	bl	abort
.L90:
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	mov	r3, #1
	mov	r2, #3
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	beq	.L91
	ldr	r0, .L96+8
	bl	puts
	bl	abort
.L91:
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	mov	r3, #1
	mov	r2, #2
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	beq	.L92
	ldr	r0, .L96+8
	bl	puts
	bl	abort
.L92:
	mov	r3, #0
	str	r3, [sp, #4]
	ldr	r3, [fp, #-24]
	str	r3, [sp]
	mov	r3, #1
	mov	r2, #1
	mov	r1, #8192
	mov	r0, #0
	bl	mmap
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	beq	.L93
	mov	r2, #3
	mov	r1, #8192
	ldr	r0, [fp, #-12]
	bl	mprotect
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L93
	ldr	r0, .L96+12
	bl	puts
	bl	abort
.L93:
	mov	r3, #8192
	mov	r2, #0
	mov	r1, #3
	ldr	r0, [fp, #-24]
	bl	fallocate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L95
	ldr	r0, .L96+16
	bl	puts
	bl	abort
.L95:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L97:
	.align	2
.L96:
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.size	mfd_fail_write, .-mfd_fail_write
	.section	.rodata
	.align	2
.LC28:
	.ascii	"ftruncate(SHRINK) failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_shrink, %function
mfd_assert_shrink:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r1, #4096
	ldr	r0, [fp, #-16]
	bl	ftruncate
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bge	.L99
	ldr	r0, .L100
	bl	printf
	bl	abort
.L99:
	mov	r1, #4096
	ldr	r0, [fp, #-16]
	bl	mfd_assert_size
	mov	r2, #384
	ldr	r1, .L100+4
	ldr	r0, [fp, #-16]
	bl	mfd_assert_open
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	close
	mov	r1, #0
	ldr	r0, [fp, #-16]
	bl	mfd_assert_size
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L101:
	.align	2
.L100:
	.word	.LC28
	.word	578
	.size	mfd_assert_shrink, .-mfd_assert_shrink
	.section	.rodata
	.align	2
.LC29:
	.ascii	"ftruncate(SHRINK) didn't fail as expected\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_fail_shrink, %function
mfd_fail_shrink:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r1, #4096
	ldr	r0, [fp, #-16]
	bl	ftruncate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L103
	ldr	r0, .L104
	bl	puts
	bl	abort
.L103:
	mov	r2, #384
	ldr	r1, .L104+4
	ldr	r0, [fp, #-16]
	bl	mfd_fail_open
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L105:
	.align	2
.L104:
	.word	.LC29
	.word	578
	.size	mfd_fail_shrink, .-mfd_fail_shrink
	.section	.rodata
	.align	2
.LC30:
	.ascii	"ftruncate(GROW) failed: %m\012\000"
	.align	2
.LC31:
	.ascii	"fallocate(ALLOC) failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_grow, %function
mfd_assert_grow:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r1, #16384
	ldr	r0, [fp, #-16]
	bl	ftruncate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L107
	ldr	r0, .L109
	bl	printf
	bl	abort
.L107:
	mov	r1, #16384
	ldr	r0, [fp, #-16]
	bl	mfd_assert_size
	mov	r3, #32768
	mov	r2, #0
	mov	r1, #0
	ldr	r0, [fp, #-16]
	bl	fallocate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L108
	ldr	r0, .L109+4
	bl	printf
	bl	abort
.L108:
	mov	r1, #32768
	ldr	r0, [fp, #-16]
	bl	mfd_assert_size
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L110:
	.align	2
.L109:
	.word	.LC30
	.word	.LC31
	.size	mfd_assert_grow, .-mfd_assert_grow
	.section	.rodata
	.align	2
.LC32:
	.ascii	"ftruncate(GROW) didn't fail as expected\000"
	.align	2
.LC33:
	.ascii	"fallocate(ALLOC) didn't fail as expected\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_fail_grow, %function
mfd_fail_grow:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r1, #16384
	ldr	r0, [fp, #-16]
	bl	ftruncate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L112
	ldr	r0, .L115
	bl	puts
	bl	abort
.L112:
	mov	r3, #32768
	mov	r2, #0
	mov	r1, #0
	ldr	r0, [fp, #-16]
	bl	fallocate
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L114
	ldr	r0, .L115+4
	bl	puts
	bl	abort
.L114:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L116:
	.align	2
.L115:
	.word	.LC32
	.word	.LC33
	.size	mfd_fail_grow, .-mfd_fail_grow
	.section	.rodata
	.align	2
.LC34:
	.ascii	"pwrite() failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_assert_grow_write, %function
mfd_assert_grow_write:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	mov	r2, #65536
	ldr	r1, .L119
	ldr	r0, [fp, #-16]
	bl	pwrite
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #65536
	beq	.L118
	ldr	r0, .L119+4
	bl	printf
	bl	abort
.L118:
	mov	r1, #65536
	ldr	r0, [fp, #-16]
	bl	mfd_assert_size
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L120:
	.align	2
.L119:
	.word	buf.7193
	.word	.LC34
	.size	mfd_assert_grow_write, .-mfd_assert_grow_write
	.section	.rodata
	.align	2
.LC35:
	.ascii	"pwrite() didn't fail as expected\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	mfd_fail_grow_write, %function
mfd_fail_grow_write:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	mov	r2, #65536
	ldr	r1, .L124
	ldr	r0, [fp, #-16]
	bl	pwrite
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #65536
	bne	.L123
	ldr	r0, .L124+4
	bl	puts
	bl	abort
.L123:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L125:
	.align	2
.L124:
	.word	buf.7198
	.word	.LC35
	.size	mfd_fail_grow_write, .-mfd_fail_grow_write
	.section	.rodata
	.align	2
.LC36:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	idle_thread_fn, %function
idle_thread_fn:
	@ args = 0, pretend = 0, frame = 144
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #144
	str	r0, [fp, #-144]
	ldr	r3, .L129
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #136
	mov	r0, r3
	bl	sigemptyset
	sub	r3, fp, #136
	mov	r1, #15
	mov	r0, r3
	bl	sigaddset
	sub	r2, fp, #140
	sub	r3, fp, #136
	mov	r1, r2
	mov	r0, r3
	bl	sigwait
	mov	r3, #0
	ldr	r2, .L129
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L128
	bl	__stack_chk_fail
.L128:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L130:
	.align	2
.L129:
	.word	.LC36
	.size	idle_thread_fn, .-idle_thread_fn
	.section	.rodata
	.align	2
.LC37:
	.ascii	"malloc(STACK_SIZE) failed: %m\012\000"
	.align	2
.LC38:
	.ascii	"clone() failed: %m\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	spawn_idle_thread, %function
spawn_idle_thread:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, .L135
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L132
	ldr	r0, .L135+4
	bl	printf
	bl	abort
.L132:
	ldr	r3, [fp, #-12]
	add	r1, r3, #65280
	add	r1, r1, #255
	ldr	r3, [fp, #-16]
	orr	r3, r3, #17
	mov	r2, r3
	mov	r3, #0
	ldr	r0, .L135+8
	bl	clone
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L133
	ldr	r0, .L135+12
	bl	printf
	bl	abort
.L133:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L136:
	.align	2
.L135:
	.word	65535
	.word	.LC37
	.word	idle_thread_fn
	.word	.LC38
	.size	spawn_idle_thread, .-spawn_idle_thread
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	join_idle_thread, %function
join_idle_thread:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	mov	r1, #15
	ldr	r0, [fp, #-8]
	bl	kill
	mov	r2, #0
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	waitpid
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	join_idle_thread, .-join_idle_thread
	.section	.rodata
	.align	2
.LC39:
	.ascii	"\000"
	.align	2
.LC40:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_create, %function
test_create:
	@ args = 0, pretend = 0, frame = 2056
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #2064
	ldr	r3, .L140
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r1, #0
	mov	r0, #0
	bl	mfd_fail_new
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #2048
	mov	r1, #255
	mov	r0, r3
	bl	memset
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, #0
	mov	r0, r3
	bl	mfd_fail_new
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #2048
	mov	r1, #255
	mov	r0, r3
	bl	memset
	mov	r3, #0
	strb	r3, [fp, #-9]
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, #0
	mov	r0, r3
	bl	mfd_fail_new
	mov	r3, #0
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, .L140+4
	bl	mfd_assert_new
	str	r0, [fp, #-2060]
	ldr	r0, [fp, #-2060]
	bl	close
	mov	r1, #256
	ldr	r0, .L140+4
	bl	mfd_fail_new
	mvn	r1, #1
	ldr	r0, .L140+4
	bl	mfd_fail_new
	mvn	r1, #2
	ldr	r0, .L140+4
	bl	mfd_fail_new
	mvn	r1, #0
	ldr	r0, .L140+4
	bl	mfd_fail_new
	mov	r1, #-2147483648
	ldr	r0, .L140+4
	bl	mfd_fail_new
	mov	r3, #1
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, .L140+4
	bl	mfd_assert_new
	str	r0, [fp, #-2060]
	ldr	r0, [fp, #-2060]
	bl	close
	mov	r3, #2
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, .L140+4
	bl	mfd_assert_new
	str	r0, [fp, #-2060]
	ldr	r0, [fp, #-2060]
	bl	close
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #0
	mov	r3, #0
	ldr	r0, .L140+4
	bl	mfd_assert_new
	str	r0, [fp, #-2060]
	ldr	r0, [fp, #-2060]
	bl	close
	nop
	ldr	r3, .L140
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L139
	bl	__stack_chk_fail
.L139:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L141:
	.align	2
.L140:
	.word	.LC40
	.word	.LC39
	.size	test_create, .-test_create
	.section	.rodata
	.align	2
.LC41:
	.ascii	"kern_memfd_basic\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_basic, %function
test_basic:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L143
	bl	mfd_assert_new
	str	r0, [fp, #-8]
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #10
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #10
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #10
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #10
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #5
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #15
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #4
	ldr	r0, [fp, #-8]
	bl	mfd_fail_add_seals
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	mfd_fail_add_seals
	ldr	r0, [fp, #-8]
	bl	close
	mov	r3, #1
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L143
	bl	mfd_assert_new
	str	r0, [fp, #-8]
	mov	r1, #1
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #14
	ldr	r0, [fp, #-8]
	bl	mfd_fail_add_seals
	mov	r1, #1
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-8]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L144:
	.align	2
.L143:
	.word	.LC41
	.size	test_basic, .-test_basic
	.section	.rodata
	.align	2
.LC42:
	.ascii	"kern_memfd_seal_write\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_seal_write, %function
test_seal_write:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L146
	bl	mfd_assert_new
	str	r0, [fp, #-8]
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #8
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #8
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-8]
	bl	mfd_assert_read
	ldr	r0, [fp, #-8]
	bl	mfd_fail_write
	ldr	r0, [fp, #-8]
	bl	mfd_assert_shrink
	ldr	r0, [fp, #-8]
	bl	mfd_assert_grow
	ldr	r0, [fp, #-8]
	bl	mfd_fail_grow_write
	ldr	r0, [fp, #-8]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L147:
	.align	2
.L146:
	.word	.LC42
	.size	test_seal_write, .-test_seal_write
	.section	.rodata
	.align	2
.LC43:
	.ascii	"kern_memfd_seal_shrink\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_seal_shrink, %function
test_seal_shrink:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L149
	bl	mfd_assert_new
	str	r0, [fp, #-8]
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #2
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #2
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-8]
	bl	mfd_assert_read
	ldr	r0, [fp, #-8]
	bl	mfd_assert_write
	ldr	r0, [fp, #-8]
	bl	mfd_fail_shrink
	ldr	r0, [fp, #-8]
	bl	mfd_assert_grow
	ldr	r0, [fp, #-8]
	bl	mfd_assert_grow_write
	ldr	r0, [fp, #-8]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L150:
	.align	2
.L149:
	.word	.LC43
	.size	test_seal_shrink, .-test_seal_shrink
	.section	.rodata
	.align	2
.LC44:
	.ascii	"kern_memfd_seal_grow\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_seal_grow, %function
test_seal_grow:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L152
	bl	mfd_assert_new
	str	r0, [fp, #-8]
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #4
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #4
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-8]
	bl	mfd_assert_read
	ldr	r0, [fp, #-8]
	bl	mfd_assert_write
	ldr	r0, [fp, #-8]
	bl	mfd_assert_shrink
	ldr	r0, [fp, #-8]
	bl	mfd_fail_grow
	ldr	r0, [fp, #-8]
	bl	mfd_fail_grow_write
	ldr	r0, [fp, #-8]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L153:
	.align	2
.L152:
	.word	.LC44
	.size	test_seal_grow, .-test_seal_grow
	.section	.rodata
	.align	2
.LC45:
	.ascii	"kern_memfd_seal_resize\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_seal_resize, %function
test_seal_resize:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L155
	bl	mfd_assert_new
	str	r0, [fp, #-8]
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #6
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #6
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-8]
	bl	mfd_assert_read
	ldr	r0, [fp, #-8]
	bl	mfd_assert_write
	ldr	r0, [fp, #-8]
	bl	mfd_fail_shrink
	ldr	r0, [fp, #-8]
	bl	mfd_fail_grow
	ldr	r0, [fp, #-8]
	bl	mfd_fail_grow_write
	ldr	r0, [fp, #-8]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L156:
	.align	2
.L155:
	.word	.LC45
	.size	test_seal_resize, .-test_seal_resize
	.section	.rodata
	.align	2
.LC46:
	.ascii	"kern_memfd_share_dup\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_share_dup, %function
test_share_dup:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L158
	bl	mfd_assert_new
	str	r0, [fp, #-12]
	mov	r1, #0
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-12]
	bl	mfd_assert_dup
	str	r0, [fp, #-8]
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #8
	ldr	r0, [fp, #-12]
	bl	mfd_assert_add_seals
	mov	r1, #8
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #8
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #2
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #10
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #10
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #1
	ldr	r0, [fp, #-12]
	bl	mfd_assert_add_seals
	mov	r1, #11
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #11
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #4
	ldr	r0, [fp, #-12]
	bl	mfd_fail_add_seals
	mov	r1, #4
	ldr	r0, [fp, #-8]
	bl	mfd_fail_add_seals
	mov	r1, #1
	ldr	r0, [fp, #-12]
	bl	mfd_fail_add_seals
	mov	r1, #1
	ldr	r0, [fp, #-8]
	bl	mfd_fail_add_seals
	ldr	r0, [fp, #-8]
	bl	close
	mov	r1, #4
	ldr	r0, [fp, #-12]
	bl	mfd_fail_add_seals
	ldr	r0, [fp, #-12]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L159:
	.align	2
.L158:
	.word	.LC46
	.size	test_share_dup, .-test_share_dup
	.section	.rodata
	.align	2
.LC47:
	.ascii	"kern_memfd_share_mmap\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_share_mmap, %function
test_share_mmap:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L161
	bl	mfd_assert_new
	str	r0, [fp, #-12]
	mov	r1, #0
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-12]
	bl	mfd_assert_mmap_shared
	str	r0, [fp, #-8]
	mov	r1, #8
	ldr	r0, [fp, #-12]
	bl	mfd_fail_add_seals
	mov	r1, #0
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #2
	ldr	r0, [fp, #-12]
	bl	mfd_assert_add_seals
	mov	r1, #2
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #8192
	ldr	r0, [fp, #-8]
	bl	munmap
	ldr	r0, [fp, #-12]
	bl	mfd_assert_mmap_private
	str	r0, [fp, #-8]
	mov	r1, #8
	ldr	r0, [fp, #-12]
	bl	mfd_assert_add_seals
	mov	r1, #10
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #8192
	ldr	r0, [fp, #-8]
	bl	munmap
	ldr	r0, [fp, #-12]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L162:
	.align	2
.L161:
	.word	.LC47
	.size	test_share_mmap, .-test_share_mmap
	.section	.rodata
	.align	2
.LC48:
	.ascii	"kern_memfd_share_open\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_share_open, %function
test_share_open:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L164
	bl	mfd_assert_new
	str	r0, [fp, #-12]
	mov	r1, #0
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r2, #0
	mov	r1, #2
	ldr	r0, [fp, #-12]
	bl	mfd_assert_open
	str	r0, [fp, #-8]
	mov	r1, #8
	ldr	r0, [fp, #-12]
	bl	mfd_assert_add_seals
	mov	r1, #8
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #8
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	mov	r1, #2
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #10
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #10
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-12]
	bl	close
	mov	r2, #0
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	mfd_assert_open
	str	r0, [fp, #-12]
	mov	r1, #1
	ldr	r0, [fp, #-12]
	bl	mfd_fail_add_seals
	mov	r1, #10
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #10
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-8]
	bl	close
	mov	r2, #0
	mov	r1, #2
	ldr	r0, [fp, #-12]
	bl	mfd_assert_open
	str	r0, [fp, #-8]
	mov	r1, #1
	ldr	r0, [fp, #-8]
	bl	mfd_assert_add_seals
	mov	r1, #11
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #11
	ldr	r0, [fp, #-8]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-8]
	bl	close
	ldr	r0, [fp, #-12]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L165:
	.align	2
.L164:
	.word	.LC48
	.size	test_share_open, .-test_share_open
	.section	.rodata
	.align	2
.LC49:
	.ascii	"kern_memfd_share_fork\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_share_fork, %function
test_share_fork:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #3
	str	r3, [sp]
	mov	r2, #8192
	mov	r3, #0
	ldr	r0, .L167
	bl	mfd_assert_new
	str	r0, [fp, #-12]
	mov	r1, #0
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r0, #0
	bl	spawn_idle_thread
	str	r0, [fp, #-8]
	mov	r1, #1
	ldr	r0, [fp, #-12]
	bl	mfd_assert_add_seals
	mov	r1, #1
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	mov	r1, #8
	ldr	r0, [fp, #-12]
	bl	mfd_fail_add_seals
	mov	r1, #1
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-8]
	bl	join_idle_thread
	mov	r1, #8
	ldr	r0, [fp, #-12]
	bl	mfd_fail_add_seals
	mov	r1, #1
	ldr	r0, [fp, #-12]
	bl	mfd_assert_has_seals
	ldr	r0, [fp, #-12]
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L168:
	.align	2
.L167:
	.word	.LC49
	.size	test_share_fork, .-test_share_fork
	.section	.rodata
	.align	2
.LC50:
	.ascii	"memfd: CREATE\000"
	.align	2
.LC51:
	.ascii	"memfd: BASIC\000"
	.align	2
.LC52:
	.ascii	"memfd: SEAL-WRITE\000"
	.align	2
.LC53:
	.ascii	"memfd: SEAL-SHRINK\000"
	.align	2
.LC54:
	.ascii	"memfd: SEAL-GROW\000"
	.align	2
.LC55:
	.ascii	"memfd: SEAL-RESIZE\000"
	.align	2
.LC56:
	.ascii	"memfd: SHARE-DUP\000"
	.align	2
.LC57:
	.ascii	"memfd: SHARE-MMAP\000"
	.align	2
.LC58:
	.ascii	"memfd: SHARE-OPEN\000"
	.align	2
.LC59:
	.ascii	"memfd: SHARE-FORK\000"
	.align	2
.LC60:
	.ascii	"memfd: SHARE-DUP (shared file-table)\000"
	.align	2
.LC61:
	.ascii	"memfd: SHARE-MMAP (shared file-table)\000"
	.align	2
.LC62:
	.ascii	"memfd: SHARE-OPEN (shared file-table)\000"
	.align	2
.LC63:
	.ascii	"memfd: SHARE-FORK (shared file-table)\000"
	.align	2
.LC64:
	.ascii	"memfd: DONE\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r0, .L171
	bl	puts
	bl	test_create
	ldr	r0, .L171+4
	bl	puts
	bl	test_basic
	ldr	r0, .L171+8
	bl	puts
	bl	test_seal_write
	ldr	r0, .L171+12
	bl	puts
	bl	test_seal_shrink
	ldr	r0, .L171+16
	bl	puts
	bl	test_seal_grow
	ldr	r0, .L171+20
	bl	puts
	bl	test_seal_resize
	ldr	r0, .L171+24
	bl	puts
	bl	test_share_dup
	ldr	r0, .L171+28
	bl	puts
	bl	test_share_mmap
	ldr	r0, .L171+32
	bl	puts
	bl	test_share_open
	ldr	r0, .L171+36
	bl	puts
	bl	test_share_fork
	mov	r0, #1792
	bl	spawn_idle_thread
	str	r0, [fp, #-8]
	ldr	r0, .L171+40
	bl	puts
	bl	test_share_dup
	ldr	r0, .L171+44
	bl	puts
	bl	test_share_mmap
	ldr	r0, .L171+48
	bl	puts
	bl	test_share_open
	ldr	r0, .L171+52
	bl	puts
	bl	test_share_fork
	ldr	r0, [fp, #-8]
	bl	join_idle_thread
	ldr	r0, .L171+56
	bl	puts
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L172:
	.align	2
.L171:
	.word	.LC50
	.word	.LC51
	.word	.LC52
	.word	.LC53
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.word	.LC58
	.word	.LC59
	.word	.LC60
	.word	.LC61
	.word	.LC62
	.word	.LC63
	.word	.LC64
	.size	main, .-main
	.local	buf.7193
	.comm	buf.7193,65536,4
	.local	buf.7198
	.comm	buf.7198,65536,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
