	.file	"18888203.c"
	.intel_syntax noprefix
	.text
	.globl	head
	.bss
	.align 8
	.type	head, @object
	.size	head, 8
head:
	.zero	8
	.globl	tail
	.align 8
	.type	tail, @object
	.size	tail, 8
tail:
	.zero	8
	.section	.rodata
.LC0:
	.string	"\nEnter the data : "
.LC1:
	.string	"%d"
	.align 8
.LC2:
	.string	"\nDo you want to add more elements in the list? (y/n) : "
.LC3:
	.string	"%c"
	.text
	.globl	create
	.type	create, @function
create:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
.L2:
	mov	edi, 24
	call	malloc@PLT
	mov	QWORD PTR -16[rbp], rax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR head[rip]
	test	rax, rax
	jne	.L3
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR head[rip], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR tail[rip], rax
	jmp	.L4
.L3:
	mov	rax, QWORD PTR tail[rip]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rdx, QWORD PTR tail[rip]
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR tail[rip], rax
.L4:
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	nop
.L5:
	call	getchar@PLT
	cmp	eax, 10
	jne	.L5
	lea	rax, -17[rbp]
	mov	rsi, rax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	movzx	eax, BYTE PTR -17[rbp]
	cmp	al, 121
	je	.L2
	movzx	eax, BYTE PTR -17[rbp]
	cmp	al, 89
	jne	.L9
	jmp	.L2
.L9:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L8
	call	__stack_chk_fail@PLT
.L8:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	create, .-create
	.section	.rodata
	.align 8
.LC4:
	.string	"\nEnter the data to be inserted at the beginning : "
	.text
	.globl	insert_beg
	.type	insert_beg, @function
