	.file	"165766317.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
.LC0:
	.string	"L:locked"
.LC1:
	.string	"E:error"
.LC2:
	.string	"R:referenced"
.LC3:
	.string	"U:uptodate"
.LC4:
	.string	"D:dirty"
.LC5:
	.string	"l:lru"
.LC6:
	.string	"A:active"
.LC7:
	.string	"S:slab"
.LC8:
	.string	"W:writeback"
.LC9:
	.string	"I:reclaim"
.LC10:
	.string	"B:buddy"
.LC11:
	.string	"M:mmap"
.LC12:
	.string	"a:anonymous"
.LC13:
	.string	"s:swapcache"
.LC14:
	.string	"b:swapbacked"
.LC15:
	.string	"H:compound_head"
.LC16:
	.string	"T:compound_tail"
.LC17:
	.string	"G:huge"
.LC18:
	.string	"u:unevictable"
.LC19:
	.string	"X:hwpoison"
.LC20:
	.string	"n:nopage"
.LC21:
	.string	"x:ksm"
.LC22:
	.string	"r:reserved"
.LC23:
	.string	"m:mlocked"
.LC24:
	.string	"d:mappedtodisk"
.LC25:
	.string	"P:private"
.LC26:
	.string	"p:private_2"
.LC27:
	.string	"O:owner_private"
.LC28:
	.string	"h:arch"
.LC29:
	.string	"c:uncached"
.LC30:
	.string	"I:readahead"
.LC31:
	.string	"P:slob_free"
.LC32:
	.string	"A:slub_frozen"
.LC33:
	.string	"E:slub_debug"
	.section	.data.rel.local,"aw"
	.align 32
	.type	page_flag_names, @object
	.size	page_flag_names, 416
page_flag_names:
	.quad	.LC0
	.quad	.LC1
	.quad	.LC2
	.quad	.LC3
	.quad	.LC4
	.quad	.LC5
	.quad	.LC6
	.quad	.LC7
	.quad	.LC8
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.quad	.LC14
	.quad	.LC15
	.quad	.LC16
	.quad	.LC17
	.quad	.LC18
	.quad	.LC19
	.quad	.LC20
	.quad	.LC21
	.zero	80
	.quad	.LC22
	.quad	.LC23
	.quad	.LC24
	.quad	.LC25
	.quad	.LC26
	.quad	.LC27
	.quad	.LC28
	.quad	.LC29
	.zero	64
	.quad	.LC30
	.quad	.LC31
	.quad	.LC32
	.quad	.LC33
	.local	opt_raw
	.comm	opt_raw,4,4
	.local	opt_list
	.comm	opt_list,4,4
	.local	opt_no_summary
	.comm	opt_no_summary,4,4
	.local	opt_pid
	.comm	opt_pid,4,4
	.local	nr_addr_ranges
	.comm	nr_addr_ranges,4,4
	.local	opt_offset
	.comm	opt_offset,8192,32
	.local	opt_size
	.comm	opt_size,8192,32
	.local	nr_vmas
	.comm	nr_vmas,4,4
	.local	pg_start
	.comm	pg_start,81920,32
	.local	pg_end
	.comm	pg_end,81920,32
	.local	nr_bit_filters
	.comm	nr_bit_filters,4,4
	.local	opt_mask
	.comm	opt_mask,512,32
	.local	opt_bits
	.comm	opt_bits,512,32
	.local	page_size
	.comm	page_size,4,4
	.local	pagemap_fd
	.comm	pagemap_fd,4,4
	.local	kpageflags_fd
	.comm	kpageflags_fd,4,4
	.local	opt_hwpoison
	.comm	opt_hwpoison,4,4
	.local	opt_unpoison
	.comm	opt_unpoison,4,4
	.section	.rodata
	.align 16
	.type	hwpoison_debug_fs, @object
	.size	hwpoison_debug_fs, 16
hwpoison_debug_fs:
	.string	"/debug/hwpoison"
	.local	hwpoison_inject_fd
	.comm	hwpoison_inject_fd,4,4
	.local	hwpoison_forget_fd
	.comm	hwpoison_forget_fd,4,4
	.local	total_pages
	.comm	total_pages,8,8
	.local	nr_pages
	.comm	nr_pages,65536,32
	.local	page_flags
	.comm	page_flags,65536,32
	.text
	.type	pages2mb, @function
pages2mb:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	eax, DWORD PTR page_size[rip]
	cdqe
	imul	rax, QWORD PTR -8[rbp]
	shr	rax, 20
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	pages2mb, .-pages2mb
	.type	fatal, @function
