	.file	"794568.c"
	.intel_syntax noprefix
	.text
	.local	ehdr
	.comm	ehdr,52,32
	.local	reloc_count
	.comm	reloc_count,8,8
	.local	reloc_idx
	.comm	reloc_idx,8,8
	.local	relocs
	.comm	relocs,8,8
	.local	secs
	.comm	secs,8,8
	.section	.rodata
.LC0:
	.string	"xen_irq_disable_direct_reloc"
.LC1:
	.string	"xen_save_fl_direct_reloc"
	.section	.data.rel.local,"aw"
	.align 16
	.type	safe_abs_relocs, @object
	.size	safe_abs_relocs, 16
safe_abs_relocs:
	.quad	.LC0
	.quad	.LC1
	.section	.rodata
.LC2:
	.string	"VDSO"
.LC3:
	.string	"__crc_"
	.text
	.type	is_safe_abs_reloc, @function
is_safe_abs_reloc:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L2
.L5:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, safe_abs_relocs[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L3
	mov	eax, 1
	jmp	.L4
.L3:
	add	DWORD PTR -4[rbp], 1
.L2:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, 1
	jbe	.L5
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 4
	lea	rsi, .LC2[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L6
	mov	eax, 1
	jmp	.L4
.L6:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 6
	lea	rsi, .LC3[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L7
	mov	eax, 1
	jmp	.L4
.L7:
	mov	eax, 0
.L4:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	is_safe_abs_reloc, .-is_safe_abs_reloc
	.type	die, @function
die:
.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	.L9
	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
.L9:
	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	die, .-die
	.section	.rodata
.LC4:
	.string	"unknown sym type name"
	.text
	.type	sym_type, @function
sym_type:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	lea	rax, .LC4[rip]
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -20[rbp], 6
	ja	.L12
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, 0[0+rax*8]
	lea	rax, type_name.3[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	QWORD PTR -8[rbp], rax
.L12:
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	sym_type, .-sym_type
	.section	.rodata
.LC5:
	.string	"unknown sym bind name"
	.text
	.type	sym_bind, @function
sym_bind:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	lea	rax, .LC5[rip]
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -20[rbp], 2
	ja	.L15
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, 0[0+rax*8]
	lea	rax, bind_name.2[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	QWORD PTR -8[rbp], rax
.L15:
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	sym_bind, .-sym_bind
	.section	.rodata
.LC6:
	.string	"unknown sym visibility name"
	.text
	.type	sym_visibility, @function
sym_visibility:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	lea	rax, .LC6[rip]
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -20[rbp], 3
	ja	.L18
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, 0[0+rax*8]
	lea	rax, visibility_name.1[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	QWORD PTR -8[rbp], rax
.L18:
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	sym_visibility, .-sym_visibility
	.section	.rodata
.LC7:
	.string	"unknown type rel type name"
	.text
	.type	rel_type, @function
rel_type:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	lea	rax, .LC7[rip]
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -20[rbp], 10
	ja	.L21
	mov	eax, DWORD PTR -20[rbp]
	lea	rdx, 0[0+rax*8]
	lea	rax, type_name.0[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	QWORD PTR -8[rbp], rax
.L21:
	mov	rax, QWORD PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	rel_type, .-rel_type
	.section	.rodata
.LC8:
	.string	"<noname>"
.LC9:
	.string	"ABSOLUTE"
.LC10:
	.string	"COMMON"
	.text
	.type	sec_name, @function
sec_name:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	rcx, QWORD PTR secs[rip]
	movzx	eax, WORD PTR ehdr[rip+50]
	movzx	edx, ax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR 64[rax]
	mov	QWORD PTR -8[rbp], rax
	lea	rax, .LC8[rip]
	mov	QWORD PTR -16[rbp], rax
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	DWORD PTR -20[rbp], eax
	jnb	.L24
	mov	rcx, QWORD PTR secs[rip]
	mov	edx, DWORD PTR -20[rbp]
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	jmp	.L25
.L24:
	cmp	DWORD PTR -20[rbp], 65521
	jne	.L26
	lea	rax, .LC9[rip]
	mov	QWORD PTR -16[rbp], rax
	jmp	.L25
.L26:
	cmp	DWORD PTR -20[rbp], 65522
	jne	.L25
	lea	rax, .LC10[rip]
	mov	QWORD PTR -16[rbp], rax
.L25:
	mov	rax, QWORD PTR -16[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	sec_name, .-sec_name
	.type	sym_name, @function
sym_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	QWORD PTR -32[rbp], rsi
	lea	rax, .LC8[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	je	.L29
	mov	rax, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	jmp	.L30
.L29:
	mov	rcx, QWORD PTR secs[rip]
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, WORD PTR 14[rax]
	movzx	edx, ax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	sec_name
	mov	QWORD PTR -8[rbp], rax
.L30:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	sym_name, .-sym_name
	.type	elf16_to_cpu, @function
elf16_to_cpu:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, edi
	mov	WORD PTR -4[rbp], ax
	movzx	eax, WORD PTR -4[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	elf16_to_cpu, .-elf16_to_cpu
	.type	elf32_to_cpu, @function
elf32_to_cpu:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	mov	eax, DWORD PTR -4[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	elf32_to_cpu, .-elf32_to_cpu
	.section	.rodata
.LC11:
	.string	"Cannot read ELF header: %s\n"
.LC12:
	.string	"\177ELF"
.LC13:
	.string	"No ELF magic\n"
.LC14:
	.string	"Not a 32 bit executable\n"
.LC15:
	.string	"Not a LSB ELF executable\n"
.LC16:
	.string	"Unknown ELF version\n"
.LC17:
	.string	"Unsupported ELF header type\n"
.LC18:
	.string	"Not for x86\n"
.LC19:
	.string	"Bad Elf header size\n"
.LC20:
	.string	"Bad program header entry\n"
.LC21:
	.string	"Bad section header entry\n"
	.align 8
.LC22:
	.string	"String table index out of bounds\n"
	.text
	.type	read_ehdr, @function
read_ehdr:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, rax
	mov	edx, 1
	mov	esi, 52
	lea	rdi, ehdr[rip]
	call	fread@PLT
	cmp	rax, 1
	je	.L37
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	lea	rdi, .LC11[rip]
	mov	eax, 0
	call	die
.L37:
	mov	edx, 4
	lea	rsi, .LC12[rip]
	lea	rdi, ehdr[rip]
	call	memcmp@PLT
	test	eax, eax
	je	.L38
	lea	rdi, .LC13[rip]
	mov	eax, 0
	call	die
.L38:
	movzx	eax, BYTE PTR ehdr[rip+4]
	cmp	al, 1
	je	.L39
	lea	rdi, .LC14[rip]
	mov	eax, 0
	call	die
.L39:
	movzx	eax, BYTE PTR ehdr[rip+5]
	cmp	al, 1
	je	.L40
	lea	rdi, .LC15[rip]
	mov	eax, 0
	call	die
.L40:
	movzx	eax, BYTE PTR ehdr[rip+6]
	cmp	al, 1
	je	.L41
	lea	rdi, .LC16[rip]
	mov	eax, 0
	call	die
.L41:
	movzx	eax, WORD PTR ehdr[rip+16]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	WORD PTR ehdr[rip+16], ax
	movzx	eax, WORD PTR ehdr[rip+18]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	WORD PTR ehdr[rip+18], ax
	mov	eax, DWORD PTR ehdr[rip+20]
	mov	edi, eax
	call	elf32_to_cpu
	mov	DWORD PTR ehdr[rip+20], eax
	mov	eax, DWORD PTR ehdr[rip+24]
	mov	edi, eax
	call	elf32_to_cpu
	mov	DWORD PTR ehdr[rip+24], eax
	mov	eax, DWORD PTR ehdr[rip+28]
	mov	edi, eax
	call	elf32_to_cpu
	mov	DWORD PTR ehdr[rip+28], eax
	mov	eax, DWORD PTR ehdr[rip+32]
	mov	edi, eax
	call	elf32_to_cpu
	mov	DWORD PTR ehdr[rip+32], eax
	mov	eax, DWORD PTR ehdr[rip+36]
	mov	edi, eax
	call	elf32_to_cpu
	mov	DWORD PTR ehdr[rip+36], eax
	movzx	eax, WORD PTR ehdr[rip+40]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	WORD PTR ehdr[rip+40], ax
	movzx	eax, WORD PTR ehdr[rip+42]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	WORD PTR ehdr[rip+42], ax
	movzx	eax, WORD PTR ehdr[rip+44]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	WORD PTR ehdr[rip+44], ax
	movzx	eax, WORD PTR ehdr[rip+46]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	WORD PTR ehdr[rip+46], ax
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	WORD PTR ehdr[rip+48], ax
	movzx	eax, WORD PTR ehdr[rip+50]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	WORD PTR ehdr[rip+50], ax
	movzx	eax, WORD PTR ehdr[rip+16]
	cmp	ax, 2
	je	.L42
	movzx	eax, WORD PTR ehdr[rip+16]
	cmp	ax, 3
	je	.L42
	lea	rdi, .LC17[rip]
	mov	eax, 0
	call	die
.L42:
	movzx	eax, WORD PTR ehdr[rip+18]
	cmp	ax, 3
	je	.L43
	lea	rdi, .LC18[rip]
	mov	eax, 0
	call	die
.L43:
	mov	eax, DWORD PTR ehdr[rip+20]
	cmp	eax, 1
	je	.L44
	lea	rdi, .LC16[rip]
	mov	eax, 0
	call	die
.L44:
	movzx	eax, WORD PTR ehdr[rip+40]
	cmp	ax, 52
	je	.L45
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	die
.L45:
	movzx	eax, WORD PTR ehdr[rip+42]
	cmp	ax, 32
	je	.L46
	lea	rdi, .LC20[rip]
	mov	eax, 0
	call	die
.L46:
	movzx	eax, WORD PTR ehdr[rip+46]
	cmp	ax, 40
	je	.L47
	lea	rdi, .LC21[rip]
	mov	eax, 0
	call	die
.L47:
	movzx	edx, WORD PTR ehdr[rip+50]
	movzx	eax, WORD PTR ehdr[rip+48]
	cmp	dx, ax
	jb	.L49
	lea	rdi, .LC22[rip]
	mov	eax, 0
	call	die
.L49:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	read_ehdr, .-read_ehdr
	.section	.rodata
	.align 8
.LC23:
	.string	"Unable to allocate %d section headers\n"
.LC24:
	.string	"Seek to %d failed: %s\n"
	.align 8
.LC25:
	.string	"Cannot read ELF section headers %d/%d: %s\n"
	.text
	.type	read_shdrs, @function
read_shdrs:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	mov	esi, 72
	mov	rdi, rax
	call	calloc@PLT
	mov	QWORD PTR secs[rip], rax
	mov	rax, QWORD PTR secs[rip]
	test	rax, rax
	jne	.L51
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	mov	esi, eax
	lea	rdi, .LC23[rip]
	mov	eax, 0
	call	die
.L51:
	mov	eax, DWORD PTR ehdr[rip+32]
	mov	ecx, eax
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	test	eax, eax
	jns	.L52
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	eax, DWORD PTR ehdr[rip+32]
	mov	esi, eax
	lea	rdi, .LC24[rip]
	mov	eax, 0
	call	die
.L52:
	mov	DWORD PTR -60[rbp], 0
	jmp	.L53
.L56:
	mov	rcx, QWORD PTR secs[rip]
	mov	eax, DWORD PTR -60[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	QWORD PTR -56[rbp], rax
	mov	rdx, QWORD PTR -72[rbp]
	lea	rax, -48[rbp]
	mov	rcx, rdx
	mov	edx, 1
	mov	esi, 40
	mov	rdi, rax
	call	fread@PLT
	cmp	rax, 1
	je	.L54
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rcx, rax
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	edx, ax
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, eax
	lea	rdi, .LC25[rip]
	mov	eax, 0
	call	die
.L54:
	mov	eax, DWORD PTR -48[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR -44[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 4[rdx], eax
	mov	eax, DWORD PTR -40[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 8[rdx], eax
	mov	eax, DWORD PTR -36[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 12[rdx], eax
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 16[rdx], eax
	mov	eax, DWORD PTR -28[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 20[rdx], eax
	mov	eax, DWORD PTR -24[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 24[rdx], eax
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 28[rdx], eax
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 32[rdx], eax
	mov	eax, DWORD PTR -12[rbp]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR 36[rdx], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, DWORD PTR 24[rax]
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	edx, eax
	jnb	.L55
	mov	rdx, QWORD PTR secs[rip]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 24[rax]
	mov	ecx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR 40[rax], rdx
.L55:
	add	DWORD PTR -60[rbp], 1
.L53:
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	DWORD PTR -60[rbp], eax
	jl	.L56
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L57
	call	__stack_chk_fail@PLT
.L57:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	read_shdrs, .-read_shdrs
	.section	.rodata
	.align 8
.LC26:
	.string	"malloc of %d bytes for strtab failed\n"
.LC27:
	.string	"Cannot read symbol table: %s\n"
	.text
	.type	read_strtabs, @function
read_strtabs:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -12[rbp], 0
	jmp	.L59
.L64:
	mov	rcx, QWORD PTR secs[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	eax, 3
	jne	.L65
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 64[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 64[rax]
	test	rax, rax
	jne	.L62
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	esi, eax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	die
.L62:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	ecx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	test	eax, eax
	jns	.L63
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	esi, eax
	lea	rdi, .LC24[rip]
	mov	eax, 0
	call	die
.L63:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	esi, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 64[rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rcx, rdx
	mov	rdx, rsi
	mov	esi, 1
	mov	rdi, rax
	call	fread@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR 20[rdx]
	mov	edx, edx
	cmp	rax, rdx
	je	.L61
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	lea	rdi, .LC27[rip]
	mov	eax, 0
	call	die
	jmp	.L61
.L65:
	nop
.L61:
	add	DWORD PTR -12[rbp], 1
.L59:
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	DWORD PTR -12[rbp], eax
	jl	.L64
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	read_strtabs, .-read_strtabs
	.section	.rodata
	.align 8
.LC28:
	.string	"malloc of %d bytes for symtab failed\n"
	.text
	.type	read_symtabs, @function
read_symtabs:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -24[rbp], 0
	jmp	.L67
.L75:
	mov	rcx, QWORD PTR secs[rip]
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	eax, 2
	jne	.L76
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 48[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 48[rax]
	test	rax, rax
	jne	.L70
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	esi, eax
	lea	rdi, .LC28[rip]
	mov	eax, 0
	call	die
.L70:
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	ecx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	test	eax, eax
	jns	.L71
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	esi, eax
	lea	rdi, .LC24[rip]
	mov	eax, 0
	call	die
.L71:
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	esi, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, rdx
	mov	rdx, rsi
	mov	esi, 1
	mov	rdi, rax
	call	fread@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 20[rdx]
	mov	edx, edx
	cmp	rax, rdx
	je	.L72
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	lea	rdi, .LC27[rip]
	mov	eax, 0
	call	die
.L72:
	mov	DWORD PTR -20[rbp], 0
	jmp	.L73
.L74:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 48[rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 4
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -8[rbp]
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rdx], eax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -8[rbp]
	mov	DWORD PTR 8[rdx], eax
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, WORD PTR 14[rax]
	movzx	eax, ax
	mov	edi, eax
	call	elf16_to_cpu
	mov	rdx, QWORD PTR -8[rbp]
	mov	WORD PTR 14[rdx], ax
	add	DWORD PTR -20[rbp], 1
.L73:
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 20[rax]
	shr	eax, 4
	mov	eax, eax
	cmp	rdx, rax
	jb	.L74
	jmp	.L69
.L76:
	nop
.L69:
	add	DWORD PTR -24[rbp], 1
.L67:
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	DWORD PTR -24[rbp], eax
	jl	.L75
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	read_symtabs, .-read_symtabs
	.section	.rodata
	.align 8
.LC29:
	.string	"malloc of %d bytes for relocs failed\n"
	.text
	.type	read_relocs, @function
read_relocs:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -24[rbp], 0
	jmp	.L78
.L86:
	mov	rcx, QWORD PTR secs[rip]
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	eax, 9
	jne	.L87
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 56[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 56[rax]
	test	rax, rax
	jne	.L81
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	esi, eax
	lea	rdi, .LC29[rip]
	mov	eax, 0
	call	die
.L81:
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	ecx, eax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	fseek@PLT
	test	eax, eax
	jns	.L82
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	esi, eax
	lea	rdi, .LC24[rip]
	mov	eax, 0
	call	die
.L82:
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 20[rax]
	mov	esi, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 56[rax]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rcx, rdx
	mov	rdx, rsi
	mov	esi, 1
	mov	rdi, rax
	call	fread@PLT
	mov	rdx, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 20[rdx]
	mov	edx, edx
	cmp	rax, rdx
	je	.L83
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	lea	rdi, .LC27[rip]
	mov	eax, 0
	call	die
.L83:
	mov	DWORD PTR -20[rbp], 0
	jmp	.L84
.L85:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 56[rax]
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -8[rbp]
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edi, eax
	call	elf32_to_cpu
	mov	rdx, QWORD PTR -8[rbp]
	mov	DWORD PTR 4[rdx], eax
	add	DWORD PTR -20[rbp], 1
.L84:
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 20[rax]
	shr	eax, 3
	mov	eax, eax
	cmp	rdx, rax
	jb	.L85
	jmp	.L80
.L87:
	nop
.L80:
	add	DWORD PTR -24[rbp], 1
.L78:
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	DWORD PTR -24[rbp], eax
	jl	.L86
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	read_relocs, .-read_relocs
	.section	.rodata
.LC30:
	.string	"Absolute symbols"
	.align 8
.LC31:
	.string	" Num:    Value Size  Type       Bind        Visibility  Name"
	.align 8
.LC32:
	.string	"%5d %08x %5d %10s %10s %12s %s\n"
	.text
	.type	print_absolute_symbols, @function
print_absolute_symbols:
.LFB21:
	.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, 48
	.cfi_offset 12, -24
	.cfi_offset 3, -32
	lea	rdi, .LC30[rip]
	call	puts@PLT
	lea	rdi, .LC31[rip]
	call	puts@PLT
	mov	DWORD PTR -64[rbp], 0
	jmp	.L89
.L96:
	mov	rcx, QWORD PTR secs[rip]
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	eax, 2
	jne	.L97
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rax, QWORD PTR 64[rax]
	mov	QWORD PTR -40[rbp], rax
	mov	DWORD PTR -60[rbp], 0
	jmp	.L92
.L95:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 48[rax]
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	sal	rax, 4
	add	rax, rdx
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	sym_name
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, WORD PTR 14[rax]
	cmp	ax, -15
	jne	.L98
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR 13[rax]
	movzx	eax, al
	and	eax, 3
	mov	edi, eax
	call	sym_visibility
	mov	rbx, rax
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR 12[rax]
	shr	al, 4
	movzx	eax, al
	mov	edi, eax
	call	sym_bind
	mov	r12, rax
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR 12[rax]
	movzx	eax, al
	and	eax, 15
	mov	edi, eax
	call	sym_type
	mov	rsi, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	ecx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 4[rax]
	mov	eax, DWORD PTR -60[rbp]
	push	QWORD PTR -24[rbp]
	push	rbx
	mov	r9, r12
	mov	r8, rsi
	mov	esi, eax
	lea	rdi, .LC32[rip]
	mov	eax, 0
	call	printf@PLT
	add	rsp, 16
	jmp	.L94
.L98:
	nop
.L94:
	add	DWORD PTR -60[rbp], 1
.L92:
	mov	eax, DWORD PTR -60[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 20[rax]
	shr	eax, 4
	mov	eax, eax
	cmp	rdx, rax
	jb	.L95
	jmp	.L91
.L97:
	nop
.L91:
	add	DWORD PTR -64[rbp], 1
.L89:
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	DWORD PTR -64[rbp], eax
	jl	.L96
	mov	edi, 10
	call	putchar@PLT
	nop
	lea	rsp, -16[rbp]
	pop	rbx
	pop	r12
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	print_absolute_symbols, .-print_absolute_symbols
	.section	.rodata
	.align 8
.LC33:
	.string	"WARNING: Absolute relocations present"
	.align 8
.LC34:
	.string	"Offset     Info     Type     Sym.Value Sym.Name"
.LC35:
	.string	"%08x %08x %10s %08x  %s\n"
	.text
	.type	print_absolute_relocs, @function
print_absolute_relocs:
.LFB22:
	.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, 88
	.cfi_offset 3, -24
	mov	DWORD PTR -88[rbp], 0
	mov	DWORD PTR -92[rbp], 0
	jmp	.L100
.L110:
	mov	rcx, QWORD PTR secs[rip]
	mov	eax, DWORD PTR -92[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -80[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	eax, 9
	jne	.L112
	mov	rax, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	QWORD PTR -72[rbp], rax
	mov	rdx, QWORD PTR secs[rip]
	mov	rax, QWORD PTR -80[rbp]
	mov	eax, DWORD PTR 28[rax]
	mov	ecx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rdx
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR 8[rax]
	and	eax, 2
	test	eax, eax
	je	.L113
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rax, QWORD PTR 64[rax]
	mov	QWORD PTR -48[rbp], rax
	mov	DWORD PTR -84[rbp], 0
	jmp	.L104
.L109:
	mov	rax, QWORD PTR -80[rbp]
	mov	rdx, QWORD PTR 56[rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 4[rax]
	shr	eax, 8
	mov	eax, eax
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	sym_name
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, WORD PTR 14[rax]
	cmp	ax, -15
	jne	.L114
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	is_safe_abs_reloc
	test	eax, eax
	jne	.L115
	cmp	DWORD PTR -88[rbp], 0
	jne	.L108
	lea	rdi, .LC33[rip]
	call	puts@PLT
	lea	rdi, .LC34[rip]
	call	puts@PLT
	mov	DWORD PTR -88[rbp], 1
.L108:
	mov	rax, QWORD PTR -32[rbp]
	mov	ebx, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 4[rax]
	movzx	eax, al
	mov	edi, eax
	call	rel_type
	mov	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	edx, DWORD PTR 4[rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	mov	rsi, QWORD PTR -24[rbp]
	mov	r9, rsi
	mov	r8d, ebx
	mov	esi, eax
	lea	rdi, .LC35[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L106
.L114:
	nop
	jmp	.L106
.L115:
	nop
.L106:
	add	DWORD PTR -84[rbp], 1
.L104:
	mov	eax, DWORD PTR -84[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -80[rbp]
	mov	eax, DWORD PTR 20[rax]
	shr	eax, 3
	mov	eax, eax
	cmp	rdx, rax
	jb	.L109
	jmp	.L102
.L112:
	nop
	jmp	.L102
.L113:
	nop
.L102:
	add	DWORD PTR -92[rbp], 1
.L100:
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	DWORD PTR -92[rbp], eax
	jl	.L110
	cmp	DWORD PTR -88[rbp], 0
	je	.L116
	mov	edi, 10
	call	putchar@PLT
.L116:
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	print_absolute_relocs, .-print_absolute_relocs
	.section	.rodata
	.align 8
.LC36:
	.string	"Unsupported relocation type: %d\n"
	.text
	.type	walk_relocs, @function
walk_relocs:
.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, 96
	mov	QWORD PTR -88[rbp], rdi
	mov	DWORD PTR -68[rbp], 0
	jmp	.L118
.L127:
	mov	rcx, QWORD PTR secs[rip]
	mov	eax, DWORD PTR -68[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	sal	rax, 3
	add	rax, rdx
	sal	rax, 3
	add	rax, rcx
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	eax, 9
	jne	.L128
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	QWORD PTR -48[rbp], rax
	mov	rdx, QWORD PTR secs[rip]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 28[rax]
	mov	ecx, eax
	mov	rax, rcx
	sal	rax, 3
	add	rax, rcx
	sal	rax, 3
	add	rax, rdx
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR 8[rax]
	and	eax, 2
	test	eax, eax
	je	.L129
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rax, QWORD PTR 64[rax]
	mov	QWORD PTR -24[rbp], rax
	mov	DWORD PTR -64[rbp], 0
	jmp	.L122
.L126:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 56[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 4[rax]
	shr	eax, 8
	mov	eax, eax
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 4[rax]
	and	eax, 255
	mov	DWORD PTR -60[rbp], eax
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, WORD PTR 14[rax]
	cmp	ax, -15
	je	.L130
	cmp	DWORD PTR -60[rbp], 0
	je	.L124
	cmp	DWORD PTR -60[rbp], 2
	je	.L124
	cmp	DWORD PTR -60[rbp], 1
	jne	.L125
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	rcx
	jmp	.L124
.L125:
	mov	eax, DWORD PTR -60[rbp]
	mov	esi, eax
	lea	rdi, .LC36[rip]
	mov	eax, 0
	call	die
	jmp	.L124
.L130:
	nop
.L124:
	add	DWORD PTR -64[rbp], 1
.L122:
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 20[rax]
	shr	eax, 3
	mov	eax, eax
	cmp	rdx, rax
	jb	.L126
	jmp	.L120
.L128:
	nop
	jmp	.L120
.L129:
	nop
.L120:
	add	DWORD PTR -68[rbp], 1
.L118:
	movzx	eax, WORD PTR ehdr[rip+48]
	movzx	eax, ax
	cmp	DWORD PTR -68[rbp], eax
	jl	.L127
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	walk_relocs, .-walk_relocs
	.type	count_reloc, @function
count_reloc:
.LFB24:
	.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	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR reloc_count[rip]
	add	rax, 1
	mov	QWORD PTR reloc_count[rip], rax
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	count_reloc, .-count_reloc
	.type	collect_reloc, @function
collect_reloc:
.LFB25:
	.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	QWORD PTR -16[rbp], rsi
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, DWORD PTR [rax]
	mov	rsi, QWORD PTR relocs[rip]
	mov	rax, QWORD PTR reloc_idx[rip]
	lea	rdx, 1[rax]
	mov	QWORD PTR reloc_idx[rip], rdx
	sal	rax, 3
	add	rax, rsi
	mov	edx, ecx
	mov	QWORD PTR [rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	collect_reloc, .-collect_reloc
	.type	cmp_relocs, @function
cmp_relocs:
.LFB26:
	.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	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	cmp	rdx, rax
	je	.L134
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	cmp	rdx, rax
	jbe	.L135
	mov	eax, 1
	jmp	.L138
.L135:
	mov	eax, -1
	jmp	.L138
.L134:
	mov	eax, 0
.L138:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	cmp_relocs, .-cmp_relocs
	.section	.rodata
	.align 8
.LC37:
	.string	"malloc of %d entries for relocs failed\n"
.LC38:
	.string	".section \".data.reloc\",\"a\""
.LC39:
	.string	".balign 4"
.LC40:
	.string	"\t .long 0x%08lx\n"
.LC41:
	.string	"%c%c%c%c"
	.text
	.type	emit_relocs, @function
emit_relocs:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	QWORD PTR reloc_count[rip], 0
	lea	rdi, count_reloc[rip]
	call	walk_relocs
	mov	rax, QWORD PTR reloc_count[rip]
	sal	rax, 3
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR relocs[rip], rax
	mov	rax, QWORD PTR relocs[rip]
	test	rax, rax
	jne	.L140
	mov	rax, QWORD PTR reloc_count[rip]
	mov	rsi, rax
	lea	rdi, .LC37[rip]
	mov	eax, 0
	call	die
.L140:
	mov	QWORD PTR reloc_idx[rip], 0
	lea	rdi, collect_reloc[rip]
	call	walk_relocs
	mov	rsi, QWORD PTR reloc_count[rip]
	mov	rax, QWORD PTR relocs[rip]
	lea	rcx, cmp_relocs[rip]
	mov	edx, 8
	mov	rdi, rax
	call	qsort@PLT
	cmp	DWORD PTR -20[rbp], 0
	je	.L141
	lea	rdi, .LC38[rip]
	call	puts@PLT
	lea	rdi, .LC39[rip]
	call	puts@PLT
	mov	DWORD PTR -16[rbp], 0
	jmp	.L142
.L143:
	mov	rdx, QWORD PTR relocs[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC40[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -16[rbp], 1
.L142:
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR reloc_count[rip]
	cmp	rdx, rax
	jb	.L143
	mov	edi, 10
	call	putchar@PLT
	jmp	.L148
.L141:
	mov	BYTE PTR -9[rbp], 0
	movzx	eax, BYTE PTR -9[rbp]
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -10[rbp]
	mov	BYTE PTR -11[rbp], al
	movzx	eax, BYTE PTR -11[rbp]
	mov	BYTE PTR -12[rbp], al
	movzx	eax, BYTE PTR -9[rbp]
	movzx	esi, al
	movzx	eax, BYTE PTR -10[rbp]
	movzx	ecx, al
	movzx	eax, BYTE PTR -11[rbp]
	movzx	edx, al
	movzx	eax, BYTE PTR -12[rbp]
	movzx	eax, al
	mov	r8d, esi
	mov	esi, eax
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -16[rbp], 0
	jmp	.L145
.L146:
	mov	rdx, QWORD PTR relocs[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	BYTE PTR -12[rbp], al
	mov	rdx, QWORD PTR relocs[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	shr	rax, 8
	mov	BYTE PTR -11[rbp], al
	mov	rdx, QWORD PTR relocs[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	shr	rax, 16
	mov	BYTE PTR -10[rbp], al
	mov	rdx, QWORD PTR relocs[rip]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	sal	rax, 3
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	shr	rax, 24
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -9[rbp]
	movzx	esi, al
	movzx	eax, BYTE PTR -10[rbp]
	movzx	ecx, al
	movzx	eax, BYTE PTR -11[rbp]
	movzx	edx, al
	movzx	eax, BYTE PTR -12[rbp]
	movzx	eax, al
	mov	r8d, esi
	mov	esi, eax
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -16[rbp], 1
.L145:
	mov	eax, DWORD PTR -16[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR reloc_count[rip]
	cmp	rdx, rax
	jb	.L146
.L148:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L147
	call	__stack_chk_fail@PLT
.L147:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	emit_relocs, .-emit_relocs
	.section	.rodata
	.align 8
.LC42:
	.string	"relocs [--abs-syms |--abs-relocs | --text] vmlinux\n"
	.text
	.type	usage, @function
usage:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	lea	rdi, .LC42[rip]
	mov	eax, 0
	call	die
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	usage, .-usage
	.section	.rodata
.LC43:
	.string	"--abs-syms"
.LC44:
	.string	"--abs-relocs"
.LC45:
	.string	"--text"
.LC46:
	.string	"r"
.LC47:
	.string	"Cannot open %s: %s\n"
	.text
	.globl	main
	.type	main, @function
main:
.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, 64
	mov	DWORD PTR -52[rbp], edi
	mov	QWORD PTR -64[rbp], rsi
	mov	DWORD PTR -40[rbp], 0
	mov	DWORD PTR -36[rbp], 0
	mov	DWORD PTR -32[rbp], 0
	mov	QWORD PTR -24[rbp], 0
	mov	DWORD PTR -28[rbp], 1
	jmp	.L151
.L157:
	mov	eax, DWORD PTR -28[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 45
	jne	.L152
	mov	rax, QWORD PTR -64[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC43[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L153
	mov	DWORD PTR -40[rbp], 1
	jmp	.L154
.L153:
	mov	rax, QWORD PTR -64[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC44[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L155
	mov	DWORD PTR -36[rbp], 1
	jmp	.L154
.L155:
	mov	rax, QWORD PTR -64[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC45[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L156
	mov	DWORD PTR -32[rbp], 1
	jmp	.L154
.L152:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L156
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -24[rbp], rax
	jmp	.L154
.L156:
	call	usage
.L154:
	add	DWORD PTR -28[rbp], 1
.L151:
	mov	eax, DWORD PTR -28[rbp]
	cmp	eax, DWORD PTR -52[rbp]
	jl	.L157
	cmp	QWORD PTR -24[rbp], 0
	jne	.L158
	call	usage
.L158:
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC46[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L159
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC47[rip]
	mov	eax, 0
	call	die
.L159:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	read_ehdr
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	read_shdrs
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	read_strtabs
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	read_symtabs
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	read_relocs
	cmp	DWORD PTR -40[rbp], 0
	je	.L160
	call	print_absolute_symbols
	mov	eax, 0
	jmp	.L161
.L160:
	cmp	DWORD PTR -36[rbp], 0
	je	.L162
	call	print_absolute_relocs
	mov	eax, 0
	jmp	.L161
.L162:
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	emit_relocs
	mov	eax, 0
.L161:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	main, .-main
	.section	.rodata
.LC48:
	.string	"STT_NOTYPE"
.LC49:
	.string	"STT_OBJECT"
.LC50:
	.string	"STT_FUNC"
.LC51:
	.string	"STT_SECTION"
.LC52:
	.string	"STT_FILE"
.LC53:
	.string	"STT_COMMON"
.LC54:
	.string	"STT_TLS"
	.section	.data.rel.local
	.align 32
	.type	type_name.3, @object
	.size	type_name.3, 56
type_name.3:
	.quad	.LC48
	.quad	.LC49
	.quad	.LC50
	.quad	.LC51
	.quad	.LC52
	.quad	.LC53
	.quad	.LC54
	.section	.rodata
.LC55:
	.string	"STB_LOCAL"
.LC56:
	.string	"STB_GLOBAL"
.LC57:
	.string	"STB_WEAK"
	.section	.data.rel.local
	.align 16
	.type	bind_name.2, @object
	.size	bind_name.2, 24
bind_name.2:
	.quad	.LC55
	.quad	.LC56
	.quad	.LC57
	.section	.rodata
.LC58:
	.string	"STV_DEFAULT"
.LC59:
	.string	"STV_INTERNAL"
.LC60:
	.string	"STV_HIDDEN"
.LC61:
	.string	"STV_PROTECTED"
	.section	.data.rel.local
	.align 32
	.type	visibility_name.1, @object
	.size	visibility_name.1, 32
visibility_name.1:
	.quad	.LC58
	.quad	.LC59
	.quad	.LC60
	.quad	.LC61
	.section	.rodata
.LC62:
	.string	"R_386_NONE"
.LC63:
	.string	"R_386_32"
.LC64:
	.string	"R_386_PC32"
.LC65:
	.string	"R_386_GOT32"
.LC66:
	.string	"R_386_PLT32"
.LC67:
	.string	"R_386_COPY"
.LC68:
	.string	"R_386_GLOB_DAT"
.LC69:
	.string	"R_386_JMP_SLOT"
.LC70:
	.string	"R_386_RELATIVE"
.LC71:
	.string	"R_386_GOTOFF"
.LC72:
	.string	"R_386_GOTPC"
	.section	.data.rel.local
	.align 32
	.type	type_name.0, @object
	.size	type_name.0, 88
type_name.0:
	.quad	.LC62
	.quad	.LC63
	.quad	.LC64
	.quad	.LC65
	.quad	.LC66
	.quad	.LC67
	.quad	.LC68
	.quad	.LC69
	.quad	.LC70
	.quad	.LC71
	.quad	.LC72
	.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	"794568.c"
	.text
	.local	ehdr
	.comm	ehdr,52,4
	.local	reloc_count
	.comm	reloc_count,4,4
	.local	reloc_idx
	.comm	reloc_idx,4,4
	.local	relocs
	.comm	relocs,4,4
	.local	secs
	.comm	secs,4,4
	.section	.rodata
	.align	2
.LC0:
	.ascii	"xen_irq_disable_direct_reloc\000"
	.align	2
.LC1:
	.ascii	"xen_save_fl_direct_reloc\000"
	.data
	.align	2
	.type	safe_abs_relocs, %object
	.size	safe_abs_relocs, 8
safe_abs_relocs:
	.word	.LC0
	.word	.LC1
	.section	.rodata
	.align	2
.LC2:
	.ascii	"VDSO\000"
	.align	2
.LC3:
	.ascii	"__crc_\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_safe_abs_reloc, %function
is_safe_abs_reloc:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L2
.L5:
	ldr	r2, .L8
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #2]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L3
	mov	r3, #1
	b	.L4
.L3:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L2:
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	bls	.L5
	mov	r2, #4
	ldr	r1, .L8+4
	ldr	r0, [fp, #-16]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L6
	mov	r3, #1
	b	.L4
.L6:
	mov	r2, #6
	ldr	r1, .L8+8
	ldr	r0, [fp, #-16]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L7
	mov	r3, #1
	b	.L4
.L7:
	mov	r3, #0
.L4:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L9:
	.align	2
.L8:
	.word	safe_abs_relocs
	.word	.LC2
	.word	.LC3
	.size	is_safe_abs_reloc, .-is_safe_abs_reloc
	.section	.rodata
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	die, %function
die:
	@ 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, .L12
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	add	r3, fp, #8
	str	r3, [fp, #-12]
	ldr	r3, .L12+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	vfprintf
	mov	r0, #1
	bl	exit
.L13:
	.align	2
.L12:
	.word	.LC4
	.word	stderr
	.size	die, .-die
	.section	.rodata
	.align	2
.LC5:
	.ascii	"unknown sym type name\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	sym_type, %function
sym_type:
	@ 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, #-16]
	ldr	r3, .L17
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r3, #6
	bhi	.L15
	ldr	r2, .L17+4
	ldr	r3, [fp, #-16]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-8]
.L15:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L18:
	.align	2
.L17:
	.word	.LC5
	.word	type_name.6266
	.size	sym_type, .-sym_type
	.section	.rodata
	.align	2
.LC6:
	.ascii	"unknown sym bind name\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	sym_bind, %function
sym_bind:
	@ 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, #-16]
	ldr	r3, .L22
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r3, #2
	bhi	.L20
	ldr	r2, .L22+4
	ldr	r3, [fp, #-16]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-8]
.L20:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L23:
	.align	2
.L22:
	.word	.LC6
	.word	bind_name.6271
	.size	sym_bind, .-sym_bind
	.section	.rodata
	.align	2
.LC7:
	.ascii	"unknown sym visibility name\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	sym_visibility, %function
sym_visibility:
	@ 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, #-16]
	ldr	r3, .L27
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	bhi	.L25
	ldr	r2, .L27+4
	ldr	r3, [fp, #-16]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-8]
.L25:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L28:
	.align	2
.L27:
	.word	.LC7
	.word	visibility_name.6276
	.size	sym_visibility, .-sym_visibility
	.section	.rodata
	.align	2
.LC8:
	.ascii	"unknown type rel type name\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	rel_type, %function
rel_type:
	@ 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, #-16]
	ldr	r3, .L32
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	cmp	r3, #10
	bhi	.L30
	ldr	r2, .L32+4
	ldr	r3, [fp, #-16]
	ldr	r3, [r2, r3, lsl #2]
	str	r3, [fp, #-8]
.L30:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L33:
	.align	2
.L32:
	.word	.LC8
	.word	type_name.6281
	.size	rel_type, .-rel_type
	.section	.rodata
	.align	2
.LC9:
	.ascii	"<noname>\000"
	.align	2
.LC10:
	.ascii	"ABSOLUTE\000"
	.align	2
.LC11:
	.ascii	"COMMON\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	sec_name, %function
sec_name:
	@ 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, #-16]
	ldr	r3, .L39
	ldr	r2, [r3]
	ldr	r3, .L39+4
	ldrh	r3, [r3, #50]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r3, [r3, #52]
	str	r3, [fp, #-8]
	ldr	r3, .L39+8
	str	r3, [fp, #-12]
	ldr	r3, .L39+4
	ldrh	r3, [r3, #48]
	mov	r2, r3
	ldr	r3, [fp, #-16]
	cmp	r3, r2
	bcs	.L35
	ldr	r3, .L39
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	b	.L36
.L35:
	ldr	r3, [fp, #-16]
	ldr	r2, .L39+12
	cmp	r3, r2
	bne	.L37
	ldr	r3, .L39+16
	str	r3, [fp, #-12]
	b	.L36
.L37:
	ldr	r3, [fp, #-16]
	ldr	r2, .L39+20
	cmp	r3, r2
	bne	.L36
	ldr	r3, .L39+24
	str	r3, [fp, #-12]
.L36:
	ldr	r3, [fp, #-12]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L40:
	.align	2
.L39:
	.word	secs
	.word	ehdr
	.word	.LC9
	.word	65521
	.word	.LC10
	.word	65522
	.word	.LC11
	.size	sec_name, .-sec_name
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	sym_name, %function
sym_name:
	@ 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, .L45
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L42
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	b	.L43
.L42:
	ldr	r3, .L45+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	ldrh	r3, [r3, #14]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r0, r3
	bl	sec_name
	str	r0, [fp, #-8]
.L43:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L46:
	.align	2
.L45:
	.word	.LC9
	.word	secs
	.size	sym_name, .-sym_name
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	elf16_to_cpu, %function
elf16_to_cpu:
	@ 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
	mov	r3, r0
	strh	r3, [fp, #-6]	@ movhi
	ldrh	r3, [fp, #-6]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	elf16_to_cpu, .-elf16_to_cpu
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	elf32_to_cpu, %function
elf32_to_cpu:
	@ 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, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	elf32_to_cpu, .-elf32_to_cpu
	.section	.rodata
	.align	2
.LC12:
	.ascii	"Cannot read ELF header: %s\012\000"
	.align	2
.LC13:
	.ascii	"\177ELF\000"
	.align	2
.LC14:
	.ascii	"No ELF magic\012\000"
	.align	2
.LC15:
	.ascii	"Not a 32 bit executable\012\000"
	.align	2
.LC16:
	.ascii	"Not a LSB ELF executable\012\000"
	.align	2
.LC17:
	.ascii	"Unknown ELF version\012\000"
	.align	2
.LC18:
	.ascii	"Unsupported ELF header type\012\000"
	.align	2
.LC19:
	.ascii	"Not for x86\012\000"
	.align	2
.LC20:
	.ascii	"Bad Elf header size\012\000"
	.align	2
.LC21:
	.ascii	"Bad program header entry\012\000"
	.align	2
.LC22:
	.ascii	"Bad section header entry\012\000"
	.align	2
.LC23:
	.ascii	"String table index out of bounds\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_ehdr, %function
read_ehdr:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r2, #1
	mov	r1, #52
	ldr	r0, .L65
	bl	fread
	mov	r3, r0
	cmp	r3, #1
	beq	.L52
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L65+4
	bl	die
.L52:
	mov	r2, #4
	ldr	r1, .L65+8
	ldr	r0, .L65
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L53
	ldr	r0, .L65+12
	bl	die
.L53:
	ldr	r3, .L65
	ldrb	r3, [r3, #4]	@ zero_extendqisi2
	cmp	r3, #1
	beq	.L54
	ldr	r0, .L65+16
	bl	die
.L54:
	ldr	r3, .L65
	ldrb	r3, [r3, #5]	@ zero_extendqisi2
	cmp	r3, #1
	beq	.L55
	ldr	r0, .L65+20
	bl	die
.L55:
	ldr	r3, .L65
	ldrb	r3, [r3, #6]	@ zero_extendqisi2
	cmp	r3, #1
	beq	.L56
	ldr	r0, .L65+24
	bl	die
.L56:
	ldr	r3, .L65
	ldrh	r3, [r3, #16]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L65
	strh	r2, [r3, #16]	@ movhi
	ldr	r3, .L65
	ldrh	r3, [r3, #18]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L65
	strh	r2, [r3, #18]	@ movhi
	ldr	r3, .L65
	ldr	r3, [r3, #20]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r3, r0
	ldr	r2, .L65
	str	r3, [r2, #20]
	ldr	r3, .L65
	ldr	r3, [r3, #24]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r3, r0
	ldr	r2, .L65
	str	r3, [r2, #24]
	ldr	r3, .L65
	ldr	r3, [r3, #28]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r3, r0
	ldr	r2, .L65
	str	r3, [r2, #28]
	ldr	r3, .L65
	ldr	r3, [r3, #32]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r3, r0
	ldr	r2, .L65
	str	r3, [r2, #32]
	ldr	r3, .L65
	ldr	r3, [r3, #36]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r3, r0
	ldr	r2, .L65
	str	r3, [r2, #36]
	ldr	r3, .L65
	ldrh	r3, [r3, #40]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L65
	strh	r2, [r3, #40]	@ movhi
	ldr	r3, .L65
	ldrh	r3, [r3, #42]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L65
	strh	r2, [r3, #42]	@ movhi
	ldr	r3, .L65
	ldrh	r3, [r3, #44]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L65
	strh	r2, [r3, #44]	@ movhi
	ldr	r3, .L65
	ldrh	r3, [r3, #46]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L65
	strh	r2, [r3, #46]	@ movhi
	ldr	r3, .L65
	ldrh	r3, [r3, #48]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L65
	strh	r2, [r3, #48]	@ movhi
	ldr	r3, .L65
	ldrh	r3, [r3, #50]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L65
	strh	r2, [r3, #50]	@ movhi
	ldr	r3, .L65
	ldrh	r3, [r3, #16]
	cmp	r3, #2
	beq	.L57
	ldr	r3, .L65
	ldrh	r3, [r3, #16]
	cmp	r3, #3
	beq	.L57
	ldr	r0, .L65+28
	bl	die
.L57:
	ldr	r3, .L65
	ldrh	r3, [r3, #18]
	cmp	r3, #3
	beq	.L58
	ldr	r0, .L65+32
	bl	die
.L58:
	ldr	r3, .L65
	ldr	r3, [r3, #20]
	cmp	r3, #1
	beq	.L59
	ldr	r0, .L65+24
	bl	die
.L59:
	ldr	r3, .L65
	ldrh	r3, [r3, #40]
	cmp	r3, #52
	beq	.L60
	ldr	r0, .L65+36
	bl	die
.L60:
	ldr	r3, .L65
	ldrh	r3, [r3, #42]
	cmp	r3, #32
	beq	.L61
	ldr	r0, .L65+40
	bl	die
.L61:
	ldr	r3, .L65
	ldrh	r3, [r3, #46]
	cmp	r3, #40
	beq	.L62
	ldr	r0, .L65+44
	bl	die
.L62:
	ldr	r3, .L65
	ldrh	r2, [r3, #50]
	ldr	r3, .L65
	ldrh	r3, [r3, #48]
	cmp	r2, r3
	bcc	.L64
	ldr	r0, .L65+48
	bl	die
.L64:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L66:
	.align	2
.L65:
	.word	ehdr
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.size	read_ehdr, .-read_ehdr
	.section	.rodata
	.align	2
.LC24:
	.ascii	"Unable to allocate %d section headers\012\000"
	.align	2
.LC25:
	.ascii	"Seek to %d failed: %s\012\000"
	.align	2
.LC26:
	.ascii	"Cannot read ELF section headers %d/%d: %s\012\000"
	.align	2
.LC27:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_shdrs, %function
read_shdrs:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #68
	str	r0, [fp, #-72]
	ldr	r3, .L75
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, .L75+4
	ldrh	r3, [r3, #48]
	mov	r1, #56
	mov	r0, r3
	bl	calloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L75+8
	str	r2, [r3]
	ldr	r3, .L75+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L68
	ldr	r3, .L75+4
	ldrh	r3, [r3, #48]
	mov	r1, r3
	ldr	r0, .L75+12
	bl	die
.L68:
	ldr	r3, .L75+4
	ldr	r3, [r3, #32]
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-72]
	bl	fseek
	mov	r3, r0
	cmp	r3, #0
	bge	.L69
	ldr	r3, .L75+4
	ldr	r4, [r3, #32]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L75+16
	bl	die
.L69:
	mov	r3, #0
	str	r3, [fp, #-64]
	b	.L70
.L73:
	ldr	r3, .L75+8
	ldr	r1, [r3]
	ldr	r2, [fp, #-64]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-60]
	sub	r0, fp, #56
	ldr	r3, [fp, #-72]
	mov	r2, #1
	mov	r1, #40
	bl	fread
	mov	r3, r0
	cmp	r3, #1
	beq	.L71
	ldr	r3, .L75+4
	ldrh	r3, [r3, #48]
	mov	r4, r3
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r4
	ldr	r1, [fp, #-64]
	ldr	r0, .L75+20
	bl	die
.L71:
	ldr	r3, [fp, #-56]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3]
	ldr	r3, [fp, #-52]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-48]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-44]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-40]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-36]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #24]
	ldr	r3, [fp, #-28]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #28]
	ldr	r3, [fp, #-24]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #32]
	ldr	r3, [fp, #-20]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-60]
	str	r2, [r3, #36]
	ldr	r3, [fp, #-60]
	ldr	r3, [r3, #24]
	ldr	r2, .L75+4
	ldrh	r2, [r2, #48]
	cmp	r3, r2
	bcs	.L72
	ldr	r3, .L75+8
	ldr	r1, [r3]
	ldr	r3, [fp, #-60]
	ldr	r2, [r3, #24]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r2, r1, r3
	ldr	r3, [fp, #-60]
	str	r2, [r3, #40]
.L72:
	ldr	r3, [fp, #-64]
	add	r3, r3, #1
	str	r3, [fp, #-64]
.L70:
	ldr	r3, .L75+4
	ldrh	r3, [r3, #48]
	mov	r2, r3
	ldr	r3, [fp, #-64]
	cmp	r3, r2
	blt	.L73
	nop
	ldr	r3, .L75
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L74
	bl	__stack_chk_fail
.L74:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L76:
	.align	2
.L75:
	.word	.LC27
	.word	ehdr
	.word	secs
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.size	read_shdrs, .-read_shdrs
	.section	.rodata
	.align	2
.LC28:
	.ascii	"malloc of %d bytes for strtab failed\012\000"
	.align	2
.LC29:
	.ascii	"Cannot read symbol table: %s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_strtabs, %function
read_strtabs:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L78
.L83:
	ldr	r3, .L85
	ldr	r1, [r3]
	ldr	r2, [fp, #-20]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	cmp	r3, #3
	bne	.L84
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #20]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3, #52]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #52]
	cmp	r3, #0
	bne	.L81
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #20]
	mov	r1, r3
	ldr	r0, .L85+4
	bl	die
.L81:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #16]
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	fseek
	mov	r3, r0
	cmp	r3, #0
	bge	.L82
	ldr	r3, [fp, #-16]
	ldr	r4, [r3, #16]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L85+8
	bl	die
.L82:
	ldr	r3, [fp, #-16]
	ldr	r0, [r3, #52]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-24]
	mov	r1, #1
	bl	fread
	mov	r2, r0
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #20]
	cmp	r2, r3
	beq	.L80
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L85+12
	bl	die
	b	.L80
.L84:
	nop
.L80:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L78:
	ldr	r3, .L85+16
	ldrh	r3, [r3, #48]
	mov	r2, r3
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	blt	.L83
	nop
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L86:
	.align	2
.L85:
	.word	secs
	.word	.LC28
	.word	.LC25
	.word	.LC29
	.word	ehdr
	.size	read_strtabs, .-read_strtabs
	.section	.rodata
	.align	2
.LC30:
	.ascii	"malloc of %d bytes for symtab failed\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_symtabs, %function
read_symtabs:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L88
.L96:
	ldr	r3, .L98
	ldr	r1, [r3]
	ldr	r2, [fp, #-28]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	cmp	r3, #2
	bne	.L97
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-20]
	str	r2, [r3, #44]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #44]
	cmp	r3, #0
	bne	.L91
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	mov	r1, r3
	ldr	r0, .L98+4
	bl	die
.L91:
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #16]
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	fseek
	mov	r3, r0
	cmp	r3, #0
	bge	.L92
	ldr	r3, [fp, #-20]
	ldr	r4, [r3, #16]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L98+8
	bl	die
.L92:
	ldr	r3, [fp, #-20]
	ldr	r0, [r3, #44]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-32]
	mov	r1, #1
	bl	fread
	mov	r2, r0
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	cmp	r2, r3
	beq	.L93
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L98+12
	bl	die
.L93:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L94
.L95:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #44]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #4
	add	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-16]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	ldrh	r3, [r3, #14]
	mov	r0, r3
	bl	elf16_to_cpu
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	strh	r2, [r3, #14]	@ movhi
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L94:
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	lsr	r2, r3, #4
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bhi	.L95
	b	.L90
.L97:
	nop
.L90:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L88:
	ldr	r3, .L98+16
	ldrh	r3, [r3, #48]
	mov	r2, r3
	ldr	r3, [fp, #-28]
	cmp	r3, r2
	blt	.L96
	nop
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L99:
	.align	2
.L98:
	.word	secs
	.word	.LC30
	.word	.LC25
	.word	.LC29
	.word	ehdr
	.size	read_symtabs, .-read_symtabs
	.section	.rodata
	.align	2
.LC31:
	.ascii	"malloc of %d bytes for relocs failed\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_relocs, %function
read_relocs:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	str	r0, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L101
.L109:
	ldr	r3, .L111
	ldr	r1, [r3]
	ldr	r2, [fp, #-28]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	cmp	r3, #9
	bne	.L110
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-20]
	str	r2, [r3, #48]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #48]
	cmp	r3, #0
	bne	.L104
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	mov	r1, r3
	ldr	r0, .L111+4
	bl	die
.L104:
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #16]
	mov	r2, #0
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	fseek
	mov	r3, r0
	cmp	r3, #0
	bge	.L105
	ldr	r3, [fp, #-20]
	ldr	r4, [r3, #16]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L111+8
	bl	die
.L105:
	ldr	r3, [fp, #-20]
	ldr	r0, [r3, #48]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #20]
	ldr	r3, [fp, #-32]
	mov	r1, #1
	bl	fread
	mov	r2, r0
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	cmp	r2, r3
	beq	.L106
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L111+12
	bl	die
.L106:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L107
.L108:
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #48]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #3
	add	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	mov	r0, r3
	bl	elf32_to_cpu
	mov	r2, r0
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L107:
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #20]
	lsr	r2, r3, #3
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bhi	.L108
	b	.L103
.L110:
	nop
.L103:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L101:
	ldr	r3, .L111+16
	ldrh	r3, [r3, #48]
	mov	r2, r3
	ldr	r3, [fp, #-28]
	cmp	r3, r2
	blt	.L109
	nop
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L112:
	.align	2
.L111:
	.word	secs
	.word	.LC31
	.word	.LC25
	.word	.LC29
	.word	ehdr
	.size	read_relocs, .-read_relocs
	.section	.rodata
	.align	2
.LC32:
	.ascii	"Absolute symbols\000"
	.align	2
.LC33:
	.ascii	" Num:    Value Size  Type       Bind        Visibil"
	.ascii	"ity  Name\000"
	.align	2
.LC34:
	.ascii	"%5d %08x %5d %10s %10s %12s %s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_absolute_symbols, %function
print_absolute_symbols:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #48
	ldr	r0, .L124
	bl	puts
	ldr	r0, .L124+4
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L114
.L121:
	ldr	r3, .L124+8
	ldr	r1, [r3]
	ldr	r2, [fp, #-48]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #4]
	cmp	r3, #2
	bne	.L122
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #44]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #40]
	ldr	r3, [r3, #52]
	str	r3, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L117
.L120:
	ldr	r3, [fp, #-40]
	ldr	r2, [r3, #44]
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #4
	add	r3, r2, r3
	str	r3, [fp, #-28]
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-32]
	bl	sym_name
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-28]
	ldrh	r3, [r3, #14]
	ldr	r2, .L124+12
	cmp	r3, r2
	bne	.L123
	ldr	r3, [fp, #-28]
	ldr	r4, [r3, #4]
	ldr	r3, [fp, #-28]
	ldr	r5, [r3, #8]
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3, #12]	@ zero_extendqisi2
	and	r3, r3, #15
	mov	r0, r3
	bl	sym_type
	mov	r6, r0
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3, #12]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	mov	r0, r3
	bl	sym_bind
	mov	r7, r0
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3, #13]	@ zero_extendqisi2
	and	r3, r3, #3
	mov	r0, r3
	bl	sym_visibility
	mov	r2, r0
	ldr	r3, [fp, #-24]
	str	r3, [sp, #12]
	str	r2, [sp, #8]
	str	r7, [sp, #4]
	str	r6, [sp]
	mov	r3, r5
	mov	r2, r4
	ldr	r1, [fp, #-44]
	ldr	r0, .L124+16
	bl	printf
	b	.L119
.L123:
	nop
.L119:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L117:
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #20]
	lsr	r2, r3, #4
	ldr	r3, [fp, #-44]
	cmp	r2, r3
	bhi	.L120
	b	.L116
.L122:
	nop
.L116:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L114:
	ldr	r3, .L124+20
	ldrh	r3, [r3, #48]
	mov	r2, r3
	ldr	r3, [fp, #-48]
	cmp	r3, r2
	blt	.L121
	mov	r0, #10
	bl	putchar
	nop
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L125:
	.align	2
.L124:
	.word	.LC32
	.word	.LC33
	.word	secs
	.word	65521
	.word	.LC34
	.word	ehdr
	.size	print_absolute_symbols, .-print_absolute_symbols
	.section	.rodata
	.align	2
.LC35:
	.ascii	"WARNING: Absolute relocations present\000"
	.align	2
.LC36:
	.ascii	"Offset     Info     Type     Sym.Value Sym.Name\000"
	.align	2
.LC37:
	.ascii	"%08x %08x %10s %08x  %s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	print_absolute_relocs, %function
print_absolute_relocs:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	sub	sp, sp, #56
	mov	r3, #0
	str	r3, [fp, #-52]
	mov	r3, #0
	str	r3, [fp, #-56]
	b	.L127
.L137:
	ldr	r3, .L144
	ldr	r1, [r3]
	ldr	r2, [fp, #-56]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	ldr	r3, [r3, #4]
	cmp	r3, #9
	bne	.L139
	ldr	r3, [fp, #-44]
	ldr	r3, [r3, #40]
	str	r3, [fp, #-40]
	ldr	r3, .L144
	ldr	r1, [r3]
	ldr	r3, [fp, #-44]
	ldr	r2, [r3, #28]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #8]
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L140
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #44]
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-40]
	ldr	r3, [r3, #40]
	ldr	r3, [r3, #52]
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L131
.L136:
	ldr	r3, [fp, #-44]
	ldr	r2, [r3, #48]
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #3
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	lsr	r3, r3, #8
	lsl	r3, r3, #4
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	sym_name
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-20]
	ldrh	r3, [r3, #14]
	ldr	r2, .L144+4
	cmp	r3, r2
	bne	.L141
	ldr	r0, [fp, #-16]
	bl	is_safe_abs_reloc
	mov	r3, r0
	cmp	r3, #0
	bne	.L142
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	bne	.L135
	ldr	r0, .L144+8
	bl	puts
	ldr	r0, .L144+12
	bl	puts
	mov	r3, #1
	str	r3, [fp, #-52]
.L135:
	ldr	r3, [fp, #-24]
	ldr	r4, [r3]
	ldr	r3, [fp, #-24]
	ldr	r5, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #4]
	and	r3, r3, #255
	mov	r0, r3
	bl	rel_type
	mov	r1, r0
	ldr	r3, [fp, #-20]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-16]
	str	r2, [sp, #4]
	str	r3, [sp]
	mov	r3, r1
	mov	r2, r5
	mov	r1, r4
	ldr	r0, .L144+16
	bl	printf
	b	.L133
.L141:
	nop
	b	.L133
.L142:
	nop
.L133:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L131:
	ldr	r3, [fp, #-44]
	ldr	r3, [r3, #20]
	lsr	r2, r3, #3
	ldr	r3, [fp, #-48]
	cmp	r2, r3
	bhi	.L136
	b	.L129
.L139:
	nop
	b	.L129
.L140:
	nop
.L129:
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
.L127:
	ldr	r3, .L144+20
	ldrh	r3, [r3, #48]
	mov	r2, r3
	ldr	r3, [fp, #-56]
	cmp	r3, r2
	blt	.L137
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	beq	.L143
	mov	r0, #10
	bl	putchar
.L143:
	nop
	sub	sp, fp, #12
	@ sp needed
	pop	{r4, r5, fp, pc}
.L145:
	.align	2
.L144:
	.word	secs
	.word	65521
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	ehdr
	.size	print_absolute_relocs, .-print_absolute_relocs
	.section	.rodata
	.align	2
.LC38:
	.ascii	"Unsupported relocation type: %d\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	walk_relocs, %function
walk_relocs:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L147
.L156:
	ldr	r3, .L160
	ldr	r1, [r3]
	ldr	r2, [fp, #-44]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #4]
	cmp	r3, #9
	bne	.L157
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #40]
	str	r3, [fp, #-32]
	ldr	r3, .L160
	ldr	r1, [r3]
	ldr	r3, [fp, #-36]
	ldr	r2, [r3, #28]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #3
	add	r3, r1, r3
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	ldr	r3, [r3, #8]
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L158
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #44]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #40]
	ldr	r3, [r3, #52]
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L151
.L155:
	ldr	r3, [fp, #-36]
	ldr	r2, [r3, #48]
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #3
	add	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	lsr	r3, r3, #8
	lsl	r3, r3, #4
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #4]
	and	r3, r3, #255
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	ldrh	r3, [r3, #14]
	ldr	r2, .L160+4
	cmp	r3, r2
	beq	.L159
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L153
	ldr	r3, [fp, #-8]
	cmp	r3, #2
	beq	.L153
	ldr	r3, [fp, #-8]
	cmp	r3, #1
	bne	.L154
	ldr	r3, [fp, #-48]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	blx	r3
	b	.L153
.L154:
	ldr	r1, [fp, #-8]
	ldr	r0, .L160+8
	bl	die
	b	.L153
.L159:
	nop
.L153:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L151:
	ldr	r3, [fp, #-36]
	ldr	r3, [r3, #20]
	lsr	r2, r3, #3
	ldr	r3, [fp, #-40]
	cmp	r2, r3
	bhi	.L155
	b	.L149
.L157:
	nop
	b	.L149
.L158:
	nop
.L149:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L147:
	ldr	r3, .L160+12
	ldrh	r3, [r3, #48]
	mov	r2, r3
	ldr	r3, [fp, #-44]
	cmp	r3, r2
	blt	.L156
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L161:
	.align	2
.L160:
	.word	secs
	.word	65521
	.word	.LC38
	.word	ehdr
	.size	walk_relocs, .-walk_relocs
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	count_reloc, %function
count_reloc:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r3, .L163
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L163
	str	r3, [r2]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L164:
	.align	2
.L163:
	.word	reloc_count
	.size	count_reloc, .-count_reloc
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	collect_reloc, %function
collect_reloc:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r3, .L166
	ldr	r2, [r3]
	ldr	r3, .L166+4
	ldr	r3, [r3]
	add	r1, r3, #1
	ldr	r0, .L166+4
	str	r1, [r0]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-8]
	ldr	r2, [r2]
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L167:
	.align	2
.L166:
	.word	relocs
	.word	reloc_idx
	.size	collect_reloc, .-collect_reloc
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cmp_relocs, %function
cmp_relocs:
	@ 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, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	cmp	r2, r3
	beq	.L169
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	cmp	r2, r3
	bls	.L170
	mov	r3, #1
	b	.L173
.L170:
	mvn	r3, #0
	b	.L173
.L169:
	mov	r3, #0
.L173:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	cmp_relocs, .-cmp_relocs
	.section	.rodata
	.align	2
.LC39:
	.ascii	"malloc of %d entries for relocs failed\012\000"
	.align	2
.LC40:
	.ascii	".section \".data.reloc\",\"a\"\000"
	.align	2
.LC41:
	.ascii	".balign 4\000"
	.align	2
.LC42:
	.ascii	"\011 .long 0x%08lx\012\000"
	.align	2
.LC43:
	.ascii	"%c%c%c%c\000"
	.align	2
.LC44:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	emit_relocs, %function
emit_relocs:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-24]
	ldr	r3, .L184
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L184+4
	mov	r2, #0
	str	r2, [r3]
	ldr	r0, .L184+8
	bl	walk_relocs
	ldr	r3, .L184+4
	ldr	r3, [r3]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L184+12
	str	r2, [r3]
	ldr	r3, .L184+12
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L175
	ldr	r3, .L184+4
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L184+16
	bl	die
.L175:
	ldr	r3, .L184+20
	mov	r2, #0
	str	r2, [r3]
	ldr	r0, .L184+24
	bl	walk_relocs
	ldr	r3, .L184+12
	ldr	r0, [r3]
	ldr	r3, .L184+4
	ldr	r1, [r3]
	ldr	r3, .L184+28
	mov	r2, #4
	bl	qsort
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L176
	ldr	r0, .L184+32
	bl	puts
	ldr	r0, .L184+36
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L177
.L178:
	ldr	r3, .L184+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L184+40
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L177:
	ldr	r2, [fp, #-16]
	ldr	r3, .L184+4
	ldr	r3, [r3]
	cmp	r2, r3
	bcc	.L178
	mov	r0, #10
	bl	putchar
	b	.L183
.L176:
	mov	r3, #0
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	strb	r3, [fp, #-10]
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	strb	r3, [fp, #-11]
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	strb	r3, [fp, #-12]
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	mov	r1, r3
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	mov	r2, r3
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	mov	r0, r3
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	str	r3, [sp]
	mov	r3, r0
	ldr	r0, .L184+44
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L180
.L181:
	ldr	r3, .L184+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	and	r3, r3, #255
	strb	r3, [fp, #-12]
	ldr	r3, .L184+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	lsr	r3, r3, #8
	and	r3, r3, #255
	strb	r3, [fp, #-11]
	ldr	r3, .L184+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	lsr	r3, r3, #16
	and	r3, r3, #255
	strb	r3, [fp, #-10]
	ldr	r3, .L184+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r3, [r3]
	lsr	r3, r3, #24
	and	r3, r3, #255
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-12]	@ zero_extendqisi2
	mov	r1, r3
	ldrb	r3, [fp, #-11]	@ zero_extendqisi2
	mov	r2, r3
	ldrb	r3, [fp, #-10]	@ zero_extendqisi2
	mov	r0, r3
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	str	r3, [sp]
	mov	r3, r0
	ldr	r0, .L184+44
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L180:
	ldr	r2, [fp, #-16]
	ldr	r3, .L184+4
	ldr	r3, [r3]
	cmp	r2, r3
	bcc	.L181
.L183:
	nop
	ldr	r3, .L184
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L182
	bl	__stack_chk_fail
.L182:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L185:
	.align	2
.L184:
	.word	.LC44
	.word	reloc_count
	.word	count_reloc
	.word	relocs
	.word	.LC39
	.word	reloc_idx
	.word	collect_reloc
	.word	cmp_relocs
	.word	.LC40
	.word	.LC41
	.word	.LC42
	.word	.LC43
	.size	emit_relocs, .-emit_relocs
	.section	.rodata
	.align	2
.LC45:
	.ascii	"relocs [--abs-syms |--abs-relocs | --text] vmlinux\012"
	.ascii	"\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	usage, %function
usage:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r0, .L187
	bl	die
	nop
	pop	{fp, pc}
.L188:
	.align	2
.L187:
	.word	.LC45
	.size	usage, .-usage
	.section	.rodata
	.align	2
.LC46:
	.ascii	"--abs-syms\000"
	.align	2
.LC47:
	.ascii	"--abs-relocs\000"
	.align	2
.LC48:
	.ascii	"--text\000"
	.align	2
.LC49:
	.ascii	"r\000"
	.align	2
.LC50:
	.ascii	"Cannot open %s: %s\012\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ 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]
	mov	r3, #0
	str	r3, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #1
	str	r3, [fp, #-16]
	b	.L190
.L196:
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #45
	bne	.L191
	ldr	r3, [fp, #-44]
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r1, .L202
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L192
	mov	r3, #1
	str	r3, [fp, #-32]
	b	.L193
.L192:
	ldr	r3, [fp, #-44]
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r1, .L202+4
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L194
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L193
.L194:
	ldr	r3, [fp, #-44]
	add	r3, r3, #4
	ldr	r3, [r3]
	ldr	r1, .L202+8
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L195
	mov	r3, #1
	str	r3, [fp, #-24]
	b	.L193
.L191:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L195
	ldr	r3, [fp, #-8]
	str	r3, [fp, #-20]
	b	.L193
.L195:
	bl	usage
.L193:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L190:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-40]
	cmp	r2, r3
	blt	.L196
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L197
	bl	usage
.L197:
	ldr	r1, .L202+12
	ldr	r0, [fp, #-20]
	bl	fopen
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L198
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-20]
	ldr	r0, .L202+16
	bl	die
.L198:
	ldr	r0, [fp, #-12]
	bl	read_ehdr
	ldr	r0, [fp, #-12]
	bl	read_shdrs
	ldr	r0, [fp, #-12]
	bl	read_strtabs
	ldr	r0, [fp, #-12]
	bl	read_symtabs
	ldr	r0, [fp, #-12]
	bl	read_relocs
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L199
	bl	print_absolute_symbols
	mov	r3, #0
	b	.L200
.L199:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L201
	bl	print_absolute_relocs
	mov	r3, #0
	b	.L200
.L201:
	ldr	r0, [fp, #-24]
	bl	emit_relocs
	mov	r3, #0
.L200:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L203:
	.align	2
.L202:
	.word	.LC46
	.word	.LC47
	.word	.LC48
	.word	.LC49
	.word	.LC50
	.size	main, .-main
	.section	.rodata
	.align	2
.LC51:
	.ascii	"STT_NOTYPE\000"
	.align	2
.LC52:
	.ascii	"STT_OBJECT\000"
	.align	2
.LC53:
	.ascii	"STT_FUNC\000"
	.align	2
.LC54:
	.ascii	"STT_SECTION\000"
	.align	2
.LC55:
	.ascii	"STT_FILE\000"
	.align	2
.LC56:
	.ascii	"STT_COMMON\000"
	.align	2
.LC57:
	.ascii	"STT_TLS\000"
	.data
	.align	2
	.type	type_name.6266, %object
	.size	type_name.6266, 28
type_name.6266:
	.word	.LC51
	.word	.LC52
	.word	.LC53
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.section	.rodata
	.align	2
.LC58:
	.ascii	"STB_LOCAL\000"
	.align	2
.LC59:
	.ascii	"STB_GLOBAL\000"
	.align	2
.LC60:
	.ascii	"STB_WEAK\000"
	.data
	.align	2
	.type	bind_name.6271, %object
	.size	bind_name.6271, 12
bind_name.6271:
	.word	.LC58
	.word	.LC59
	.word	.LC60
	.section	.rodata
	.align	2
.LC61:
	.ascii	"STV_DEFAULT\000"
	.align	2
.LC62:
	.ascii	"STV_INTERNAL\000"
	.align	2
.LC63:
	.ascii	"STV_HIDDEN\000"
	.align	2
.LC64:
	.ascii	"STV_PROTECTED\000"
	.data
	.align	2
	.type	visibility_name.6276, %object
	.size	visibility_name.6276, 16
visibility_name.6276:
	.word	.LC61
	.word	.LC62
	.word	.LC63
	.word	.LC64
	.section	.rodata
	.align	2
.LC65:
	.ascii	"R_386_NONE\000"
	.align	2
.LC66:
	.ascii	"R_386_32\000"
	.align	2
.LC67:
	.ascii	"R_386_PC32\000"
	.align	2
.LC68:
	.ascii	"R_386_GOT32\000"
	.align	2
.LC69:
	.ascii	"R_386_PLT32\000"
	.align	2
.LC70:
	.ascii	"R_386_COPY\000"
	.align	2
.LC71:
	.ascii	"R_386_GLOB_DAT\000"
	.align	2
.LC72:
	.ascii	"R_386_JMP_SLOT\000"
	.align	2
.LC73:
	.ascii	"R_386_RELATIVE\000"
	.align	2
.LC74:
	.ascii	"R_386_GOTOFF\000"
	.align	2
.LC75:
	.ascii	"R_386_GOTPC\000"
	.data
	.align	2
	.type	type_name.6281, %object
	.size	type_name.6281, 44
type_name.6281:
	.word	.LC65
	.word	.LC66
	.word	.LC67
	.word	.LC68
	.word	.LC69
	.word	.LC70
	.word	.LC71
	.word	.LC72
	.word	.LC73
	.word	.LC74
	.word	.LC75
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