insert_beg:
.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, 16
	mov	edi, 24
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	lea	rdi, .LC4[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR head[rip]
	test	rax, rax
	jne	.L11
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR head[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR tail[rip], rax
	jmp	.L13
.L11:
	mov	rax, QWORD PTR head[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rdx, QWORD PTR head[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR head[rip], rax
.L13:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	insert_beg, .-insert_beg
	.section	.rodata
	.align 8
.LC5:
	.string	"\nEnter the element to be inserted at the end : "
	.text
	.globl	insert_end
	.type	insert_end, @function
insert_end:
.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, 16
	mov	edi, 24
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	lea	rdi, .LC5[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], 0
	mov	rax, QWORD PTR head[rip]
	test	rax, rax
	jne	.L15
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR head[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR tail[rip], rax
	jmp	.L17
.L15:
	mov	rdx, QWORD PTR tail[rip]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR tail[rip]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR tail[rip], rax
.L17:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	insert_end, .-insert_end
	.section	.rodata
	.align 8
.LC6:
	.string	"\nEnter the position where you have to insert : "
	.text
	.globl	insert_pos
	.type	insert_pos, @function
insert_pos:
.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, 48
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -36[rbp], 1
	lea	rdi, .LC6[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, 1
	jne	.L19
	mov	eax, 0
	call	insert_beg
	jmp	.L25
.L19:
	mov	rax, QWORD PTR head[rip]
	mov	QWORD PTR -32[rbp], rax
	jmp	.L21
.L22:
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -32[rbp], rax
	add	DWORD PTR -36[rbp], 1
.L21:
	mov	eax, DWORD PTR -40[rbp]
	sub	eax, 1
	cmp	DWORD PTR -36[rbp], eax
	jl	.L22
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	jne	.L23
	mov	eax, 0
	call	insert_end
	jmp	.L25
.L23:
	mov	edi, 24
	call	malloc@PLT
	mov	QWORD PTR -24[rbp], rax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 16[rax], rdx
.L25:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L24
	call	__stack_chk_fail@PLT
.L24:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	insert_pos, .-insert_pos
	.section	.rodata
	.align 8
.LC7:
	.string	"\nDoubly Linked List is empty...!"
	.text
	.globl	delete_beg
	.type	delete_beg, @function
delete_beg:
.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, 16
	mov	rax, QWORD PTR head[rip]
	test	rax, rax
	jne	.L27
	lea	rdi, .LC7[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L29
.L27:
	mov	rax, QWORD PTR head[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR head[rip]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR 8[rax], 0
	mov	rax, QWORD PTR head[rip]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR head[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
.L29:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	delete_beg, .-delete_beg
	.section	.rodata
	.align 8
.LC8:
	.string	"\nDoubly Linked List is empty....!"
	.text
	.globl	delete_end
	.type	delete_end, @function
delete_end:
.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, 16
	mov	rax, QWORD PTR head[rip]
	test	rax, rax
	jne	.L31
	lea	rdi, .LC8[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L33
.L31:
	mov	rax, QWORD PTR tail[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR tail[rip]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR 16[rax], 0
	mov	rax, QWORD PTR tail[rip]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR tail[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
.L33:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	delete_end, .-delete_end
	.section	.rodata
	.align 8
.LC9:
	.string	"\nEnter the position where you have to delete : "
	.text
	.globl	delete_pos
	.type	delete_pos, @function
delete_pos:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -36[rbp], 1
	lea	rdi, .LC9[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, 1
	jne	.L35
	mov	eax, 0
	call	delete_beg
	jmp	.L41
.L35:
	mov	rax, QWORD PTR head[rip]
	mov	QWORD PTR -32[rbp], rax
	jmp	.L37
.L38:
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -32[rbp], rax
	add	DWORD PTR -36[rbp], 1
.L37:
	mov	eax, DWORD PTR -40[rbp]
	sub	eax, 1
	cmp	DWORD PTR -36[rbp], eax
	jl	.L38
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	test	rax, rax
	jne	.L39
	mov	eax, 0
	call	delete_end
	jmp	.L41
.L39:
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rdx, QWORD PTR 16[rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR 16[rax], rdx
	mov	rax, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
.L41:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L40
	call	__stack_chk_fail@PLT
.L40:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	delete_pos, .-delete_pos
	.section	.rodata
	.align 8
.LC10:
	.string	"\nThe Doubly Linked List is EMPTY....!"
	.align 8
.LC11:
	.string	"\nElements of the Doubly Linked List : "
.LC12:
	.string	"\t%d\n"
	.text
	.globl	display
	.type	display, @function
display:
.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, 16
	mov	rax, QWORD PTR head[rip]
	test	rax, rax
	jne	.L43
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L47
.L43:
	lea	rdi, .LC11[rip]
	call	puts@PLT
	mov	rax, QWORD PTR head[rip]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L45
.L46:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC12[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR -8[rbp], rax
.L45:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L46
.L47:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	display, .-display
	.globl	free_linked_list
	.type	free_linked_list, @function
free_linked_list:
.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, 16
	jmp	.L49
.L50:
	mov	rax, QWORD PTR head[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR head[rip]
	mov	rax, QWORD PTR 16[rax]
	mov	QWORD PTR head[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
.L49:
	mov	rax, QWORD PTR head[rip]
	test	rax, rax
	jne	.L50
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	free_linked_list, .-free_linked_list
	.section	.rodata
	.align 8
.LC13:
	.string	"\nFollowing functions can be performed : "
	.align 8
.LC14:
	.string	"\n1. Create a doubly linked lists"
	.align 8
.LC15:
	.string	"\n2. Insertion at the beginning"
.LC16:
	.string	"\n3. Insertion at the end"
	.align 8
.LC17:
	.string	"\n4. Insertion at a given position"
.LC18:
	.string	"\n5. Deletion at the beginning"
.LC19:
	.string	"\n6. Deletion at the end"
	.align 8
.LC20:
	.string	"\n7. Deletion at the given position"
	.align 8
.LC21:
	.string	"\n8. Display the doubly linked lists from head"
.LC22:
	.string	"\nEnter your choice (1-8): "
	.align 8
.LC23:
	.string	"\nDoubly Linked list is created...!"
	.align 8
.LC24:
	.string	"\nElement inserted at the beginning successfully....!"
	.align 8
.LC25:
	.string	"\nElement inserted at the end....!"
	.align 8
.LC26:
	.string	"\nElement is inserted at desired position...!"
	.align 8
.LC27:
	.string	"\nBeginning element is at deleted.....!"
.LC28:
	.string	"\nLast element is deleted....!"
.LC29:
	.string	"\nElement is deleted.....!"
.LC30:
	.string	"\nINVALID INPUT.....!"
	.align 8
.LC31:
	.string	"\nDo you want to perform more operations? (y/n) : "
	.text
	.globl	main
	.type	main, @function
main:
.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, 16
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
.L52:
	lea	rdi, .LC13[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC14[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC15[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC16[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC17[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC18[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC20[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC21[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC22[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -12[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, 8
	ja	.L53
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L55[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L55[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L55:
	.long	.L53-.L55
	.long	.L62-.L55
	.long	.L61-.L55
	.long	.L60-.L55
	.long	.L59-.L55
	.long	.L58-.L55
	.long	.L57-.L55
	.long	.L56-.L55
	.long	.L54-.L55
	.text
.L62:
	mov	eax, 0
	call	create
	lea	rdi, .LC23[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L63
.L61:
	mov	eax, 0
	call	insert_beg
	lea	rdi, .LC24[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L63
.L60:
	mov	eax, 0
	call	insert_end
	lea	rdi, .LC25[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L63
.L59:
	mov	eax, 0
	call	insert_pos
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L63
.L58:
	mov	eax, 0
	call	delete_beg
	lea	rdi, .LC27[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L63
.L57:
	mov	eax, 0
	call	delete_end
	lea	rdi, .LC28[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L63
.L56:
	mov	eax, 0
	call	delete_pos
	lea	rdi, .LC29[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L63
.L54:
	mov	eax, 0
	call	display
	jmp	.L63
.L53:
	lea	rdi, .LC30[rip]
	mov	eax, 0
	call	printf@PLT
.L63:
	lea	rdi, .LC31[rip]
	mov	eax, 0
	call	printf@PLT
	nop
.L64:
	call	getchar@PLT
	cmp	eax, 10
	jne	.L64
	lea	rax, -13[rbp]
	mov	rsi, rax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	movzx	eax, BYTE PTR -13[rbp]
	cmp	al, 121
	je	.L52
	movzx	eax, BYTE PTR -13[rbp]
	cmp	al, 89
	jne	.L66
	jmp	.L52
.L66:
	mov	eax, 0
	call	free_linked_list
	mov	eax, 0
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L68
	call	__stack_chk_fail@PLT
.L68:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	main, .-main
	.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	"18888203.c"
	.text
	.global	head
	.bss
	.align	2
	.type	head, %object
	.size	head, 4
head:
	.space	4
	.global	tail
	.align	2
	.type	tail, %object
	.size	tail, 4
tail:
	.space	4
	.section	.rodata
	.align	2
.LC0:
	.ascii	"\012Enter the data : \000"
	.align	2
.LC1:
	.ascii	"%d\000"
	.align	2
.LC2:
	.ascii	"\012Do you want to add more elements in the list? ("
	.ascii	"y/n) : \000"
	.align	2
.LC3:
	.ascii	"%c\000"
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	create
	.syntax unified
	.arm
	.fpu softvfp
	.type	create, %function
create:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, .L10
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
.L2:
	mov	r0, #12
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r0, .L10+4
	bl	printf
	ldr	r3, [fp, #-12]
	mov	r1, r3
	ldr	r0, .L10+8
	bl	__isoc99_scanf
	ldr	r3, [fp, #-12]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-12]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, .L10+12
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L3
	ldr	r2, .L10+12
	ldr	r3, [fp, #-12]
	str	r3, [r2]
	ldr	r2, .L10+16
	ldr	r3, [fp, #-12]
	str	r3, [r2]
	b	.L4
.L3:
	ldr	r3, .L10+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #8]
	ldr	r3, .L10+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-12]
	str	r2, [r3, #4]
	ldr	r2, .L10+16
	ldr	r3, [fp, #-12]
	str	r3, [r2]
.L4:
	ldr	r0, .L10+20
	bl	printf
	nop
.L5:
	bl	getchar
	mov	r3, r0
	cmp	r3, #10
	bne	.L5
	sub	r3, fp, #13
	mov	r1, r3
	ldr	r0, .L10+24
	bl	__isoc99_scanf
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r3, #121
	beq	.L2
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r3, #89
	bne	.L9
	b	.L2
.L9:
	nop
	ldr	r3, .L10
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L8
	bl	__stack_chk_fail
.L8:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L11:
	.align	2
.L10:
	.word	.LC4
	.word	.LC0
	.word	.LC1
	.word	head
	.word	tail
	.word	.LC2
	.word	.LC3
	.size	create, .-create
	.section	.rodata
	.align	2
.LC5:
	.ascii	"\012Enter the data to be inserted at the beginning "
	.ascii	": \000"
	.text
	.align	2
	.global	insert_beg
	.syntax unified
	.arm
	.fpu softvfp
	.type	insert_beg, %function
insert_beg:
	@ 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	r0, #12
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r0, .L16
	bl	printf
	ldr	r3, [fp, #-8]
	mov	r1, r3
	ldr	r0, .L16+4
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, .L16+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L13
	ldr	r2, .L16+8
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	ldr	r2, .L16+12
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	b	.L15
.L13:
	ldr	r3, .L16+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, .L16+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #8]
	ldr	r2, .L16+8
	ldr	r3, [fp, #-8]
	str	r3, [r2]
.L15:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L17:
	.align	2
.L16:
	.word	.LC5
	.word	.LC1
	.word	head
	.word	tail
	.size	insert_beg, .-insert_beg
	.section	.rodata
	.align	2
.LC6:
	.ascii	"\012Enter the element to be inserted at the end : \000"
	.text
	.align	2
	.global	insert_end
	.syntax unified
	.arm
	.fpu softvfp
	.type	insert_end, %function
insert_end:
	@ 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	r0, #12
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r0, .L22
	bl	printf
	ldr	r3, [fp, #-8]
	mov	r1, r3
	ldr	r0, .L22+4
	bl	__isoc99_scanf
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, .L22+8
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L19
	ldr	r2, .L22+8
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	ldr	r2, .L22+12
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	b	.L21
.L19:
	ldr	r3, .L22+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3, #4]
	ldr	r3, .L22+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #8]
	ldr	r2, .L22+12
	ldr	r3, [fp, #-8]
	str	r3, [r2]
.L21:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L23:
	.align	2
.L22:
	.word	.LC6
	.word	.LC1
	.word	head
	.word	tail
	.size	insert_end, .-insert_end
	.section	.rodata
	.align	2
.LC7:
	.ascii	"\012Enter the position where you have to insert : \000"
	.align	2
.LC8:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	insert_pos
	.syntax unified
	.arm
	.fpu softvfp
	.type	insert_pos, %function
insert_pos:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r3, .L32
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #1
	str	r3, [fp, #-20]
	ldr	r0, .L32+4
	bl	printf
	sub	r3, fp, #28
	mov	r1, r3
	ldr	r0, .L32+8
	bl	__isoc99_scanf
	ldr	r3, [fp, #-28]
	cmp	r3, #1
	bne	.L25
	bl	insert_beg
	b	.L31
.L25:
	ldr	r3, .L32+12
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	b	.L27
.L28:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L27:
	ldr	r3, [fp, #-28]
	sub	r3, r3, #1
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L28
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	bne	.L29
	bl	insert_end
	b	.L31
.L29:
	mov	r0, #12
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r0, .L32+16
	bl	printf
	ldr	r3, [fp, #-16]
	mov	r1, r3
	ldr	r0, .L32+8
	bl	__isoc99_scanf
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-24]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #8]
.L31:
	nop
	ldr	r3, .L32
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L30
	bl	__stack_chk_fail
.L30:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L33:
	.align	2
.L32:
	.word	.LC8
	.word	.LC7
	.word	.LC1
	.word	head
	.word	.LC0
	.size	insert_pos, .-insert_pos
	.section	.rodata
	.align	2
.LC9:
	.ascii	"\012Doubly Linked List is empty...!\000"
	.text
	.align	2
	.global	delete_beg
	.syntax unified
	.arm
	.fpu softvfp
	.type	delete_beg, %function
delete_beg:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L38
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L35
	ldr	r0, .L38+4
	bl	printf
	b	.L37
.L35:
	ldr	r3, .L38
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, .L38
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, .L38
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	ldr	r2, .L38
	str	r3, [r2]
	ldr	r0, [fp, #-8]
	bl	free
.L37:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L39:
	.align	2
.L38:
	.word	head
	.word	.LC9
	.size	delete_beg, .-delete_beg
	.section	.rodata
	.align	2
.LC10:
	.ascii	"\012Doubly Linked List is empty....!\000"
	.text
	.align	2
	.global	delete_end
	.syntax unified
	.arm
	.fpu softvfp
	.type	delete_end, %function
delete_end:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L44
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L41
	ldr	r0, .L44+4
	bl	printf
	b	.L43
.L41:
	ldr	r3, .L44+8
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, .L44+8
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, .L44+8
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	ldr	r2, .L44+8
	str	r3, [r2]
	ldr	r0, [fp, #-8]
	bl	free
.L43:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L45:
	.align	2
.L44:
	.word	head
	.word	.LC10
	.word	tail
	.size	delete_end, .-delete_end
	.section	.rodata
	.align	2
.LC11:
	.ascii	"\012Enter the position where you have to delete : \000"
	.align	2
.LC12:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	delete_pos
	.syntax unified
	.arm
	.fpu softvfp
	.type	delete_pos, %function
delete_pos:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r3, .L54
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #1
	str	r3, [fp, #-20]
	ldr	r0, .L54+4
	bl	printf
	sub	r3, fp, #28
	mov	r1, r3
	ldr	r0, .L54+8
	bl	__isoc99_scanf
	ldr	r3, [fp, #-28]
	cmp	r3, #1
	bne	.L47
	bl	delete_beg
	b	.L53
.L47:
	ldr	r3, .L54+12
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	b	.L49
.L50:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L49:
	ldr	r3, [fp, #-28]
	sub	r3, r3, #1
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	blt	.L50
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	cmp	r3, #0
	bne	.L51
	bl	delete_end
	b	.L53
.L51:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	str	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-12]
	str	r2, [r3, #4]
	ldr	r0, [fp, #-16]
	bl	free
.L53:
	nop
	ldr	r3, .L54
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L52
	bl	__stack_chk_fail
.L52:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L55:
	.align	2
.L54:
	.word	.LC12
	.word	.LC11
	.word	.LC1
	.word	head
	.size	delete_pos, .-delete_pos
	.section	.rodata
	.align	2
.LC13:
	.ascii	"\012The Doubly Linked List is EMPTY....!\000"
	.align	2
.LC14:
	.ascii	"\012Elements of the Doubly Linked List : \000"
	.align	2
.LC15:
	.ascii	"\011%d\012\000"
	.text
	.align	2
	.global	display
	.syntax unified
	.arm
	.fpu softvfp
	.type	display, %function
display:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r3, .L62
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L57
	ldr	r0, .L62+4
	bl	printf
	b	.L61
.L57:
	ldr	r0, .L62+8
	bl	puts
	ldr	r3, .L62
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	b	.L59
.L60:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L62+12
	bl	printf
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-8]
.L59:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L60
.L61:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L63:
	.align	2
.L62:
	.word	head
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.size	display, .-display
	.align	2
	.global	free_linked_list
	.syntax unified
	.arm
	.fpu softvfp
	.type	free_linked_list, %function
free_linked_list:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	b	.L65
.L66:
	ldr	r3, .L67
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, .L67
	ldr	r3, [r3]
	ldr	r3, [r3, #8]
	ldr	r2, .L67
	str	r3, [r2]
	ldr	r0, [fp, #-8]
	bl	free
.L65:
	ldr	r3, .L67
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L66
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L68:
	.align	2
.L67:
	.word	head
	.size	free_linked_list, .-free_linked_list
	.section	.rodata
	.align	2
.LC16:
	.ascii	"\012Following functions can be performed : \000"
	.align	2
.LC17:
	.ascii	"\0121. Create a doubly linked lists\000"
	.align	2
.LC18:
	.ascii	"\0122. Insertion at the beginning\000"
	.align	2
.LC19:
	.ascii	"\0123. Insertion at the end\000"
	.align	2
.LC20:
	.ascii	"\0124. Insertion at a given position\000"
	.align	2
.LC21:
	.ascii	"\0125. Deletion at the beginning\000"
	.align	2
.LC22:
	.ascii	"\0126. Deletion at the end\000"
	.align	2
.LC23:
	.ascii	"\0127. Deletion at the given position\000"
	.align	2
.LC24:
	.ascii	"\0128. Display the doubly linked lists from head\000"
	.align	2
.LC25:
	.ascii	"\012Enter your choice (1-8): \000"
	.align	2
.LC26:
	.ascii	"\012Doubly Linked list is created...!\000"
	.align	2
.LC27:
	.ascii	"\012Element inserted at the beginning successfully."
	.ascii	"...!\000"
	.align	2
.LC28:
	.ascii	"\012Element inserted at the end....!\000"
	.align	2
.LC29:
	.ascii	"\012Element is inserted at desired position...!\000"
	.align	2
.LC30:
	.ascii	"\012Beginning element is at deleted.....!\000"
	.align	2
.LC31:
	.ascii	"\012Last element is deleted....!\000"
	.align	2
.LC32:
	.ascii	"\012Element is deleted.....!\000"
	.align	2
.LC33:
	.ascii	"\012INVALID INPUT.....!\000"
	.align	2
.LC34:
	.ascii	"\012Do you want to perform more operations? (y/n) :"
	.ascii	" \000"
	.align	2
.LC35:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, .L87
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
.L70:
	ldr	r0, .L87+4
	bl	printf
	ldr	r0, .L87+8
	bl	printf
	ldr	r0, .L87+12
	bl	printf
	ldr	r0, .L87+16
	bl	printf
	ldr	r0, .L87+20
	bl	printf
	ldr	r0, .L87+24
	bl	printf
	ldr	r0, .L87+28
	bl	printf
	ldr	r0, .L87+32
	bl	printf
	ldr	r0, .L87+36
	bl	printf
	ldr	r0, .L87+40
	bl	printf
	sub	r3, fp, #12
	mov	r1, r3
	ldr	r0, .L87+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-12]
	sub	r3, r3, #1
	cmp	r3, #7
	ldrls	pc, [pc, r3, asl #2]
	b	.L71
.L73:
	.word	.L80
	.word	.L79
	.word	.L78
	.word	.L77
	.word	.L76
	.word	.L75
	.word	.L74
	.word	.L72
.L80:
	bl	create
	ldr	r0, .L87+48
	bl	printf
	b	.L81
.L79:
	bl	insert_beg
	ldr	r0, .L87+52
	bl	printf
	b	.L81
.L78:
	bl	insert_end
	ldr	r0, .L87+56
	bl	printf
	b	.L81
.L77:
	bl	insert_pos
	ldr	r0, .L87+60
	bl	printf
	b	.L81
.L76:
	bl	delete_beg
	ldr	r0, .L87+64
	bl	printf
	b	.L81
.L75:
	bl	delete_end
	ldr	r0, .L87+68
	bl	printf
	b	.L81
.L74:
	bl	delete_pos
	ldr	r0, .L87+72
	bl	printf
	b	.L81
.L72:
	bl	display
	b	.L81
.L71:
	ldr	r0, .L87+76
	bl	printf
.L81:
	ldr	r0, .L87+80
	bl	printf
	nop
.L82:
	bl	getchar
	mov	r3, r0
	cmp	r3, #10
	bne	.L82
	sub	r3, fp, #13
	mov	r1, r3
	ldr	r0, .L87+84
	bl	__isoc99_scanf
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r3, #121
	beq	.L70
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r3, #89
	bne	.L84
	b	.L70
.L84:
	bl	free_linked_list
	mov	r3, #0
	ldr	r2, .L87
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L86
	bl	__stack_chk_fail
.L86:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L88:
	.align	2
.L87:
	.word	.LC35
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC1
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC3
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