fatal:
.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, 224
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -168[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L4
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L4:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -208[rbp], 8
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR stderr[rip]
	lea	rdx, -208[rbp]
	mov	rcx, QWORD PTR -216[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	vfprintf@PLT
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE7:
	.size	fatal, .-fatal
	.type	checked_open, @function
checked_open:
.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
	mov	eax, 0
	call	open@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L7
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L7:
	mov	eax, DWORD PTR -4[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	checked_open, .-checked_open
	.section	.rodata
.LC34:
	.string	"index overflow: %lu\n"
.LC35:
	.string	"partial read: %lu bytes\n"
	.text
	.type	do_u64_read, @function
do_u64_read:
.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, 64
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	QWORD PTR -48[rbp], rcx
	mov	QWORD PTR -56[rbp], r8
	movabs	rax, 2305843009213693951
	cmp	QWORD PTR -48[rbp], rax
	jbe	.L10
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rax
	lea	rdi, .LC34[rip]
	mov	eax, 0
	call	fatal
.L10:
	mov	rax, QWORD PTR -48[rbp]
	sal	rax, 3
	mov	rcx, rax
	mov	eax, DWORD PTR -20[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	edi, eax
	call	lseek@PLT
	test	rax, rax
	jns	.L11
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L11:
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rcx, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jns	.L12
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L12:
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 7
	test	rax, rax
	je	.L13
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC35[rip]
	mov	eax, 0
	call	fatal
.L13:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 7[rax]
	test	rax, rax
	cmovs	rax, rdx
	sar	rax, 3
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	do_u64_read, .-do_u64_read
	.section	.rodata
.LC36:
	.string	"/proc/kpageflags"
	.text
	.type	kpageflags_read, @function
kpageflags_read:
.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	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	eax, DWORD PTR kpageflags_fd[rip]
	mov	rsi, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	r8, rsi
	lea	rsi, .LC36[rip]
	mov	edi, eax
	call	do_u64_read
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	kpageflags_read, .-kpageflags_read
	.section	.rodata
.LC37:
	.string	"/proc/pid/pagemap"
	.text
	.type	pagemap_read, @function
pagemap_read:
.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	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	eax, DWORD PTR pagemap_fd[rip]
	mov	rsi, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	r8, rsi
	lea	rsi, .LC37[rip]
	mov	edi, eax
	call	do_u64_read
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	pagemap_read, .-pagemap_read
	.type	pagemap_pfn, @function
pagemap_pfn:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	test	rax, rax
	jns	.L20
	movabs	rax, 36028797018963967
	and	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L21
.L20:
	mov	QWORD PTR -8[rbp], 0
.L21:
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	pagemap_pfn, .-pagemap_pfn
	.section	.rodata
.LC38:
	.string	"unknown flag bit %d\n"
	.text
	.type	page_flag_name, @function
page_flag_name:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	jmp	.L24
.L30:
	mov	eax, DWORD PTR -12[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	ecx, eax
	shr	rdx, cl
	mov	rax, rdx
	and	eax, 1
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flag_names[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	jne	.L25
	cmp	DWORD PTR -4[rbp], 0
	je	.L32
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, .LC38[rip]
	mov	eax, 0
	call	fatal
	jmp	.L32
.L25:
	cmp	DWORD PTR -4[rbp], 0
	je	.L28
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flag_names[rip]
	mov	rax, QWORD PTR [rdx+rax]
	movzx	edx, BYTE PTR [rax]
	jmp	.L29
.L28:
	mov	edx, 95
.L29:
	mov	eax, DWORD PTR -8[rbp]
	lea	ecx, 1[rax]
	mov	DWORD PTR -8[rbp], ecx
	cdqe
	lea	rcx, buf.6[rip]
	mov	BYTE PTR [rax+rcx], dl
	jmp	.L27
.L32:
	nop
.L27:
	add	DWORD PTR -12[rbp], 1
.L24:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, 51
	jbe	.L30
	lea	rax, buf.6[rip]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	page_flag_name, .-page_flag_name
	.section	.rodata
.LC39:
	.string	"%s,"
	.text
	.type	page_flag_longname, @function
page_flag_longname:
.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	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L34
.L37:
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flag_names[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	je	.L40
	mov	eax, DWORD PTR -8[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	ecx, eax
	shr	rdx, cl
	mov	rax, rdx
	and	eax, 1
	test	rax, rax
	je	.L36
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flag_names[rip]
	mov	rax, QWORD PTR [rdx+rax]
	lea	rdx, 2[rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	mov	ecx, 1024
	mov	rsi, rcx
	sub	rsi, rax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rcx, buf.5[rip]
	add	rax, rcx
	mov	rcx, rdx
	lea	rdx, .LC39[rip]
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	add	DWORD PTR -4[rbp], eax
	jmp	.L36
.L40:
	nop
.L36:
	add	DWORD PTR -8[rbp], 1
.L34:
	mov	eax, DWORD PTR -8[rbp]
	cmp	eax, 51
	jbe	.L37
	cmp	DWORD PTR -4[rbp], 0
	je	.L38
	sub	DWORD PTR -4[rbp], 1
.L38:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, buf.5[rip]
	mov	BYTE PTR [rax+rdx], 0
	lea	rax, buf.5[rip]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	page_flag_longname, .-page_flag_longname
	.section	.rodata
.LC40:
	.string	"%lx\t"
.LC41:
	.string	"%lx\t%lx\t%s\n"
	.text
	.type	show_page_range, @function
show_page_range:
.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	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rax, QWORD PTR flags0.4[rip]
	cmp	QWORD PTR -24[rbp], rax
	jne	.L42
	mov	rdx, QWORD PTR index.3[rip]
	mov	rax, QWORD PTR count.2[rip]
	add	rax, rdx
	cmp	QWORD PTR -16[rbp], rax
	jne	.L42
	mov	eax, DWORD PTR opt_pid[rip]
	test	eax, eax
	je	.L43
	mov	rdx, QWORD PTR voff.1[rip]
	mov	rax, QWORD PTR count.2[rip]
	add	rax, rdx
	cmp	QWORD PTR -8[rbp], rax
	jne	.L42
.L43:
	mov	rax, QWORD PTR count.2[rip]
	add	rax, 1
	mov	QWORD PTR count.2[rip], rax
	jmp	.L41
.L42:
	mov	rax, QWORD PTR count.2[rip]
	test	rax, rax
	je	.L45
	mov	eax, DWORD PTR opt_pid[rip]
	test	eax, eax
	je	.L46
	mov	rax, QWORD PTR voff.1[rip]
	mov	rsi, rax
	lea	rdi, .LC40[rip]
	mov	eax, 0
	call	printf@PLT
.L46:
	mov	rax, QWORD PTR flags0.4[rip]
	mov	rdi, rax
	call	page_flag_name
	mov	rcx, rax
	mov	rdx, QWORD PTR count.2[rip]
	mov	rax, QWORD PTR index.3[rip]
	mov	rsi, rax
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
.L45:
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR flags0.4[rip], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR index.3[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR voff.1[rip], rax
	mov	QWORD PTR count.2[rip], 1
.L41:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	show_page_range, .-show_page_range
	.section	.rodata
.LC42:
	.string	"%lx\t%s\n"
	.text
	.type	show_page, @function
show_page:
.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	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	eax, DWORD PTR opt_pid[rip]
	test	eax, eax
	je	.L48
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC40[rip]
	mov	eax, 0
	call	printf@PLT
.L48:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	page_flag_name
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC42[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	show_page, .-show_page
	.section	.rodata
	.align 8
.LC43:
	.string	"             flags\tpage-count       MB  symbolic-flags\t\t\tlong-symbolic-flags"
.LC44:
	.string	"0x%016llx\t%10lu %8lu  %s\t%s\n"
	.align 8
.LC45:
	.string	"             total\t%10lu %8lu\n"
	.text
	.type	show_summary, @function
show_summary:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r12
	push	rbx
	sub	rsp, 16
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	lea	rdi, .LC43[rip]
	call	puts@PLT
	mov	DWORD PTR -20[rbp], 0
	jmp	.L50
.L52:
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, nr_pages[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	je	.L51
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flags[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdi, rax
	call	page_flag_longname
	mov	r12, rax
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flags[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdi, rax
	call	page_flag_name
	mov	rbx, rax
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, nr_pages[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rdi, rax
	call	pages2mb
	mov	rcx, rax
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, nr_pages[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	lea	rsi, 0[0+rax*8]
	lea	rax, page_flags[rip]
	mov	rax, QWORD PTR [rsi+rax]
	mov	r9, r12
	mov	r8, rbx
	mov	rsi, rax
	lea	rdi, .LC44[rip]
	mov	eax, 0
	call	printf@PLT
.L51:
	add	DWORD PTR -20[rbp], 1
.L50:
	mov	eax, DWORD PTR -20[rbp]
	cmp	eax, 8191
	jbe	.L52
	mov	rax, QWORD PTR total_pages[rip]
	mov	rdi, rax
	call	pages2mb
	mov	rdx, rax
	mov	rax, QWORD PTR total_pages[rip]
	mov	rsi, rax
	lea	rdi, .LC45[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	add	rsp, 16
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	show_summary, .-show_summary
	.type	bit_mask_ok, @function
bit_mask_ok:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L54
.L58:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, opt_bits[rip]
	mov	rax, QWORD PTR [rdx+rax]
	cmp	rax, -1
	jne	.L55
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, opt_mask[rip]
	mov	rax, QWORD PTR [rdx+rax]
	and	rax, QWORD PTR -24[rbp]
	test	rax, rax
	jne	.L56
	mov	eax, 0
	jmp	.L57
.L55:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, opt_mask[rip]
	mov	rax, QWORD PTR [rdx+rax]
	and	rax, QWORD PTR -24[rbp]
	mov	rdx, rax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, opt_bits[rip]
	mov	rax, QWORD PTR [rcx+rax]
	cmp	rdx, rax
	je	.L56
	mov	eax, 0
	jmp	.L57
.L56:
	add	DWORD PTR -4[rbp], 1
.L54:
	mov	eax, DWORD PTR nr_bit_filters[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L58
	mov	eax, 1
.L57:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	bit_mask_ok, .-bit_mask_ok
	.type	expand_overloaded_flags, @function
expand_overloaded_flags:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 128
	test	rax, rax
	je	.L60
	movabs	rax, 34359738368
	and	rax, QWORD PTR -8[rbp]
	test	rax, rax
	je	.L61
	movabs	rax, 562984313159680
	xor	QWORD PTR -8[rbp], rax
.L61:
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 64
	test	rax, rax
	je	.L62
	movabs	rax, 1125899906842688
	xor	QWORD PTR -8[rbp], rax
.L62:
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 2
	test	rax, rax
	je	.L60
	movabs	rax, 2251799813685250
	xor	QWORD PTR -8[rbp], rax
.L60:
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 768
	cmp	rax, 512
	jne	.L63
	movabs	rax, 281474976711168
	xor	QWORD PTR -8[rbp], rax
.L63:
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	expand_overloaded_flags, .-expand_overloaded_flags
	.type	well_known_flags, @function
well_known_flags:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	movabs	rax, -281470681743361
	and	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 98304
	test	rax, rax
	je	.L66
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 131072
	test	rax, rax
	jne	.L66
	and	QWORD PTR -8[rbp], -98305
.L66:
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	well_known_flags, .-well_known_flags
	.type	kpageflags_flags, @function
kpageflags_flags:
.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, 8
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	expand_overloaded_flags
	mov	QWORD PTR -8[rbp], rax
	mov	eax, DWORD PTR opt_raw[rip]
	test	eax, eax
	jne	.L69
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	well_known_flags
	mov	QWORD PTR -8[rbp], rax
.L69:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	kpageflags_flags, .-kpageflags_flags
	.section	.rodata
.LC46:
	.string	"%s/corrupt-pfn"
.LC47:
	.string	"%s/unpoison-pfn"
	.text
	.type	prepare_hwpoison_fd, @function
prepare_hwpoison_fd:
.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, 112
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR opt_hwpoison[rip]
	test	eax, eax
	je	.L72
	mov	eax, DWORD PTR hwpoison_inject_fd[rip]
	test	eax, eax
	jne	.L72
	lea	rax, -112[rbp]
	lea	rdx, hwpoison_debug_fs[rip]
	lea	rsi, .LC46[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rax, -112[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	checked_open
	mov	DWORD PTR hwpoison_inject_fd[rip], eax
.L72:
	mov	eax, DWORD PTR opt_unpoison[rip]
	test	eax, eax
	je	.L75
	mov	eax, DWORD PTR hwpoison_forget_fd[rip]
	test	eax, eax
	jne	.L75
	lea	rax, -112[rbp]
	lea	rdx, hwpoison_debug_fs[rip]
	lea	rsi, .LC47[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rax, -112[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	checked_open
	mov	DWORD PTR hwpoison_forget_fd[rip], eax
.L75:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L74
	call	__stack_chk_fail@PLT
.L74:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	prepare_hwpoison_fd, .-prepare_hwpoison_fd
	.section	.rodata
.LC48:
	.string	"0x%lx\n"
.LC49:
	.string	"hwpoison inject"
	.text
	.type	hwpoison_page, @function
hwpoison_page:
.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, 144
	mov	QWORD PTR -136[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -136[rbp]
	lea	rax, -112[rbp]
	lea	rsi, .LC48[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	mov	DWORD PTR -116[rbp], eax
	mov	eax, DWORD PTR -116[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR hwpoison_inject_fd[rip]
	lea	rcx, -112[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	mov	DWORD PTR -116[rbp], eax
	cmp	DWORD PTR -116[rbp], 0
	jns	.L77
	lea	rdi, .LC49[rip]
	call	perror@PLT
	mov	eax, DWORD PTR -116[rbp]
	jmp	.L79
.L77:
	mov	eax, 0
.L79:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L80
	call	__stack_chk_fail@PLT
.L80:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	hwpoison_page, .-hwpoison_page
	.section	.rodata
.LC50:
	.string	"hwpoison forget"
	.text
	.type	unpoison_page, @function
unpoison_page:
.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, 144
	mov	QWORD PTR -136[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -136[rbp]
	lea	rax, -112[rbp]
	lea	rsi, .LC48[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	mov	DWORD PTR -116[rbp], eax
	mov	eax, DWORD PTR -116[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR hwpoison_forget_fd[rip]
	lea	rcx, -112[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	mov	DWORD PTR -116[rbp], eax
	cmp	DWORD PTR -116[rbp], 0
	jns	.L82
	lea	rdi, .LC50[rip]
	call	perror@PLT
	mov	eax, DWORD PTR -116[rbp]
	jmp	.L84
.L82:
	mov	eax, 0
.L84:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L85
	call	__stack_chk_fail@PLT
.L85:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	unpoison_page, .-unpoison_page
	.section	.rodata
	.align 8
.LC51:
	.string	"hash table full: bump up HASH_SHIFT?\n"
	.text
	.type	hash_slot, @function
hash_slot:
.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	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	and	eax, 8191
	mov	DWORD PTR -8[rbp], eax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L87
	mov	eax, 0
	jmp	.L88
.L87:
	mov	DWORD PTR -4[rbp], 1
	jmp	.L89
.L94:
	cmp	DWORD PTR -8[rbp], 0
	je	.L90
	mov	eax, DWORD PTR -8[rbp]
	cmp	eax, 8191
	jbe	.L91
.L90:
	mov	DWORD PTR -8[rbp], 1
.L91:
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flags[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	jne	.L92
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rdx, page_flags[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	eax, DWORD PTR -8[rbp]
	jmp	.L88
.L92:
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flags[rip]
	mov	rax, QWORD PTR [rdx+rax]
	cmp	QWORD PTR -24[rbp], rax
	jne	.L93
	mov	eax, DWORD PTR -8[rbp]
	jmp	.L88
.L93:
	add	DWORD PTR -4[rbp], 1
	add	DWORD PTR -8[rbp], 1
.L89:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, 8191
	jbe	.L94
	lea	rdi, .LC51[rip]
	mov	eax, 0
	call	fatal
	mov	edi, 1
	call	exit@PLT
.L88:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	hash_slot, .-hash_slot
	.type	add_page, @function
add_page:
.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	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	kpageflags_flags
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	bit_mask_ok
	test	eax, eax
	je	.L102
	mov	eax, DWORD PTR opt_hwpoison[rip]
	test	eax, eax
	je	.L98
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	hwpoison_page
.L98:
	mov	eax, DWORD PTR opt_unpoison[rip]
	test	eax, eax
	je	.L99
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	unpoison_page
.L99:
	mov	eax, DWORD PTR opt_list[rip]
	cmp	eax, 1
	jne	.L100
	mov	rdx, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	show_page_range
	jmp	.L101
.L100:
	mov	eax, DWORD PTR opt_list[rip]
	cmp	eax, 2
	jne	.L101
	mov	rdx, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	show_page
.L101:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	hash_slot
	movsx	rdx, eax
	lea	rcx, 0[0+rdx*8]
	lea	rdx, nr_pages[rip]
	mov	rdx, QWORD PTR [rcx+rdx]
	lea	rcx, 1[rdx]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, nr_pages[rip]
	mov	QWORD PTR [rdx+rax], rcx
	mov	rax, QWORD PTR total_pages[rip]
	add	rax, 1
	mov	QWORD PTR total_pages[rip], rax
	jmp	.L95
.L102:
	nop
.L95:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	add_page, .-add_page
	.type	walk_pfn, @function
walk_pfn:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	lea	r11, -524288[rsp]
.LPSRL0:
	sub	rsp, 4096
	or	DWORD PTR [rsp], 0
	cmp	rsp, r11
	jne	.LPSRL0
	sub	rsp, 96
	mov	QWORD PTR -524360[rbp], rdi
	mov	QWORD PTR -524368[rbp], rsi
	mov	QWORD PTR -524376[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	jmp	.L104
.L109:
	mov	rax, QWORD PTR -524376[rbp]
	mov	QWORD PTR -524336[rbp], rax
	mov	QWORD PTR -524328[rbp], 65536
	mov	rax, QWORD PTR -524336[rbp]
	cmp	QWORD PTR -524328[rbp], rax
	cmovbe	rax, QWORD PTR -524328[rbp]
	mov	QWORD PTR -524320[rbp], rax
	mov	rdx, QWORD PTR -524320[rbp]
	mov	rcx, QWORD PTR -524368[rbp]
	lea	rax, -524304[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	kpageflags_read
	mov	QWORD PTR -524312[rbp], rax
	cmp	QWORD PTR -524312[rbp], 0
	je	.L111
	mov	QWORD PTR -524344[rbp], 0
	jmp	.L107
.L108:
	mov	rax, QWORD PTR -524344[rbp]
	mov	rax, QWORD PTR -524304[rbp+rax*8]
	mov	rcx, QWORD PTR -524368[rbp]
	mov	rdx, QWORD PTR -524344[rbp]
	lea	rsi, [rcx+rdx]
	mov	rcx, QWORD PTR -524360[rbp]
	mov	rdx, QWORD PTR -524344[rbp]
	add	rcx, rdx
	mov	rdx, rax
	mov	rdi, rcx
	call	add_page
	add	QWORD PTR -524344[rbp], 1
.L107:
	mov	rax, QWORD PTR -524312[rbp]
	cmp	QWORD PTR -524344[rbp], rax
	jb	.L108
	mov	rax, QWORD PTR -524312[rbp]
	add	QWORD PTR -524368[rbp], rax
	mov	rax, QWORD PTR -524312[rbp]
	sub	QWORD PTR -524376[rbp], rax
.L104:
	cmp	QWORD PTR -524376[rbp], 0
	jne	.L109
	jmp	.L106
.L111:
	nop
.L106:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L110
	call	__stack_chk_fail@PLT
.L110:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	walk_pfn, .-walk_pfn
	.type	walk_vma, @function
walk_vma:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	lea	r11, -524288[rsp]
.LPSRL1:
	sub	rsp, 4096
	or	DWORD PTR [rsp], 0
	cmp	rsp, r11
	jne	.LPSRL1
	sub	rsp, 80
	mov	QWORD PTR -524360[rbp], rdi
	mov	QWORD PTR -524368[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	jmp	.L113
.L119:
	mov	rax, QWORD PTR -524368[rbp]
	mov	QWORD PTR -524344[rbp], rax
	mov	QWORD PTR -524336[rbp], 65536
	mov	rax, QWORD PTR -524344[rbp]
	cmp	QWORD PTR -524336[rbp], rax
	cmovbe	rax, QWORD PTR -524336[rbp]
	mov	QWORD PTR -524328[rbp], rax
	mov	rdx, QWORD PTR -524328[rbp]
	mov	rcx, QWORD PTR -524360[rbp]
	lea	rax, -524304[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	pagemap_read
	mov	QWORD PTR -524320[rbp], rax
	cmp	QWORD PTR -524320[rbp], 0
	je	.L121
	mov	QWORD PTR -524352[rbp], 0
	jmp	.L116
.L118:
	mov	rax, QWORD PTR -524352[rbp]
	mov	rax, QWORD PTR -524304[rbp+rax*8]
	mov	rdi, rax
	call	pagemap_pfn
	mov	QWORD PTR -524312[rbp], rax
	cmp	QWORD PTR -524312[rbp], 0
	je	.L117
	mov	rdx, QWORD PTR -524360[rbp]
	mov	rax, QWORD PTR -524352[rbp]
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -524312[rbp]
	mov	edx, 1
	mov	rsi, rax
	mov	rdi, rcx
	call	walk_pfn
.L117:
	add	QWORD PTR -524352[rbp], 1
.L116:
	mov	rax, QWORD PTR -524352[rbp]
	cmp	rax, QWORD PTR -524320[rbp]
	jb	.L118
	mov	rax, QWORD PTR -524320[rbp]
	add	QWORD PTR -524360[rbp], rax
	mov	rax, QWORD PTR -524320[rbp]
	sub	QWORD PTR -524368[rbp], rax
.L113:
	cmp	QWORD PTR -524368[rbp], 0
	jne	.L119
	jmp	.L115
.L121:
	nop
.L115:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L120
	call	__stack_chk_fail@PLT
.L120:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	walk_vma, .-walk_vma
	.section	.rodata
.LC52:
	.string	"the_stack_data/165766317.c"
.LC53:
	.string	"start < index"
	.text
	.type	walk_task, @function
walk_task:
.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, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	rdx, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	QWORD PTR -48[rbp], rax
	mov	DWORD PTR -52[rbp], 0
	jmp	.L123
.L126:
	add	DWORD PTR -52[rbp], 1
	mov	eax, DWORD PTR nr_vmas[rip]
	cmp	DWORD PTR -52[rbp], eax
	jge	.L130
.L124:
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, pg_end[rip]
	mov	rax, QWORD PTR [rdx+rax]
	cmp	QWORD PTR -72[rbp], rax
	jnb	.L126
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, pg_start[rip]
	mov	rax, QWORD PTR [rdx+rax]
	cmp	QWORD PTR -48[rbp], rax
	jbe	.L131
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, pg_start[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	cmp	QWORD PTR -32[rbp], rax
	cmovnb	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, pg_end[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	cmp	QWORD PTR -8[rbp], rax
	cmovbe	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	cmp	rax, QWORD PTR -72[rbp]
	jb	.L128
	lea	rcx, __PRETTY_FUNCTION__.0[rip]
	mov	edx, 634
	lea	rsi, .LC52[rip]
	lea	rdi, .LC53[rip]
	call	__assert_fail@PLT
.L128:
	mov	rax, QWORD PTR -72[rbp]
	sub	rax, QWORD PTR -24[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	walk_vma
.L123:
	mov	rax, QWORD PTR -72[rbp]
	cmp	rax, QWORD PTR -48[rbp]
	jb	.L124
	jmp	.L122
.L130:
	nop
	jmp	.L122
.L131:
	nop
.L122:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	walk_task, .-walk_task
	.section	.rodata
.LC54:
	.string	"too many addr ranges\n"
	.text
	.type	add_addr_range, @function
add_addr_range:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	eax, DWORD PTR nr_addr_ranges[rip]
	cmp	eax, 1023
	jle	.L133
	lea	rdi, .LC54[rip]
	mov	eax, 0
	call	fatal
.L133:
	mov	eax, DWORD PTR nr_addr_ranges[rip]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rdx, opt_offset[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	not	rax
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	cmp	QWORD PTR -8[rbp], rax
	cmovbe	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR nr_addr_ranges[rip]
	movsx	rdx, edx
	lea	rcx, 0[0+rdx*8]
	lea	rdx, opt_size[rip]
	mov	QWORD PTR [rcx+rdx], rax
	mov	eax, DWORD PTR nr_addr_ranges[rip]
	add	eax, 1
	mov	DWORD PTR nr_addr_ranges[rip], eax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	add_addr_range, .-add_addr_range
	.type	walk_addr_ranges, @function
walk_addr_ranges:
.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, 16
	mov	esi, 0
	lea	rdi, .LC36[rip]
	call	checked_open
	mov	DWORD PTR kpageflags_fd[rip], eax
	mov	eax, DWORD PTR nr_addr_ranges[rip]
	test	eax, eax
	jne	.L135
	mov	rsi, -1
	mov	edi, 0
	call	add_addr_range
.L135:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L136
.L139:
	mov	eax, DWORD PTR opt_pid[rip]
	test	eax, eax
	jne	.L137
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, opt_size[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, opt_offset[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rsi, rax
	mov	edi, 0
	call	walk_pfn
	jmp	.L138
.L137:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, opt_size[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, opt_offset[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rsi, rdx
	mov	rdi, rax
	call	walk_task
.L138:
	add	DWORD PTR -4[rbp], 1
.L136:
	mov	eax, DWORD PTR nr_addr_ranges[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L139
	mov	eax, DWORD PTR kpageflags_fd[rip]
	mov	edi, eax
	call	close@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	walk_addr_ranges, .-walk_addr_ranges
	.section	.rodata
.LC55:
	.string	"(r)"
.LC56:
	.string	"(o)"
.LC57:
	.string	"   "
	.text
	.type	page_flag_type, @function
page_flag_type:
.LFB32:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	movabs	rax, 281470681743360
	and	rax, QWORD PTR -8[rbp]
	test	rax, rax
	je	.L141
	lea	rax, .LC55[rip]
	jmp	.L142
.L141:
	movabs	rax, -281474976710656
	and	rax, QWORD PTR -8[rbp]
	test	rax, rax
	je	.L143
	lea	rax, .LC56[rip]
	jmp	.L142
.L143:
	lea	rax, .LC57[rip]
.L142:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	page_flag_type, .-page_flag_type
	.section	.rodata
	.align 8
.LC58:
	.ascii	"page-types [options]\n            -r|--raw                  "
	.ascii	" Raw mode, for kernel developers\n            -d|--describe "
	.ascii	"flags        Describe flags\n            -a|--addr    addr-s"
	.ascii	"pec     Walk a range of pages\n            -b|--bits    bits"
	.ascii	"-spec     Walk pages with specified bits\n            -p|--p"
	.ascii	"id     pid           Walk process address space\n           "
	.ascii	" -l|--list                  Show page details in ranges\n   "
	.ascii	"         -L|--list-each             Show page details one by"
	.ascii	" one\n            -N|--no-summary            Don't show summ"
	.ascii	"ary info\n            -X|--hwpoison              hwpoison pa"
	.ascii	"ges\n            -x|--unpoison              unpoison pages\n"
	.ascii	"            -h|--help                  Show this usage messa"
	.ascii	"ge\nflags:\n            0x10                       bitfield "
	.ascii	"format, e.g.\n            anon                       bit-nam"
	.ascii	"e, e.g.\n            0x10,anon                  comma-separa"
	.ascii	"ted list, e.g.\naddr-spec:\n            N                   "
	.ascii	"       one page at offset N (unit: pages)\n            N+M  "
	.ascii	"                      pages range from N to N+M-1\n         "
	.ascii	"   N,M                        pages range from N to M-1\n   "
	.ascii	"         N,                         pages range from N to en"
	.ascii	"d\n            ,M                         pages range from 0"
	.ascii	" to M-1\nbits-spec:\n            bit1,b"
	.string	"it2                  (flags & (bit1|bit2)) != 0\n            bit1,bit2=bit1             (flags & (bit1|bit2)) == bit1\n            bit1,~bit2                 (flags & (bit1|bit2)) == bit1\n            =bit1,bit2                 flags == (bit1|bit2)\nbit-names:"
.LC59:
	.string	"%16s%s"
	.align 8
.LC60:
	.string	"\n                                   (r) raw mode bits  (o) overloaded bits"
	.text
	.type	usage, @function
usage:
.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
	lea	rdi, .LC58[rip]
	call	puts@PLT
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	jmp	.L145
.L148:
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flag_names[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	je	.L149
	mov	eax, DWORD PTR -8[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	mov	rdi, rax
	call	page_flag_type
	mov	rdx, rax
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, page_flag_names[rip]
	mov	rax, QWORD PTR [rcx+rax]
	add	rax, 2
	mov	rsi, rax
	lea	rdi, .LC59[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -4[rbp], 1
	cmp	DWORD PTR -4[rbp], 3
	jle	.L147
	mov	DWORD PTR -4[rbp], 0
	mov	edi, 10
	call	putchar@PLT
	jmp	.L147
.L149:
	nop
.L147:
	add	DWORD PTR -8[rbp], 1
.L145:
	mov	eax, DWORD PTR -8[rbp]
	cmp	eax, 51
	jbe	.L148
	lea	rdi, .LC60[rip]
	call	puts@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	usage, .-usage
	.section	.rodata
.LC61:
	.string	"invalid name or number: %s\n"
	.text
	.type	parse_number, @function
parse_number:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	mov	esi, 0
	mov	rdi, rax
	call	strtoll@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L151
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 48
	je	.L151
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC61[rip]
	mov	eax, 0
	call	fatal
.L151:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	parse_number, .-parse_number
	.section	.rodata
.LC62:
	.string	"/proc/%d/pagemap"
.LC63:
	.string	"/proc/%d/maps"
.LC64:
	.string	"r"
	.align 8
.LC65:
	.string	"%lx-%lx %c%c%c%c %llx %x:%x %lu"
.LC66:
	.string	"unexpected line: %s\n"
.LC67:
	.string	"too many VMAs\n"
	.text
	.type	parse_pid, @function
parse_pid:
.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, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 992
	mov	QWORD PTR -5080[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -5080[rbp]
	mov	rdi, rax
	call	parse_number
	mov	DWORD PTR opt_pid[rip], eax
	mov	edx, DWORD PTR opt_pid[rip]
	lea	rax, -5008[rbp]
	lea	rsi, .LC62[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rax, -5008[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	checked_open
	mov	DWORD PTR pagemap_fd[rip], eax
	mov	edx, DWORD PTR opt_pid[rip]
	lea	rax, -5008[rbp]
	lea	rsi, .LC63[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rax, -5008[rbp]
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -5016[rbp], rax
	cmp	QWORD PTR -5016[rbp], 0
	jne	.L155
	lea	rax, -5008[rbp]
	mov	rdi, rax
	call	perror@PLT
	mov	edi, 1
	call	exit@PLT
.L159:
	lea	r8, -5063[rbp]
	lea	rdi, -5064[rbp]
	lea	rcx, -5040[rbp]
	lea	rdx, -5048[rbp]
	lea	rax, -5008[rbp]
	lea	rsi, -5024[rbp]
	push	rsi
	lea	rsi, -5056[rbp]
	push	rsi
	lea	rsi, -5060[rbp]
	push	rsi
	lea	rsi, -5032[rbp]
	push	rsi
	lea	rsi, -5061[rbp]
	push	rsi
	lea	rsi, -5062[rbp]
	push	rsi
	mov	r9, r8
	mov	r8, rdi
	lea	rsi, .LC65[rip]
	mov	rdi, rax
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	add	rsp, 48
	mov	DWORD PTR -5052[rbp], eax
	cmp	DWORD PTR -5052[rbp], 9
	jg	.L156
	mov	rax, QWORD PTR stderr[rip]
	lea	rdx, -5008[rbp]
	lea	rsi, .LC66[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	jmp	.L155
.L156:
	mov	rax, QWORD PTR -5048[rbp]
	mov	edx, DWORD PTR page_size[rip]
	movsx	rdi, edx
	mov	ecx, DWORD PTR nr_vmas[rip]
	mov	edx, 0
	div	rdi
	mov	rsi, rax
	movsx	rax, ecx
	lea	rdx, 0[0+rax*8]
	lea	rax, pg_start[rip]
	mov	QWORD PTR [rdx+rax], rsi
	mov	rax, QWORD PTR -5040[rbp]
	mov	edx, DWORD PTR page_size[rip]
	movsx	rdi, edx
	mov	ecx, DWORD PTR nr_vmas[rip]
	mov	edx, 0
	div	rdi
	mov	rsi, rax
	movsx	rax, ecx
	lea	rdx, 0[0+rax*8]
	lea	rax, pg_end[rip]
	mov	QWORD PTR [rdx+rax], rsi
	mov	eax, DWORD PTR nr_vmas[rip]
	add	eax, 1
	mov	DWORD PTR nr_vmas[rip], eax
	mov	eax, DWORD PTR nr_vmas[rip]
	cmp	eax, 10239
	jle	.L155
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 14
	mov	esi, 1
	lea	rdi, .LC67[rip]
	call	fwrite@PLT
	jmp	.L158
.L155:
	mov	rdx, QWORD PTR -5016[rbp]
	lea	rax, -5008[rbp]
	mov	esi, 5000
	mov	rdi, rax
	call	fgets@PLT
	test	rax, rax
	jne	.L159
.L158:
	mov	rax, QWORD PTR -5016[rbp]
	mov	rdi, rax
	call	fclose@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L160
	call	__stack_chk_fail@PLT
.L160:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	parse_pid, .-parse_pid
	.type	parse_file, @function
parse_file:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	parse_file, .-parse_file
	.section	.rodata
.LC68:
	.string	"invalid range: %lu,%lu\n"
	.text
	.type	parse_addr_range, @function
parse_addr_range:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 44
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L163
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 43
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -8[rbp], rax
.L163:
	mov	rax, QWORD PTR -8[rbp]
	cmp	rax, QWORD PTR -40[rbp]
	jne	.L164
	mov	QWORD PTR -24[rbp], 0
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	mov	rdi, rax
	call	parse_number
	mov	QWORD PTR -16[rbp], rax
	jmp	.L165
.L164:
	cmp	QWORD PTR -8[rbp], 0
	je	.L166
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	parse_number
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L167
	mov	QWORD PTR -16[rbp], -1
	jmp	.L165
.L167:
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	mov	rdi, rax
	call	parse_number
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 44
	jne	.L165
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jnb	.L168
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC68[rip]
	mov	eax, 0
	call	fatal
.L168:
	mov	rax, QWORD PTR -24[rbp]
	sub	QWORD PTR -16[rbp], rax
	jmp	.L165
.L166:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	parse_number
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR -16[rbp], 1
.L165:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add_addr_range
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	parse_addr_range, .-parse_addr_range
	.section	.rodata
.LC69:
	.string	"too much bit filters\n"
	.text
	.type	add_bits_filter, @function
add_bits_filter:
.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	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	eax, DWORD PTR nr_bit_filters[rip]
	cmp	eax, 63
	jle	.L170
	lea	rdi, .LC69[rip]
	mov	eax, 0
	call	fatal
.L170:
	mov	eax, DWORD PTR nr_bit_filters[rip]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rdx, opt_mask[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	eax, DWORD PTR nr_bit_filters[rip]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rdx, opt_bits[rip]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rcx+rdx], rax
	mov	eax, DWORD PTR nr_bit_filters[rip]
	add	eax, 1
	mov	DWORD PTR nr_bit_filters[rip], eax
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	add_bits_filter, .-add_bits_filter
	.section	.rodata
.LC70:
	.string	"compound"
	.text
	.type	parse_flag_name, @function
parse_flag_name:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L172
	cmp	DWORD PTR -28[rbp], 0
	jne	.L173
.L172:
	mov	eax, 0
	jmp	.L174
.L173:
	cmp	DWORD PTR -28[rbp], 8
	jg	.L175
	mov	eax, DWORD PTR -28[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC70[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L175
	mov	eax, 98304
	jmp	.L174
.L175:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L176
.L179:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, page_flag_names[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	je	.L180
	mov	eax, DWORD PTR -28[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, page_flag_names[rip]
	mov	rax, QWORD PTR [rcx+rax]
	lea	rcx, 2[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L178
	mov	eax, DWORD PTR -4[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	jmp	.L174
.L180:
	nop
.L178:
	add	DWORD PTR -4[rbp], 1
.L176:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, 51
	jbe	.L179
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	parse_number
.L174:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	parse_flag_name, .-parse_flag_name
	.type	parse_flag_names, @function
parse_flag_names:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	QWORD PTR -8[rbp], 0
.L188:
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 44
	je	.L182
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 61
	je	.L182
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L183
.L182:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 126
	jne	.L184
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 126
	jne	.L185
	cmp	DWORD PTR -28[rbp], 0
	je	.L185
	add	QWORD PTR -24[rbp], 1
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L185
.L184:
	mov	rax, QWORD PTR -16[rbp]
	sub	rax, QWORD PTR -24[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	parse_flag_name
	or	QWORD PTR -8[rbp], rax
.L185:
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 44
	jne	.L191
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	mov	QWORD PTR -24[rbp], rax
.L183:
	add	QWORD PTR -16[rbp], 1
	jmp	.L188
.L191:
	nop
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	parse_flag_names, .-parse_flag_names
	.type	parse_bits_mask, @function
parse_bits_mask:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 61
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	cmp	rax, QWORD PTR -40[rbp]
	jne	.L193
	mov	QWORD PTR -24[rbp], -1
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	mov	esi, 0
	mov	rdi, rax
	call	parse_flag_names
	mov	QWORD PTR -16[rbp], rax
	jmp	.L194
.L193:
	cmp	QWORD PTR -8[rbp], 0
	je	.L195
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	parse_flag_names
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	mov	esi, 0
	mov	rdi, rax
	call	parse_flag_names
	mov	QWORD PTR -16[rbp], rax
	jmp	.L194
.L195:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 126
	mov	rdi, rax
	call	strchr@PLT
	test	rax, rax
	je	.L196
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 1
	mov	rdi, rax
	call	parse_flag_names
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	parse_flag_names
	mov	QWORD PTR -16[rbp], rax
	jmp	.L194
.L196:
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	parse_flag_names
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR -16[rbp], -1
.L194:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	add_bits_filter
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	parse_bits_mask, .-parse_bits_mask
	.section	.rodata
.LC71:
	.string	"0x%016llx\t%s\t%s\n"
	.text
	.type	describe_flags, @function
describe_flags:
.LFB42:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	parse_flag_names
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	page_flag_longname
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	page_flag_name
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, rbx
	mov	rsi, rax
	lea	rdi, .LC71[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	describe_flags, .-describe_flags
	.section	.rodata
.LC72:
	.string	"raw"
.LC73:
	.string	"pid"
.LC74:
	.string	"file"
.LC75:
	.string	"addr"
.LC76:
	.string	"bits"
.LC77:
	.string	"describe"
.LC78:
	.string	"list"
.LC79:
	.string	"list-each"
.LC80:
	.string	"no-summary"
.LC81:
	.string	"hwpoison"
.LC82:
	.string	"unpoison"
.LC83:
	.string	"help"
	.section	.data.rel.ro.local,"aw"
	.align 32
	.type	opts, @object
	.size	opts, 416
opts:
	.quad	.LC72
	.long	0
	.zero	4
	.quad	0
	.long	114
	.zero	4
	.quad	.LC73
	.long	1
	.zero	4
	.quad	0
	.long	112
	.zero	4
	.quad	.LC74
	.long	1
	.zero	4
	.quad	0
	.long	102
	.zero	4
	.quad	.LC75
	.long	1
	.zero	4
	.quad	0
	.long	97
	.zero	4
	.quad	.LC76
	.long	1
	.zero	4
	.quad	0
	.long	98
	.zero	4
	.quad	.LC77
	.long	1
	.zero	4
	.quad	0
	.long	100
	.zero	4
	.quad	.LC78
	.long	0
	.zero	4
	.quad	0
	.long	108
	.zero	4
	.quad	.LC79
	.long	0
	.zero	4
	.quad	0
	.long	76
	.zero	4
	.quad	.LC80
	.long	0
	.zero	4
	.quad	0
	.long	78
	.zero	4
	.quad	.LC81
	.long	0
	.zero	4
	.quad	0
	.long	88
	.zero	4
	.quad	.LC82
	.long	0
	.zero	4
	.quad	0
	.long	120
	.zero	4
	.quad	.LC83
	.long	0
	.zero	4
	.quad	0
	.long	104
	.zero	4
	.quad	0
	.long	0
	.zero	4
	.quad	0
	.long	0
	.zero	4
	.section	.rodata
.LC84:
	.string	"rp:f:a:b:d:lLNXxh"
.LC85:
	.string	"voffset\t"
.LC86:
	.string	"offset\tlen\tflags"
.LC87:
	.string	"offset\tflags"
.LC88:
	.string	"\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB43:
	.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
	call	getpagesize@PLT
	mov	DWORD PTR page_size[rip], eax
	jmp	.L199
.L214:
	mov	eax, DWORD PTR -4[rbp]
	sub	eax, 76
	cmp	eax, 44
	ja	.L200
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L202[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L202[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L202:
	.long	.L213-.L202
	.long	.L200-.L202
	.long	.L212-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L211-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L210-.L202
	.long	.L209-.L202
	.long	.L200-.L202
	.long	.L208-.L202
	.long	.L200-.L202
	.long	.L207-.L202
	.long	.L200-.L202
	.long	.L206-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L205-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L204-.L202
	.long	.L200-.L202
	.long	.L203-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L200-.L202
	.long	.L201-.L202
	.text
.L203:
	mov	DWORD PTR opt_raw[rip], 1
	jmp	.L199
.L204:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	parse_pid
	jmp	.L199
.L207:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	parse_file
	jmp	.L199
.L210:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	parse_addr_range
	jmp	.L199
.L209:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	parse_bits_mask
	jmp	.L199
.L208:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	describe_flags
	mov	edi, 0
	call	exit@PLT
.L205:
	mov	DWORD PTR opt_list[rip], 1
	jmp	.L199
.L213:
	mov	DWORD PTR opt_list[rip], 2
	jmp	.L199
.L212:
	mov	DWORD PTR opt_no_summary[rip], 1
	jmp	.L199
.L211:
	mov	DWORD PTR opt_hwpoison[rip], 1
	call	prepare_hwpoison_fd
	jmp	.L199
.L201:
	mov	DWORD PTR opt_unpoison[rip], 1
	call	prepare_hwpoison_fd
	jmp	.L199
.L206:
	call	usage
	mov	edi, 0
	call	exit@PLT
.L200:
	call	usage
	mov	edi, 1
	call	exit@PLT
.L199:
	mov	rsi, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	r8d, 0
	lea	rcx, opts[rip]
	lea	rdx, .LC84[rip]
	mov	edi, eax
	call	getopt_long@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], -1
	jne	.L214
	mov	eax, DWORD PTR opt_list[rip]
	test	eax, eax
	je	.L215
	mov	eax, DWORD PTR opt_pid[rip]
	test	eax, eax
	je	.L215
	lea	rdi, .LC85[rip]
	mov	eax, 0
	call	printf@PLT
.L215:
	mov	eax, DWORD PTR opt_list[rip]
	cmp	eax, 1
	jne	.L216
	lea	rdi, .LC86[rip]
	call	puts@PLT
.L216:
	mov	eax, DWORD PTR opt_list[rip]
	cmp	eax, 2
	jne	.L217
	lea	rdi, .LC87[rip]
	call	puts@PLT
.L217:
	call	walk_addr_ranges
	mov	eax, DWORD PTR opt_list[rip]
	cmp	eax, 1
	jne	.L218
	mov	edx, 0
	mov	esi, 0
	mov	edi, 0
	call	show_page_range
.L218:
	mov	eax, DWORD PTR opt_no_summary[rip]
	test	eax, eax
	je	.L219
	mov	eax, 0
	jmp	.L220
.L219:
	mov	eax, DWORD PTR opt_list[rip]
	test	eax, eax
	je	.L221
	lea	rdi, .LC88[rip]
	call	puts@PLT
.L221:
	call	show_summary
	mov	eax, 0
.L220:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	main, .-main
	.local	buf.6
	.comm	buf.6,65,32
	.local	buf.5
	.comm	buf.5,1024,32
	.local	flags0.4
	.comm	flags0.4,8,8
	.local	index.3
	.comm	index.3,8,8
	.local	count.2
	.comm	count.2,8,8
	.local	voff.1
	.comm	voff.1,8,8
	.section	.rodata
	.align 8
	.type	__PRETTY_FUNCTION__.0, @object
	.size	__PRETTY_FUNCTION__.0, 10
__PRETTY_FUNCTION__.0:
	.string	"walk_task"
	.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	"165766317.c"
	.text
	.section	.rodata
	.align	2
.LC0:
	.ascii	"L:locked\000"
	.align	2
.LC1:
	.ascii	"E:error\000"
	.align	2
.LC2:
	.ascii	"R:referenced\000"
	.align	2
.LC3:
	.ascii	"U:uptodate\000"
	.align	2
.LC4:
	.ascii	"D:dirty\000"
	.align	2
.LC5:
	.ascii	"l:lru\000"
	.align	2
.LC6:
	.ascii	"A:active\000"
	.align	2
.LC7:
	.ascii	"S:slab\000"
	.align	2
.LC8:
	.ascii	"W:writeback\000"
	.align	2
.LC9:
	.ascii	"I:reclaim\000"
	.align	2
.LC10:
	.ascii	"B:buddy\000"
	.align	2
.LC11:
	.ascii	"M:mmap\000"
	.align	2
.LC12:
	.ascii	"a:anonymous\000"
	.align	2
.LC13:
	.ascii	"s:swapcache\000"
	.align	2
.LC14:
	.ascii	"b:swapbacked\000"
	.align	2
.LC15:
	.ascii	"H:compound_head\000"
	.align	2
.LC16:
	.ascii	"T:compound_tail\000"
	.align	2
.LC17:
	.ascii	"G:huge\000"
	.align	2
.LC18:
	.ascii	"u:unevictable\000"
	.align	2
.LC19:
	.ascii	"X:hwpoison\000"
	.align	2
.LC20:
	.ascii	"n:nopage\000"
	.align	2
.LC21:
	.ascii	"x:ksm\000"
	.align	2
.LC22:
	.ascii	"r:reserved\000"
	.align	2
.LC23:
	.ascii	"m:mlocked\000"
	.align	2
.LC24:
	.ascii	"d:mappedtodisk\000"
	.align	2
.LC25:
	.ascii	"P:private\000"
	.align	2
.LC26:
	.ascii	"p:private_2\000"
	.align	2
.LC27:
	.ascii	"O:owner_private\000"
	.align	2
.LC28:
	.ascii	"h:arch\000"
	.align	2
.LC29:
	.ascii	"c:uncached\000"
	.align	2
.LC30:
	.ascii	"I:readahead\000"
	.align	2
.LC31:
	.ascii	"P:slob_free\000"
	.align	2
.LC32:
	.ascii	"A:slub_frozen\000"
	.align	2
.LC33:
	.ascii	"E:slub_debug\000"
	.data
	.align	2
	.type	page_flag_names, %object
	.size	page_flag_names, 208
page_flag_names:
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.space	40
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.space	32
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.local	opt_raw
	.comm	opt_raw,4,4
	.local	opt_list
	.comm	opt_list,4,4
	.local	opt_no_summary
	.comm	opt_no_summary,4,4
	.local	opt_pid
	.comm	opt_pid,4,4
	.local	nr_addr_ranges
	.comm	nr_addr_ranges,4,4
	.local	opt_offset
	.comm	opt_offset,4096,4
	.local	opt_size
	.comm	opt_size,4096,4
	.local	nr_vmas
	.comm	nr_vmas,4,4
	.local	pg_start
	.comm	pg_start,40960,4
	.local	pg_end
	.comm	pg_end,40960,4
	.local	nr_bit_filters
	.comm	nr_bit_filters,4,4
	.local	opt_mask
	.comm	opt_mask,512,8
	.local	opt_bits
	.comm	opt_bits,512,8
	.local	page_size
	.comm	page_size,4,4
	.local	pagemap_fd
	.comm	pagemap_fd,4,4
	.local	kpageflags_fd
	.comm	kpageflags_fd,4,4
	.local	opt_hwpoison
	.comm	opt_hwpoison,4,4
	.local	opt_unpoison
	.comm	opt_unpoison,4,4
	.section	.rodata
	.align	2
	.type	hwpoison_debug_fs, %object
	.size	hwpoison_debug_fs, 16
hwpoison_debug_fs:
	.ascii	"/debug/hwpoison\000"
	.local	hwpoison_inject_fd
	.comm	hwpoison_inject_fd,4,4
	.local	hwpoison_forget_fd
	.comm	hwpoison_forget_fd,4,4
	.local	total_pages
	.comm	total_pages,4,4
	.local	nr_pages
	.comm	nr_pages,32768,4
	.local	page_flags
	.comm	page_flags,65536,8
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	pages2mb, %function
pages2mb:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, .L3
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r3, [fp, #-8]
	mul	r3, r2, r3
	lsr	r3, r3, #20
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L4:
	.align	2
.L3:
	.word	page_size
	.size	pages2mb, .-pages2mb
	.section	.rodata
	.align	2
.LC34:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	fatal, %function
fatal:
	@ args = 4, pretend = 16, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r0, r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, [fp, #4]
	str	r3, [fp, #-16]
	ldr	r3, .L7
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	add	r3, fp, #8
	str	r3, [fp, #-12]
	ldr	r3, .L7+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	vfprintf
	mov	r0, #1
	bl	exit
.L8:
	.align	2
.L7:
	.word	.LC34
	.word	stderr
	.size	fatal, .-fatal
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	checked_open, %function
checked_open:
	@ 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	open
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L10
	ldr	r0, [fp, #-16]
	bl	perror
	mov	r0, #1
	bl	exit
.L10:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	checked_open, .-checked_open
	.section	.rodata
	.align	2
.LC35:
	.ascii	"index overflow: %lu\012\000"
	.align	2
.LC36:
	.ascii	"partial read: %lu bytes\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_u64_read, %function
do_u64_read:
	@ 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	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmn	r3, #-536870911
	bls	.L13
	ldr	r1, [fp, #-28]
	ldr	r0, .L18
	bl	fatal
.L13:
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #3
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	lseek
	mov	r3, r0
	cmp	r3, #0
	bge	.L14
	ldr	r0, [fp, #-20]
	bl	perror
	mov	r0, #1
	bl	exit
.L14:
	ldr	r3, [fp, #4]
	lsl	r3, r3, #3
	mov	r2, r3
	ldr	r1, [fp, #-24]
	ldr	r0, [fp, #-16]
	bl	read
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L15
	ldr	r0, [fp, #-20]
	bl	perror
	mov	r0, #1
	bl	exit
.L15:
	ldr	r3, [fp, #-8]
	and	r3, r3, #7
	cmp	r3, #0
	beq	.L16
	ldr	r1, [fp, #-8]
	ldr	r0, .L18+4
	bl	fatal
.L16:
	ldr	r3, [fp, #-8]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L19:
	.align	2
.L18:
	.word	.LC35
	.word	.LC36
	.size	do_u64_read, .-do_u64_read
	.section	.rodata
	.align	2
.LC37:
	.ascii	"/proc/kpageflags\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	kpageflags_read, %function
kpageflags_read:
	@ 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, .L22
	ldr	r0, [r3]
	ldr	r3, [fp, #-16]
	str	r3, [sp]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	ldr	r1, .L22+4
	bl	do_u64_read
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L23:
	.align	2
.L22:
	.word	kpageflags_fd
	.word	.LC37
	.size	kpageflags_read, .-kpageflags_read
	.section	.rodata
	.align	2
.LC38:
	.ascii	"/proc/pid/pagemap\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	pagemap_read, %function
pagemap_read:
	@ 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, .L26
	ldr	r0, [r3]
	ldr	r3, [fp, #-16]
	str	r3, [sp]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	ldr	r1, .L26+4
	bl	do_u64_read
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L27:
	.align	2
.L26:
	.word	pagemap_fd
	.word	.LC38
	.size	pagemap_read, .-pagemap_read
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	pagemap_pfn, %function
pagemap_pfn:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	cmp	r2, #0
	sbcs	r3, r3, #0
	bge	.L29
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-8]
	b	.L30
.L29:
	mov	r3, #0
	str	r3, [fp, #-8]
.L30:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	pagemap_pfn, .-pagemap_pfn
	.section	.rodata
	.align	2
.LC39:
	.ascii	"unknown flag bit %d\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	page_flag_name, %function
page_flag_name:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #24
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L33
.L39:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-24]
	rsb	ip, r1, #32
	sub	r0, r1, #32
	lsr	r4, r2, r1
	orr	r4, r4, r3, lsl ip
	orr	r4, r4, r3, lsr r0
	lsr	r5, r3, r1
	mov	r3, r4
	and	r3, r3, #1
	str	r3, [fp, #-16]
	ldr	r2, .L42
	ldr	r3, [fp, #-24]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	bne	.L34
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L41
	ldr	r1, [fp, #-24]
	ldr	r0, .L42+4
	bl	fatal
	b	.L41
.L34:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L37
	ldr	r2, .L42
	ldr	r3, [fp, #-24]
	ldr	r3, [r2, r3, lsl #2]
	ldrb	r1, [r3]	@ zero_extendqisi2
	b	.L38
.L37:
	mov	r1, #95
.L38:
	ldr	r3, [fp, #-20]
	add	r2, r3, #1
	str	r2, [fp, #-20]
	ldr	r2, .L42+8
	strb	r1, [r2, r3]
	b	.L36
.L41:
	nop
.L36:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L33:
	ldr	r3, [fp, #-24]
	cmp	r3, #51
	bls	.L39
	ldr	r3, .L42+8
	mov	r0, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L43:
	.align	2
.L42:
	.word	page_flag_names
	.word	.LC39
	.word	buf.6166
	.size	page_flag_name, .-page_flag_name
	.section	.rodata
	.align	2
.LC40:
	.ascii	"%s,\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	page_flag_longname, %function
page_flag_longname:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L45
.L48:
	ldr	r2, .L52
	ldr	r3, [fp, #-28]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	beq	.L51
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-28]
	rsb	ip, r1, #32
	sub	r0, r1, #32
	lsr	r4, r2, r1
	orr	r4, r4, r3, lsl ip
	orr	r4, r4, r3, lsr r0
	lsr	r5, r3, r1
	mov	r2, #1
	mov	r3, #0
	and	r6, r4, r2
	and	r7, r5, r3
	orrs	r3, r6, r7
	beq	.L47
	ldr	r3, [fp, #-24]
	ldr	r2, .L52+4
	add	r0, r3, r2
	ldr	r3, [fp, #-24]
	rsb	r1, r3, #1024
	ldr	r2, .L52
	ldr	r3, [fp, #-28]
	ldr	r3, [r2, r3, lsl #2]
	add	r3, r3, #2
	ldr	r2, .L52+8
	bl	snprintf
	mov	r2, r0
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	b	.L47
.L51:
	nop
.L47:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L45:
	ldr	r3, [fp, #-28]
	cmp	r3, #51
	bls	.L48
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L49
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
.L49:
	ldr	r2, .L52+4
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, .L52+4
	mov	r0, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L53:
	.align	2
.L52:
	.word	page_flag_names
	.word	buf.6177
	.word	.LC40
	.size	page_flag_longname, .-page_flag_longname
	.section	.rodata
	.align	2
.LC41:
	.ascii	"%lx\011\000"
	.align	2
.LC42:
	.ascii	"%lx\011%lx\011%s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	show_page_range, %function
show_page_range:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-28]
	str	r3, [fp, #-24]
	ldr	r3, .L60
	ldmia	r3, {r2-r3}
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L55
	ldr	r3, .L60+4
	ldr	r2, [r3]
	ldr	r3, .L60+8
	ldr	r3, [r3]
	add	r3, r2, r3
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	bne	.L55
	ldr	r3, .L60+12
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L56
	ldr	r3, .L60+16
	ldr	r2, [r3]
	ldr	r3, .L60+8
	ldr	r3, [r3]
	add	r3, r2, r3
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bne	.L55
.L56:
	ldr	r3, .L60+8
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L60+8
	str	r3, [r2]
	b	.L54
.L55:
	ldr	r3, .L60+8
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L58
	ldr	r3, .L60+12
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L59
	ldr	r3, .L60+16
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L60+20
	bl	printf
.L59:
	ldr	r3, .L60+4
	ldr	r4, [r3]
	ldr	r3, .L60+8
	ldr	r5, [r3]
	ldr	r3, .L60
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	page_flag_name
	mov	r3, r0
	mov	r2, r5
	mov	r1, r4
	ldr	r0, .L60+24
	bl	printf
.L58:
	ldr	r1, .L60
	sub	r3, fp, #28
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r2, .L60+4
	ldr	r3, [fp, #-20]
	str	r3, [r2]
	ldr	r2, .L60+16
	ldr	r3, [fp, #-16]
	str	r3, [r2]
	ldr	r3, .L60+8
	mov	r2, #1
	str	r2, [r3]
.L54:
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L61:
	.align	2
.L60:
	.word	flags0.6189
	.word	index.6191
	.word	count.6192
	.word	opt_pid
	.word	voff.6190
	.word	.LC41
	.word	.LC42
	.size	show_page_range, .-show_page_range
	.section	.rodata
	.align	2
.LC43:
	.ascii	"%lx\011%s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	show_page, %function
show_page:
	@ 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, .L64
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L63
	ldr	r1, [fp, #-8]
	ldr	r0, .L64+4
	bl	printf
.L63:
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	page_flag_name
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-12]
	ldr	r0, .L64+8
	bl	printf
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L65:
	.align	2
.L64:
	.word	opt_pid
	.word	.LC41
	.word	.LC43
	.size	show_page, .-show_page
	.section	.rodata
	.align	2
.LC44:
	.ascii	"             flags\011page-count       MB  symbolic"
	.ascii	"-flags\011\011\011long-symbolic-flags\000"
	.align	2
.LC45:
	.ascii	"0x%016llx\011%10lu %8lu  %s\011%s\012\000"
	.align	2
.LC46:
	.ascii	"             total\011%10lu %8lu\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	show_summary, %function
show_summary:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, fp, lr}
	add	fp, sp, #24
	sub	sp, sp, #28
	ldr	r0, .L70
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L67
.L69:
	ldr	r2, .L70+4
	ldr	r3, [fp, #-32]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	beq	.L68
	ldr	r2, .L70+8
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r4-r5}
	ldr	r2, .L70+4
	ldr	r3, [fp, #-32]
	ldr	r6, [r2, r3, lsl #2]
	ldr	r2, .L70+4
	ldr	r3, [fp, #-32]
	ldr	r3, [r2, r3, lsl #2]
	mov	r0, r3
	bl	pages2mb
	mov	r7, r0
	ldr	r2, .L70+8
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	page_flag_name
	mov	r8, r0
	ldr	r2, .L70+8
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	bl	page_flag_longname
	mov	r3, r0
	str	r3, [sp, #12]
	str	r8, [sp, #8]
	str	r7, [sp, #4]
	str	r6, [sp]
	mov	r2, r4
	mov	r3, r5
	ldr	r0, .L70+12
	bl	printf
.L68:
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L67:
	ldr	r3, [fp, #-32]
	cmp	r3, #8192
	bcc	.L69
	ldr	r3, .L70+16
	ldr	r4, [r3]
	ldr	r3, .L70+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	pages2mb
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L70+20
	bl	printf
	nop
	sub	sp, fp, #24
	@ sp needed
	pop	{r4, r5, r6, r7, r8, fp, pc}
.L71:
	.align	2
.L70:
	.word	.LC44
	.word	nr_pages
	.word	page_flags
	.word	.LC45
	.word	total_pages
	.word	.LC46
	.size	show_summary, .-show_summary
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	bit_mask_ok, %function
bit_mask_ok:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, fp}
	add	fp, sp, #16
	sub	sp, sp, #20
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	mov	r1, #0
	str	r1, [fp, #-24]
	b	.L73
.L77:
	ldr	r0, .L78
	ldr	r1, [fp, #-24]
	lsl	r1, r1, #3
	add	r1, r0, r1
	ldmia	r1, {r0-r1}
	mvn	r6, #0
	mvn	r7, #0
	cmp	r1, r7
	cmpeq	r0, r6
	bne	.L74
	ldr	r0, .L78+4
	ldr	r1, [fp, #-24]
	lsl	r1, r1, #3
	add	r1, r0, r1
	ldmia	r1, {r6-r7}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	and	r2, r6, r0
	and	r3, r7, r1
	orrs	r1, r2, r3
	bne	.L75
	mov	r3, #0
	b	.L76
.L74:
	ldr	r0, .L78+4
	ldr	r1, [fp, #-24]
	lsl	r1, r1, #3
	add	r1, r0, r1
	ldmia	r1, {r6-r7}
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	and	r4, r6, r0
	and	r5, r7, r1
	ldr	r0, .L78
	ldr	r1, [fp, #-24]
	lsl	r1, r1, #3
	add	r1, r0, r1
	ldmia	r1, {r0-r1}
	cmp	r5, r1
	cmpeq	r4, r0
	beq	.L75
	mov	r3, #0
	b	.L76
.L75:
	ldr	r1, [fp, #-24]
	add	r1, r1, #1
	str	r1, [fp, #-24]
.L73:
	ldr	r1, .L78+8
	ldr	r1, [r1]
	ldr	r0, [fp, #-24]
	cmp	r0, r1
	blt	.L77
	mov	r3, #1
.L76:
	mov	r0, r3
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, r7, fp}
	bx	lr
.L79:
	.align	2
.L78:
	.word	opt_bits
	.word	opt_mask
	.word	nr_bit_filters
	.size	bit_mask_ok, .-bit_mask_ok
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	expand_overloaded_flags, %function
expand_overloaded_flags:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, r8, r9, fp}
	add	fp, sp, #24
	sub	sp, sp, #60
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mov	r2, #128
	mov	r3, #0
	and	r4, r0, r2
	and	r5, r1, r3
	orrs	r3, r4, r5
	beq	.L81
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mov	r2, #0
	mov	r3, #8
	and	r6, r0, r2
	and	r7, r1, r3
	orrs	r3, r6, r7
	beq	.L82
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mov	r2, #0
	ldr	r3, .L86
	eor	r8, r0, r2
	eor	r9, r1, r3
	str	r8, [fp, #-36]
	str	r9, [fp, #-32]
.L82:
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mov	r2, #64
	mov	r3, #0
	and	ip, r0, r2
	str	ip, [fp, #-44]
	and	r3, r1, r3
	str	r3, [fp, #-40]
	sub	r4, fp, #44
	ldmia	r4, {r3-r4}
	orrs	r3, r3, r4
	beq	.L83
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	eor	r1, r2, #64
	str	r1, [fp, #-68]
	eor	r3, r3, #262144
	str	r3, [fp, #-64]
	sub	r4, fp, #68
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-36]
	str	r4, [fp, #-32]
.L83:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, #2
	mov	r1, #0
	and	ip, r2, r0
	str	ip, [fp, #-52]
	and	r3, r3, r1
	str	r3, [fp, #-48]
	sub	r4, fp, #52
	ldmia	r4, {r3-r4}
	orrs	r3, r3, r4
	beq	.L81
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	eor	r1, r2, #2
	str	r1, [fp, #-76]
	eor	r3, r3, #524288
	str	r3, [fp, #-72]
	sub	r4, fp, #76
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-36]
	str	r4, [fp, #-32]
.L81:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, #768
	mov	r1, #0
	and	ip, r2, r0
	str	ip, [fp, #-60]
	and	r3, r3, r1
	str	r3, [fp, #-56]
	sub	r4, fp, #60
	ldmia	r4, {r3-r4}
	cmp	r4, #0
	cmpeq	r3, #512
	bne	.L84
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	eor	r1, r2, #512
	str	r1, [fp, #-84]
	eor	r3, r3, #65536
	str	r3, [fp, #-80]
	sub	r4, fp, #84
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-36]
	str	r4, [fp, #-32]
.L84:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #24
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp}
	bx	lr
.L87:
	.align	2
.L86:
	.word	131080
	.size	expand_overloaded_flags, .-expand_overloaded_flags
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	well_known_flags, %function
well_known_flags:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, r8, r9, fp}
	add	fp, sp, #24
	sub	sp, sp, #20
	str	r0, [fp, #-36]
	str	r1, [fp, #-32]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mvn	r2, #0
	ldr	r3, .L91
	mov	ip, r2
	and	r8, r0, ip
	and	r9, r1, r3
	str	r8, [fp, #-36]
	str	r9, [fp, #-32]
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mov	r8, #98304
	mov	r9, #0
	and	r6, r0, r8
	and	r7, r1, r9
	orrs	r3, r6, r7
	beq	.L89
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mov	r6, #131072
	mov	r7, #0
	and	r4, r0, r6
	and	r5, r1, r7
	orrs	r3, r4, r5
	bne	.L89
	sub	r1, fp, #36
	ldmia	r1, {r0-r1}
	mvn	r4, #98304
	mvn	r5, #0
	and	r3, r0, r4
	str	r3, [fp, #-44]
	and	r3, r1, r5
	str	r3, [fp, #-40]
	sub	r4, fp, #44
	ldmia	r4, {r3-r4}
	str	r3, [fp, #-36]
	str	r4, [fp, #-32]
.L89:
	sub	r3, fp, #36
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #24
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, fp}
	bx	lr
.L92:
	.align	2
.L91:
	.word	-65536
	.size	well_known_flags, .-well_known_flags
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	kpageflags_flags, %function
kpageflags_flags:
	@ 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, #-12]
	str	r1, [fp, #-8]
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	expand_overloaded_flags
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	ldr	r3, .L96
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L94
	sub	r1, fp, #12
	ldmia	r1, {r0-r1}
	bl	well_known_flags
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
.L94:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L97:
	.align	2
.L96:
	.word	opt_raw
	.size	kpageflags_flags, .-kpageflags_flags
	.section	.rodata
	.align	2
.LC47:
	.ascii	"%s/corrupt-pfn\000"
	.align	2
.LC48:
	.ascii	"%s/unpoison-pfn\000"
	.align	2
.LC49:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	prepare_hwpoison_fd, %function
prepare_hwpoison_fd:
	@ args = 0, pretend = 0, frame = 104
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #104
	ldr	r3, .L103
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L103+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L99
	ldr	r3, .L103+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L99
	sub	r3, fp, #108
	ldr	r2, .L103+12
	ldr	r1, .L103+16
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #108
	mov	r1, #1
	mov	r0, r3
	bl	checked_open
	mov	r3, r0
	ldr	r2, .L103+8
	str	r3, [r2]
.L99:
	ldr	r3, .L103+20
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L102
	ldr	r3, .L103+24
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L102
	sub	r3, fp, #108
	ldr	r2, .L103+12
	ldr	r1, .L103+28
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #108
	mov	r1, #1
	mov	r0, r3
	bl	checked_open
	mov	r3, r0
	ldr	r2, .L103+24
	str	r3, [r2]
.L102:
	nop
	ldr	r3, .L103
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L101
	bl	__stack_chk_fail
.L101:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L104:
	.align	2
.L103:
	.word	.LC49
	.word	opt_hwpoison
	.word	hwpoison_inject_fd
	.word	hwpoison_debug_fs
	.word	.LC47
	.word	opt_unpoison
	.word	hwpoison_forget_fd
	.word	.LC48
	.size	prepare_hwpoison_fd, .-prepare_hwpoison_fd
	.section	.rodata
	.align	2
.LC50:
	.ascii	"0x%lx\012\000"
	.align	2
.LC51:
	.ascii	"hwpoison inject\000"
	.align	2
.LC52:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	hwpoison_page, %function
hwpoison_page:
	@ args = 0, pretend = 0, frame = 120
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #120
	str	r0, [fp, #-120]
	ldr	r3, .L110
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #108
	ldr	r2, [fp, #-120]
	ldr	r1, .L110+4
	mov	r0, r3
	bl	sprintf
	str	r0, [fp, #-112]
	ldr	r3, .L110+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-112]
	sub	r1, fp, #108
	mov	r0, r3
	bl	write
	str	r0, [fp, #-112]
	ldr	r3, [fp, #-112]
	cmp	r3, #0
	bge	.L106
	ldr	r0, .L110+12
	bl	perror
	ldr	r3, [fp, #-112]
	b	.L108
.L106:
	mov	r3, #0
.L108:
	ldr	r2, .L110
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L109
	bl	__stack_chk_fail
.L109:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L111:
	.align	2
.L110:
	.word	.LC52
	.word	.LC50
	.word	hwpoison_inject_fd
	.word	.LC51
	.size	hwpoison_page, .-hwpoison_page
	.section	.rodata
	.align	2
.LC53:
	.ascii	"hwpoison forget\000"
	.align	2
.LC54:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	unpoison_page, %function
unpoison_page:
	@ args = 0, pretend = 0, frame = 120
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #120
	str	r0, [fp, #-120]
	ldr	r3, .L117
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #108
	ldr	r2, [fp, #-120]
	ldr	r1, .L117+4
	mov	r0, r3
	bl	sprintf
	str	r0, [fp, #-112]
	ldr	r3, .L117+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-112]
	sub	r1, fp, #108
	mov	r0, r3
	bl	write
	str	r0, [fp, #-112]
	ldr	r3, [fp, #-112]
	cmp	r3, #0
	bge	.L113
	ldr	r0, .L117+12
	bl	perror
	ldr	r3, [fp, #-112]
	b	.L115
.L113:
	mov	r3, #0
.L115:
	ldr	r2, .L117
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L116
	bl	__stack_chk_fail
.L116:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L118:
	.align	2
.L117:
	.word	.LC54
	.word	.LC50
	.word	hwpoison_forget_fd
	.word	.LC53
	.size	unpoison_page, .-unpoison_page
	.section	.rodata
	.align	2
.LC55:
	.ascii	"hash table full: bump up HASH_SHIFT?\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	hash_slot, %function
hash_slot:
	@ 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, #-20]
	str	r1, [fp, #-16]
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #19
	lsr	r3, r3, #19
	str	r3, [fp, #-12]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L120
	mov	r3, #0
	b	.L121
.L120:
	mov	r3, #1
	str	r3, [fp, #-8]
	b	.L122
.L127:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L123
	ldr	r3, [fp, #-12]
	cmp	r3, #8192
	bcc	.L124
.L123:
	mov	r3, #1
	str	r3, [fp, #-12]
.L124:
	ldr	r2, .L128
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L125
	ldr	r2, .L128
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r1, r2, r3
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, [fp, #-12]
	b	.L121
.L125:
	ldr	r2, .L128
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	cmp	r1, r3
	cmpeq	r0, r2
	bne	.L126
	ldr	r3, [fp, #-12]
	b	.L121
.L126:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L122:
	ldr	r3, [fp, #-8]
	cmp	r3, #8192
	bcc	.L127
	ldr	r0, .L128+4
	bl	fatal
	mov	r0, #1
	bl	exit
.L121:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L129:
	.align	2
.L128:
	.word	page_flags
	.word	.LC55
	.size	hash_slot, .-hash_slot
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_page, %function
add_page:
	@ 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, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	kpageflags_flags
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	bit_mask_ok
	mov	r3, r0
	cmp	r3, #0
	beq	.L137
	ldr	r3, .L138
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L133
	ldr	r0, [fp, #-12]
	bl	hwpoison_page
.L133:
	ldr	r3, .L138+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L134
	ldr	r0, [fp, #-12]
	bl	unpoison_page
.L134:
	ldr	r3, .L138+8
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L135
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	show_page_range
	b	.L136
.L135:
	ldr	r3, .L138+8
	ldr	r3, [r3]
	cmp	r3, #2
	bne	.L136
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	show_page
.L136:
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	hash_slot
	mov	r3, r0
	ldr	r2, .L138+12
	ldr	r2, [r2, r3, lsl #2]
	add	r2, r2, #1
	ldr	r1, .L138+12
	str	r2, [r1, r3, lsl #2]
	ldr	r3, .L138+16
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L138+16
	str	r3, [r2]
	b	.L130
.L137:
	nop
.L130:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L139:
	.align	2
.L138:
	.word	opt_hwpoison
	.word	opt_unpoison
	.word	opt_list
	.word	nr_pages
	.word	total_pages
	.size	add_page, .-add_page
	.section	.rodata
	.align	2
.LC56:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	walk_pfn, %function
walk_pfn:
	@ args = 0, pretend = 0, frame = 524336
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #524288
	sub	sp, sp, #48
	sub	r3, fp, #524288
	sub	r3, r3, #4
	str	r0, [r3, #-36]
	sub	r3, fp, #524288
	sub	r3, r3, #4
	str	r1, [r3, #-40]
	sub	r3, fp, #524288
	sub	r3, r3, #4
	str	r2, [r3, #-44]
	ldr	r3, .L149
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	b	.L141
.L146:
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r3, [r3, #-44]
	str	r3, [r2, #-24]
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	mov	r3, #65536
	str	r3, [r2, #-20]
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r2, [r2, #-20]
	ldr	r3, [r3, #-24]
	cmp	r2, r3
	movcc	r3, r2
	movcs	r3, r3
	sub	r2, fp, #524288
	sub	r2, r2, #4
	str	r3, [r2, #-16]
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r1, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	sub	r3, r3, #8
	ldr	r2, [r2, #-16]
	ldr	r1, [r1, #-40]
	mov	r0, r3
	bl	kpageflags_read
	mov	r3, r0
	sub	r2, fp, #524288
	sub	r2, r2, #4
	str	r3, [r2, #-12]
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r3, [r3, #-12]
	cmp	r3, #0
	beq	.L148
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #-28]
	b	.L144
.L145:
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r2, [r2, #-36]
	ldr	r3, [r3, #-28]
	add	r0, r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r2, [r2, #-40]
	ldr	r3, [r3, #-28]
	add	r1, r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r3, [r3, #-28]
	lsl	r3, r3, #3
	add	r3, r2, r3
	sub	r3, r3, #8
	ldmia	r3, {r2-r3}
	bl	add_page
	sub	r3, fp, #524288
	sub	r3, r3, #4
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r3, [r3, #-28]
	add	r3, r3, #1
	str	r3, [r2, #-28]
.L144:
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r3, [r3, #-12]
	sub	r2, fp, #524288
	sub	r2, r2, #4
	ldr	r2, [r2, #-28]
	cmp	r2, r3
	bcc	.L145
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r3, [r3, #-12]
	sub	r2, fp, #524288
	sub	r2, r2, #4
	mov	r1, r2
	sub	r2, fp, #524288
	sub	r2, r2, #4
	ldr	r2, [r2, #-40]
	add	r3, r2, r3
	str	r3, [r1, #-40]
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r3, [r3, #-12]
	sub	r2, fp, #524288
	sub	r2, r2, #4
	mov	r1, r2
	sub	r2, fp, #524288
	sub	r2, r2, #4
	ldr	r2, [r2, #-44]
	sub	r3, r2, r3
	str	r3, [r1, #-44]
.L141:
	sub	r3, fp, #524288
	sub	r3, r3, #4
	ldr	r3, [r3, #-44]
	cmp	r3, #0
	bne	.L146
	b	.L143
.L148:
	nop
.L143:
	nop
	ldr	r3, .L149
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L147
	bl	__stack_chk_fail
.L147:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L150:
	.align	2
.L149:
	.word	.LC56
	.size	walk_pfn, .-walk_pfn
	.section	.rodata
	.align	2
.LC57:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	walk_vma, %function
walk_vma:
	@ args = 0, pretend = 0, frame = 524328
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #524288
	sub	sp, sp, #44
	sub	r3, fp, #524288
	sub	r3, r3, #12
	str	r0, [r3, #-36]
	sub	r3, fp, #524288
	sub	r3, r3, #12
	str	r1, [r3, #-40]
	ldr	r3, .L161
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	b	.L152
.L158:
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r3, [r3, #-40]
	str	r3, [r2, #-28]
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	mov	r3, #65536
	str	r3, [r2, #-24]
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r2, [r2, #-24]
	ldr	r3, [r3, #-28]
	cmp	r2, r3
	movcc	r3, r2
	movcs	r3, r3
	sub	r2, fp, #524288
	sub	r2, r2, #12
	str	r3, [r2, #-20]
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r4, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r1, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	sub	r3, r3, #8
	ldr	r2, [r2, #-20]
	ldr	r1, [r1, #-36]
	mov	r0, r3
	bl	pagemap_read
	str	r0, [r4, #-16]
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r3, [r3, #-16]
	cmp	r3, #0
	beq	.L160
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2, #-32]
	b	.L155
.L157:
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r3, [r3, #-32]
	lsl	r3, r3, #3
	add	r3, r2, r3
	sub	r3, r3, #8
	ldmia	r3, {r2-r3}
	sub	r1, fp, #524288
	sub	r1, r1, #12
	mov	r4, r1
	mov	r0, r2
	mov	r1, r3
	bl	pagemap_pfn
	str	r0, [r4, #-12]
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r3, [r3, #-12]
	cmp	r3, #0
	beq	.L156
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r2, [r2, #-36]
	ldr	r3, [r3, #-32]
	add	r3, r2, r3
	sub	r2, fp, #524288
	sub	r2, r2, #12
	mov	r1, r2
	mov	r2, #1
	ldr	r1, [r1, #-12]
	mov	r0, r3
	bl	walk_pfn
.L156:
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r3, [r3, #-32]
	add	r3, r3, #1
	str	r3, [r2, #-32]
.L155:
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r2, [r2, #-32]
	ldr	r3, [r3, #-16]
	cmp	r2, r3
	bcc	.L157
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r1, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r2, [r2, #-36]
	ldr	r3, [r3, #-16]
	add	r3, r2, r3
	str	r3, [r1, #-36]
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r1, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r2, [r2, #-40]
	ldr	r3, [r3, #-16]
	sub	r3, r2, r3
	str	r3, [r1, #-40]
.L152:
	sub	r3, fp, #524288
	sub	r3, r3, #12
	ldr	r3, [r3, #-40]
	cmp	r3, #0
	bne	.L158
	b	.L154
.L160:
	nop
.L154:
	nop
	ldr	r3, .L161
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L159
	bl	__stack_chk_fail
.L159:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L162:
	.align	2
.L161:
	.word	.LC57
	.size	walk_vma, .-walk_vma
	.section	.rodata
	.align	2
.LC58:
	.ascii	"the_stack_data/165766317.c\000"
	.align	2
.LC59:
	.ascii	"start < index\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	walk_task, %function
walk_task:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L164
.L167:
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, .L173
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	cmp	r2, r3
	bge	.L171
.L165:
	ldr	r2, .L173+4
	ldr	r3, [fp, #-32]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r2, [fp, #-40]
	cmp	r2, r3
	bcs	.L167
	ldr	r2, .L173+8
	ldr	r3, [fp, #-32]
	ldr	r3, [r2, r3, lsl #2]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bls	.L172
	ldr	r2, .L173+8
	ldr	r3, [fp, #-32]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	movcs	r3, r2
	movcc	r3, r3
	str	r3, [fp, #-16]
	ldr	r2, .L173+4
	ldr	r3, [fp, #-32]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	movcc	r3, r2
	movcs	r3, r3
	str	r3, [fp, #-40]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-40]
	cmp	r2, r3
	bcc	.L169
	ldr	r3, .L173+12
	ldr	r2, .L173+16
	ldr	r1, .L173+20
	ldr	r0, .L173+24
	bl	__assert_fail
.L169:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	walk_vma
.L164:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	bcc	.L165
	b	.L163
.L171:
	nop
	b	.L163
.L172:
	nop
.L163:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L174:
	.align	2
.L173:
	.word	nr_vmas
	.word	pg_end
	.word	pg_start
	.word	__PRETTY_FUNCTION__.6300
	.word	634
	.word	.LC58
	.word	.LC59
	.size	walk_task, .-walk_task
	.section	.rodata
	.align	2
.LC60:
	.ascii	"too many addr ranges\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_addr_range, %function
add_addr_range:
	@ 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	r3, .L177
	ldr	r3, [r3]
	cmp	r3, #1024
	blt	.L176
	ldr	r0, .L177+4
	bl	fatal
.L176:
	ldr	r3, .L177
	ldr	r3, [r3]
	ldr	r1, .L177+8
	ldr	r2, [fp, #-16]
	str	r2, [r1, r3, lsl #2]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	mvn	r3, r3
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-12]
	cmp	r2, r3
	movcc	r2, r2
	movcs	r2, r3
	ldr	r3, .L177
	ldr	r3, [r3]
	ldr	r1, .L177+12
	str	r2, [r1, r3, lsl #2]
	ldr	r3, .L177
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L177
	str	r3, [r2]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L178:
	.align	2
.L177:
	.word	nr_addr_ranges
	.word	.LC60
	.word	opt_offset
	.word	opt_size
	.size	add_addr_range, .-add_addr_range
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	walk_addr_ranges, %function
walk_addr_ranges:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r1, #0
	ldr	r0, .L185
	bl	checked_open
	mov	r3, r0
	ldr	r2, .L185+4
	str	r3, [r2]
	ldr	r3, .L185+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L180
	mvn	r1, #0
	mov	r0, #0
	bl	add_addr_range
.L180:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L181
.L184:
	ldr	r3, .L185+12
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L182
	ldr	r2, .L185+16
	ldr	r3, [fp, #-8]
	ldr	r1, [r2, r3, lsl #2]
	ldr	r2, .L185+20
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	mov	r2, r3
	mov	r0, #0
	bl	walk_pfn
	b	.L183
.L182:
	ldr	r2, .L185+16
	ldr	r3, [fp, #-8]
	ldr	r2, [r2, r3, lsl #2]
	ldr	r1, .L185+20
	ldr	r3, [fp, #-8]
	ldr	r3, [r1, r3, lsl #2]
	mov	r1, r3
	mov	r0, r2
	bl	walk_task
.L183:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L181:
	ldr	r3, .L185+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L184
	ldr	r3, .L185+4
	ldr	r3, [r3]
	mov	r0, r3
	bl	close
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L186:
	.align	2
.L185:
	.word	.LC37
	.word	kpageflags_fd
	.word	nr_addr_ranges
	.word	opt_pid
	.word	opt_offset
	.word	opt_size
	.size	walk_addr_ranges, .-walk_addr_ranges
	.section	.rodata
	.align	2
.LC61:
	.ascii	"(r)\000"
	.align	2
.LC62:
	.ascii	"(o)\000"
	.align	2
.LC63:
	.ascii	"   \000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	page_flag_type, %function
page_flag_type:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, fp}
	add	fp, sp, #16
	sub	sp, sp, #12
	str	r0, [fp, #-28]
	str	r1, [fp, #-24]
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	mov	r6, #0
	ldr	r7, .L191
	and	r4, r0, r6
	and	r5, r1, r7
	orrs	r1, r4, r5
	beq	.L188
	ldr	r3, .L191+4
	b	.L189
.L188:
	sub	r1, fp, #28
	ldmia	r1, {r0-r1}
	mov	r4, #0
	ldr	r5, .L191+8
	and	r2, r0, r4
	and	r3, r1, r5
	orrs	r3, r2, r3
	beq	.L190
	ldr	r3, .L191+12
	b	.L189
.L190:
	ldr	r3, .L191+16
.L189:
	mov	r0, r3
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, r7, fp}
	bx	lr
.L192:
	.align	2
.L191:
	.word	65535
	.word	.LC61
	.word	-65536
	.word	.LC62
	.word	.LC63
	.size	page_flag_type, .-page_flag_type
	.section	.rodata
	.align	2
.LC64:
	.ascii	"page-types [options]\012            -r|--raw       "
	.ascii	"            Raw mode, for kernel developers\012    "
	.ascii	"        -d|--describe flags        Describe flags\012"
	.ascii	"            -a|--addr    addr-spec     Walk a range"
	.ascii	" of pages\012            -b|--bits    bits-spec    "
	.ascii	" Walk pages with specified bits\012            -p|-"
	.ascii	"-pid     pid           Walk process address space\012"
	.ascii	"            -l|--list                  Show page de"
	.ascii	"tails in ranges\012            -L|--list-each      "
	.ascii	"       Show page details one by one\012            "
	.ascii	"-N|--no-summary            Don't show summary info\012"
	.ascii	"            -X|--hwpoison              hwpoison pag"
	.ascii	"es\012            -x|--unpoison              unpois"
	.ascii	"on pages\012            -h|--help                  "
	.ascii	"Show this usage message\012flags:\012            0x"
	.ascii	"10                       bitfield format, e.g.\012 "
	.ascii	"           anon                       bit-name, e.g"
	.ascii	".\012            0x10,anon                  comma-s"
	.ascii	"eparated list, e.g.\012addr-spec:\012            N "
	.ascii	"                         one page at offset N (unit"
	.ascii	": pages)\012            N+M                        "
	.ascii	"pages range from N to N+M-1\012            N,M     "
	.ascii	"                   pages range from N to M-1\012   "
	.ascii	"         N,                         pages range fro"
	.ascii	"m N to end\012            ,M                       "
	.ascii	"  pages range from 0 to M-1\012bits-spec:\012      "
	.ascii	"      bit1,bit2                  (flags & (bit1|bit"
	.ascii	"2)) != 0\012            bit1,bit2=bit1             "
	.ascii	"(flags & (bit1|bit2)) == bit1\012            bit1,~"
	.ascii	"bit2                 (flags & (bit1|bit2)) == bit1\012"
	.ascii	"            =bit1,bit2                 flags == (bi"
	.ascii	"t1|bit2)\012bit-names:\000"
	.align	2
.LC65:
	.ascii	"%16s%s\000"
	.align	2
.LC66:
	.ascii	"\012                                   (r) raw mode"
	.ascii	" bits  (o) overloaded bits\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	usage, %function
usage:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, fp, lr}
	add	fp, sp, #16
	sub	sp, sp, #12
	ldr	r0, .L199
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L194
.L197:
	ldr	r2, .L199+4
	ldr	r3, [fp, #-28]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	beq	.L198
	ldr	r2, .L199+4
	ldr	r3, [fp, #-28]
	ldr	r3, [r2, r3, lsl #2]
	add	r6, r3, #2
	mov	r2, #1
	mov	r3, #0
	ldr	r1, [fp, #-28]
	sub	ip, r1, #32
	rsb	r0, r1, #32
	lsl	r5, r3, r1
	orr	r5, r5, r2, lsl ip
	orr	r5, r5, r2, lsr r0
	lsl	r4, r2, r1
	mov	r0, r4
	mov	r1, r5
	bl	page_flag_type
	mov	r3, r0
	mov	r2, r3
	mov	r1, r6
	ldr	r0, .L199+8
	bl	printf
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #3
	ble	.L196
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r0, #10
	bl	putchar
	b	.L196
.L198:
	nop
.L196:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L194:
	ldr	r3, [fp, #-28]
	cmp	r3, #51
	bls	.L197
	ldr	r0, .L199+12
	bl	puts
	nop
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, fp, pc}
.L200:
	.align	2
.L199:
	.word	.LC64
	.word	page_flag_names
	.word	.LC65
	.word	.LC66
	.size	usage, .-usage
	.section	.rodata
	.align	2
.LC67:
	.ascii	"invalid name or number: %s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_number, %function
parse_number:
	@ 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	r2, #0
	mov	r1, #0
	ldr	r0, [fp, #-16]
	bl	strtoll
	mov	r2, r0
	mov	r3, r1
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	orrs	r3, r2, r3
	bne	.L202
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #48
	beq	.L202
	ldr	r1, [fp, #-16]
	ldr	r0, .L204
	bl	fatal
.L202:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L205:
	.align	2
.L204:
	.word	.LC67
	.size	parse_number, .-parse_number
	.section	.rodata
	.align	2
.LC68:
	.ascii	"/proc/%d/pagemap\000"
	.align	2
.LC69:
	.ascii	"/proc/%d/maps\000"
	.align	2
.LC70:
	.ascii	"r\000"
	.align	2
.LC71:
	.ascii	"%lx-%lx %c%c%c%c %llx %x:%x %lu\000"
	.align	2
.LC72:
	.ascii	"unexpected line: %s\012\000"
	.global	__aeabi_uidiv
	.align	2
.LC73:
	.ascii	"too many VMAs\012\000"
	.align	2
.LC74:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_pid, %function
parse_pid:
	@ args = 0, pretend = 0, frame = 5056
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #5056
	sub	sp, sp, #36
	sub	r3, fp, #4096
	sub	r3, r3, #12
	str	r0, [r3, #-956]
	ldr	r3, .L214
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r0, [r3, #-956]
	bl	parse_number
	mov	r2, r0
	mov	r3, r1
	ldr	r3, .L214+4
	str	r2, [r3]
	ldr	r3, .L214+4
	ldr	r2, [r3]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #12
	ldr	r1, .L214+8
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #12
	mov	r1, #0
	mov	r0, r3
	bl	checked_open
	mov	r3, r0
	ldr	r2, .L214+12
	str	r3, [r2]
	ldr	r3, .L214+4
	ldr	r2, [r3]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #12
	ldr	r1, .L214+16
	mov	r0, r3
	bl	sprintf
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r4, r3
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #12
	ldr	r1, .L214+20
	mov	r0, r3
	bl	fopen
	str	r0, [r4, #-928]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-928]
	cmp	r3, #0
	bne	.L208
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #12
	mov	r0, r3
	bl	perror
	mov	r0, #1
	bl	exit
.L212:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r4, r3
	sub	r1, fp, #4992
	sub	r1, r1, #12
	sub	r1, r1, #48
	sub	r2, fp, #4992
	sub	r2, r2, #12
	sub	r2, r2, #52
	sub	r0, fp, #4992
	sub	r0, r0, #12
	sub	r0, r0, #12
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #36
	str	r3, [sp, #28]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #40
	str	r3, [sp, #24]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #44
	str	r3, [sp, #20]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #24
	str	r3, [sp, #16]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #53
	str	r3, [sp, #12]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #54
	str	r3, [sp, #8]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #55
	str	r3, [sp, #4]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #56
	str	r3, [sp]
	mov	r3, r1
	ldr	r1, .L214+24
	bl	__isoc99_sscanf
	str	r0, [r4, #-924]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-924]
	cmp	r3, #9
	bgt	.L209
	ldr	r3, .L214+28
	ldr	r0, [r3]
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #12
	mov	r2, r3
	ldr	r1, .L214+32
	bl	fprintf
	b	.L208
.L209:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-948]
	ldr	r2, .L214+36
	ldr	r2, [r2]
	mov	r1, r2
	ldr	r2, .L214+40
	ldr	r4, [r2]
	mov	r0, r3
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L214+44
	str	r2, [r3, r4, lsl #2]
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r3, [r3, #-944]
	ldr	r2, .L214+36
	ldr	r2, [r2]
	mov	r1, r2
	ldr	r2, .L214+40
	ldr	r4, [r2]
	mov	r0, r3
	bl	__aeabi_uidiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L214+48
	str	r2, [r3, r4, lsl #2]
	ldr	r3, .L214+40
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L214+40
	str	r3, [r2]
	ldr	r3, .L214+40
	ldr	r3, [r3]
	cmp	r3, #10240
	blt	.L208
	ldr	r3, .L214+28
	ldr	r3, [r3]
	mov	r2, #14
	mov	r1, #1
	ldr	r0, .L214+52
	bl	fwrite
	b	.L211
.L208:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	mov	r2, r3
	sub	r3, fp, #4992
	sub	r3, r3, #12
	sub	r3, r3, #12
	ldr	r2, [r2, #-928]
	ldr	r1, .L214+56
	mov	r0, r3
	bl	fgets
	mov	r3, r0
	cmp	r3, #0
	bne	.L212
.L211:
	sub	r3, fp, #4096
	sub	r3, r3, #12
	ldr	r0, [r3, #-928]
	bl	fclose
	nop
	ldr	r3, .L214
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L213
	bl	__stack_chk_fail
.L213:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L215:
	.align	2
.L214:
	.word	.LC74
	.word	opt_pid
	.word	.LC68
	.word	pagemap_fd
	.word	.LC69
	.word	.LC70
	.word	.LC71
	.word	stderr
	.word	.LC72
	.word	page_size
	.word	nr_vmas
	.word	pg_start
	.word	pg_end
	.word	.LC73
	.word	5000
	.size	parse_pid, .-parse_pid
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_file, %function
parse_file:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	parse_file, .-parse_file
	.section	.rodata
	.align	2
.LC75:
	.ascii	"invalid range: %lu,%lu\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_addr_range, %function
parse_addr_range:
	@ args = 0, 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, #-24]
	mov	r1, #44
	ldr	r0, [fp, #-24]
	bl	strchr
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L218
	mov	r1, #43
	ldr	r0, [fp, #-24]
	bl	strchr
	str	r0, [fp, #-8]
.L218:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bne	.L219
	mov	r3, #0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	mov	r0, r3
	bl	parse_number
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	str	r3, [fp, #-12]
	b	.L220
.L219:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L221
	ldr	r0, [fp, #-24]
	bl	parse_number
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L222
	mvn	r3, #0
	str	r3, [fp, #-12]
	b	.L220
.L222:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	mov	r0, r3
	bl	parse_number
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #44
	bne	.L220
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bcs	.L223
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, .L224
	bl	fatal
.L223:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	str	r3, [fp, #-12]
	b	.L220
.L221:
	ldr	r0, [fp, #-24]
	bl	parse_number
	mov	r2, r0
	mov	r3, r1
	mov	r3, r2
	str	r3, [fp, #-16]
	mov	r3, #1
	str	r3, [fp, #-12]
.L220:
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	add_addr_range
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L225:
	.align	2
.L224:
	.word	.LC75
	.size	parse_addr_range, .-parse_addr_range
	.section	.rodata
	.align	2
.LC76:
	.ascii	"too much bit filters\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_bits_filter, %function
add_bits_filter:
	@ 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, #-12]
	str	r1, [fp, #-8]
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, .L228
	ldr	r3, [r3]
	cmp	r3, #63
	ble	.L227
	ldr	r0, .L228+4
	bl	fatal
.L227:
	ldr	r3, .L228
	ldr	r3, [r3]
	ldr	r2, .L228+8
	lsl	r3, r3, #3
	add	r1, r2, r3
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, .L228
	ldr	r3, [r3]
	ldr	r2, .L228+12
	lsl	r3, r3, #3
	add	r1, r2, r3
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	stm	r1, {r2-r3}
	ldr	r3, .L228
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L228
	str	r3, [r2]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L229:
	.align	2
.L228:
	.word	nr_bit_filters
	.word	.LC76
	.word	opt_mask
	.word	opt_bits
	.size	add_bits_filter, .-add_bits_filter
	.section	.rodata
	.align	2
.LC77:
	.ascii	"compound\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_flag_name, %function
parse_flag_name:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #16
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L231
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L232
.L231:
	mov	r4, #0
	mov	r5, #0
	b	.L233
.L232:
	ldr	r3, [fp, #-28]
	cmp	r3, #8
	bgt	.L234
	ldr	r3, [fp, #-28]
	mov	r2, r3
	ldr	r1, .L240
	ldr	r0, [fp, #-24]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L234
	mov	r4, #98304
	mov	r5, #0
	b	.L233
.L234:
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L235
.L238:
	ldr	r2, .L240+4
	ldr	r3, [fp, #-16]
	ldr	r3, [r2, r3, lsl #2]
	cmp	r3, #0
	beq	.L239
	ldr	r2, .L240+4
	ldr	r3, [fp, #-16]
	ldr	r3, [r2, r3, lsl #2]
	add	r3, r3, #2
	ldr	r2, [fp, #-28]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L237
	mov	r2, #1
	mov	r3, #0
	ldr	r1, [fp, #-16]
	sub	ip, r1, #32
	rsb	r0, r1, #32
	lsl	r5, r3, r1
	orr	r5, r5, r2, lsl ip
	orr	r5, r5, r2, lsr r0
	lsl	r4, r2, r1
	b	.L233
.L239:
	nop
.L237:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L235:
	ldr	r3, [fp, #-16]
	cmp	r3, #51
	bls	.L238
	ldr	r0, [fp, #-24]
	bl	parse_number
	mov	r4, r0
	mov	r5, r1
.L233:
	mov	r2, r4
	mov	r3, r5
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L241:
	.align	2
.L240:
	.word	.LC77
	.word	page_flag_names
	.size	parse_flag_name, .-parse_flag_name
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_flag_names, %function
parse_flag_names:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #24
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-24]
	mov	r2, #0
	mov	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
.L249:
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #44
	beq	.L243
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #61
	beq	.L243
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L244
.L243:
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #126
	bne	.L245
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #126
	bne	.L246
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	beq	.L246
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L246
.L245:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-32]
	sub	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	parse_flag_name
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	orr	r4, r2, r0
	orr	r5, r3, r1
	str	r4, [fp, #-20]
	str	r5, [fp, #-16]
.L246:
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #44
	bne	.L252
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L244:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L249
.L252:
	nop
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	mov	r0, r2
	mov	r1, r3
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
	.size	parse_flag_names, .-parse_flag_names
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_bits_mask, %function
parse_bits_mask:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	mov	r1, #61
	ldr	r0, [fp, #-32]
	bl	strchr
	str	r0, [fp, #-24]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-32]
	cmp	r2, r3
	bne	.L254
	mvn	r2, #0
	mvn	r3, #0
	str	r2, [fp, #-20]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	mov	r1, #0
	mov	r0, r3
	bl	parse_flag_names
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	b	.L255
.L254:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L256
	mov	r1, #0
	ldr	r0, [fp, #-32]
	bl	parse_flag_names
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	mov	r1, #0
	mov	r0, r3
	bl	parse_flag_names
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	b	.L255
.L256:
	mov	r1, #126
	ldr	r0, [fp, #-32]
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	beq	.L257
	mov	r1, #1
	ldr	r0, [fp, #-32]
	bl	parse_flag_names
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	mov	r1, #0
	ldr	r0, [fp, #-32]
	bl	parse_flag_names
	str	r0, [fp, #-12]
	str	r1, [fp, #-8]
	b	.L255
.L257:
	mov	r1, #0
	ldr	r0, [fp, #-32]
	bl	parse_flag_names
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	mvn	r2, #0
	mvn	r3, #0
	str	r2, [fp, #-12]
	str	r3, [fp, #-8]
.L255:
	sub	r3, fp, #12
	ldmia	r3, {r2-r3}
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	add_bits_filter
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	parse_bits_mask, .-parse_bits_mask
	.section	.rodata
	.align	2
.LC78:
	.ascii	"0x%016llx\011%s\011%s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	describe_flags, %function
describe_flags:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	mov	r1, #0
	ldr	r0, [fp, #-24]
	bl	parse_flag_names
	str	r0, [fp, #-20]
	str	r1, [fp, #-16]
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	page_flag_name
	mov	r4, r0
	sub	r1, fp, #20
	ldmia	r1, {r0-r1}
	bl	page_flag_longname
	mov	r3, r0
	str	r3, [sp, #4]
	str	r4, [sp]
	sub	r3, fp, #20
	ldmia	r3, {r2-r3}
	ldr	r0, .L259
	bl	printf
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L260:
	.align	2
.L259:
	.word	.LC78
	.size	describe_flags, .-describe_flags
	.section	.rodata
	.align	2
.LC79:
	.ascii	"raw\000"
	.align	2
.LC80:
	.ascii	"pid\000"
	.align	2
.LC81:
	.ascii	"file\000"
	.align	2
.LC82:
	.ascii	"addr\000"
	.align	2
.LC83:
	.ascii	"bits\000"
	.align	2
.LC84:
	.ascii	"describe\000"
	.align	2
.LC85:
	.ascii	"list\000"
	.align	2
.LC86:
	.ascii	"list-each\000"
	.align	2
.LC87:
	.ascii	"no-summary\000"
	.align	2
.LC88:
	.ascii	"hwpoison\000"
	.align	2
.LC89:
	.ascii	"unpoison\000"
	.align	2
.LC90:
	.ascii	"help\000"
	.align	2
	.type	opts, %object
	.size	opts, 208
opts:
	.word	.LC79
	.word	0
	.word	0
	.word	114
	.word	.LC80
	.word	1
	.word	0
	.word	112
	.word	.LC81
	.word	1
	.word	0
	.word	102
	.word	.LC82
	.word	1
	.word	0
	.word	97
	.word	.LC83
	.word	1
	.word	0
	.word	98
	.word	.LC84
	.word	1
	.word	0
	.word	100
	.word	.LC85
	.word	0
	.word	0
	.word	108
	.word	.LC86
	.word	0
	.word	0
	.word	76
	.word	.LC87
	.word	0
	.word	0
	.word	78
	.word	.LC88
	.word	0
	.word	0
	.word	88
	.word	.LC89
	.word	0
	.word	0
	.word	120
	.word	.LC90
	.word	0
	.word	0
	.word	104
	.word	0
	.word	0
	.word	0
	.word	0
	.align	2
.LC91:
	.ascii	"rp:f:a:b:d:lLNXxh\000"
	.align	2
.LC92:
	.ascii	"voffset\011\000"
	.align	2
.LC93:
	.ascii	"offset\011len\011flags\000"
	.align	2
.LC94:
	.ascii	"offset\011flags\000"
	.align	2
.LC95:
	.ascii	"\012\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, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	bl	getpagesize
	mov	r3, r0
	ldr	r2, .L285
	str	r3, [r2]
	b	.L262
.L277:
	ldr	r3, [fp, #-8]
	sub	r3, r3, #76
	cmp	r3, #44
	ldrls	pc, [pc, r3, asl #2]
	b	.L263
.L265:
	.word	.L276
	.word	.L263
	.word	.L275
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L274
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L273
	.word	.L272
	.word	.L263
	.word	.L271
	.word	.L263
	.word	.L270
	.word	.L263
	.word	.L269
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L268
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L267
	.word	.L263
	.word	.L266
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L263
	.word	.L264
.L266:
	ldr	r3, .L285+4
	mov	r2, #1
	str	r2, [r3]
	b	.L262
.L267:
	ldr	r3, .L285+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	parse_pid
	b	.L262
.L270:
	ldr	r3, .L285+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	parse_file
	b	.L262
.L273:
	ldr	r3, .L285+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	parse_addr_range
	b	.L262
.L272:
	ldr	r3, .L285+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	parse_bits_mask
	b	.L262
.L271:
	ldr	r3, .L285+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	describe_flags
	mov	r0, #0
	bl	exit
.L268:
	ldr	r3, .L285+12
	mov	r2, #1
	str	r2, [r3]
	b	.L262
.L276:
	ldr	r3, .L285+12
	mov	r2, #2
	str	r2, [r3]
	b	.L262
.L275:
	ldr	r3, .L285+16
	mov	r2, #1
	str	r2, [r3]
	b	.L262
.L274:
	ldr	r3, .L285+20
	mov	r2, #1
	str	r2, [r3]
	bl	prepare_hwpoison_fd
	b	.L262
.L264:
	ldr	r3, .L285+24
	mov	r2, #1
	str	r2, [r3]
	bl	prepare_hwpoison_fd
	b	.L262
.L269:
	bl	usage
	mov	r0, #0
	bl	exit
.L263:
	bl	usage
	mov	r0, #1
	bl	exit
.L262:
	mov	r3, #0
	str	r3, [sp]
	ldr	r3, .L285+28
	ldr	r2, .L285+32
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	getopt_long
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	bne	.L277
	ldr	r3, .L285+12
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L278
	ldr	r3, .L285+36
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L278
	ldr	r0, .L285+40
	bl	printf
.L278:
	ldr	r3, .L285+12
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L279
	ldr	r0, .L285+44
	bl	puts
.L279:
	ldr	r3, .L285+12
	ldr	r3, [r3]
	cmp	r3, #2
	bne	.L280
	ldr	r0, .L285+48
	bl	puts
.L280:
	bl	walk_addr_ranges
	ldr	r3, .L285+12
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L281
	mov	r2, #0
	mov	r3, #0
	mov	r1, #0
	mov	r0, #0
	bl	show_page_range
.L281:
	ldr	r3, .L285+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L282
	mov	r3, #0
	b	.L283
.L282:
	ldr	r3, .L285+12
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L284
	ldr	r0, .L285+52
	bl	puts
.L284:
	bl	show_summary
	mov	r3, #0
.L283:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L286:
	.align	2
.L285:
	.word	page_size
	.word	opt_raw
	.word	optarg
	.word	opt_list
	.word	opt_no_summary
	.word	opt_hwpoison
	.word	opt_unpoison
	.word	opts
	.word	.LC91
	.word	opt_pid
	.word	.LC92
	.word	.LC93
	.word	.LC94
	.word	.LC95
	.size	main, .-main
	.local	buf.6166
	.comm	buf.6166,65,4
	.local	buf.6177
	.comm	buf.6177,1024,4
	.local	flags0.6189
	.comm	flags0.6189,8,8
	.local	index.6191
	.comm	index.6191,4,4
	.local	count.6192
	.comm	count.6192,4,4
	.local	voff.6190
	.comm	voff.6190,4,4
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.6300, %object
	.size	__PRETTY_FUNCTION__.6300, 10
__PRETTY_FUNCTION__.6300:
	.ascii	"walk_task\000"
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
