	.file	"70386.c"
	.intel_syntax noprefix
	.text
	.globl	Free
	.type	Free, @function
Free:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	QWORD PTR -8[rbp], 0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	Free, .-Free
	.globl	Head
	.bss
	.align 8
	.type	Head, @object
	.size	Head, 8
Head:
	.zero	8
	.globl	Head2
	.align 8
	.type	Head2, @object
	.size	Head2, 8
Head2:
	.zero	8
	.globl	Tail1
	.align 8
	.type	Tail1, @object
	.size	Tail1, 8
Tail1:
	.zero	8
	.text
	.globl	length
	.type	length, @function
length:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -12[rbp], 0
	jmp	.L4
.L5:
	add	DWORD PTR -12[rbp], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
.L4:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L5
	mov	eax, DWORD PTR -12[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	length, .-length
	.globl	Length
	.type	Length, @function
Length:
.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	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	jne	.L8
	mov	eax, 0
	jmp	.L9
.L8:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	Length
	add	eax, 1
.L9:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	Length, .-Length
	.section	.rodata
.LC0:
	.string	"Element: %d \n"
	.align 8
.LC1:
	.string	"\n X-----------------------------------------------------X \n "
.LC2:
	.string	"List Empty "
	.text
	.globl	print
	.type	print, @function
print:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	je	.L11
	jmp	.L12
.L13:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	esi, eax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
.L12:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L13
	lea	rdi, .LC1[rip]
	call	puts@PLT
	jmp	.L15
.L11:
	lea	rdi, .LC2[rip]
	call	puts@PLT
.L15:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	print, .-print
	.section	.rodata
.LC3:
	.string	"Lists Merged "
	.text
	.globl	merge
	.type	merge, @function
merge:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L17
.L19:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -24[rbp], rax
.L17:
	cmp	QWORD PTR -24[rbp], 0
	je	.L18
	cmp	QWORD PTR -32[rbp], 0
	jne	.L19
.L18:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], rdx
	lea	rdi, .LC3[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR Head2[rip], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	print
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	merge, .-merge
	.globl	push_back
	.type	push_back, @function
push_back:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	edi, 16
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -28[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L24
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L21
.L25:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
.L24:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L25
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR Tail1[rip], rax
	nop
.L21:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	push_back, .-push_back
	.section	.rodata
	.align 8
.LC4:
	.string	"the given previous node cannot be NULL "
.LC5:
	.string	"initialize a new node "
.LC6:
	.string	"Linked List Empty"
	.text
	.globl	insertAfterKey
	.type	insertAfterKey, @function
insertAfterKey:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	DWORD PTR -32[rbp], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L29
	lea	rdi, .LC4[rip]
	call	puts@PLT
	lea	rdi, .LC5[rip]
	call	puts@PLT
	lea	rdi, .LC6[rip]
	call	puts@PLT
	jmp	.L26
.L30:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
.L29:
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -28[rbp], eax
	jne	.L30
	mov	edi, 16
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -32[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L31
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR Tail1[rip], rax
.L31:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	nop
.L26:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	insertAfterKey, .-insertAfterKey
	.globl	insertAfter
	.type	insertAfter, @function
insertAfter:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	cmp	QWORD PTR -24[rbp], 0
	jne	.L33
	lea	rdi, .LC4[rip]
	call	puts@PLT
	lea	rdi, .LC5[rip]
	call	puts@PLT
	jmp	.L32
.L33:
	mov	edi, 16
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -28[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	nop
.L32:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	insertAfter, .-insertAfter
	.globl	push_front
	.type	push_front, @function
push_front:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	edi, 16
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -28[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	push_front, .-push_front
	.section	.rodata
.LC7:
	.string	"Deleted "
	.align 8
.LC8:
	.string	"Node Was deleted sussessfully "
	.text
	.globl	delete
	.type	delete, @function
delete:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	je	.L40
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -28[rbp], eax
	jne	.L40
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	Free
	lea	rdi, .LC7[rip]
	call	puts@PLT
	jmp	.L37
.L42:
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
.L40:
	cmp	QWORD PTR -16[rbp], 0
	je	.L41
	mov	rax, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR 8[rax]
	cmp	DWORD PTR -28[rbp], eax
	jne	.L42
.L41:
	cmp	QWORD PTR -16[rbp], 0
	je	.L44
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	Free
	lea	rdi, .LC8[rip]
	call	puts@PLT
	jmp	.L37
.L44:
	nop
.L37:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	delete, .-delete
	.section	.rodata
.LC9:
	.string	"List Empty"
	.align 8
.LC10:
	.string	"Node was deleted Successfully "
	.align 8
.LC11:
	.string	"Position is greater than the number of nodes \n "
	.text
	.globl	delete_at_pos
	.type	delete_at_pos, @function
delete_at_pos:
.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, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L46
	lea	rdi, .LC9[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L45
.L46:
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	cmp	DWORD PTR -44[rbp], 0
	jne	.L48
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	Free
	lea	rdi, .LC10[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR Head[rip], rax
	jmp	.L45
.L48:
	mov	DWORD PTR -20[rbp], 0
	jmp	.L49
.L51:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	add	DWORD PTR -20[rbp], 1
.L49:
	cmp	QWORD PTR -16[rbp], 0
	je	.L50
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, 1
	cmp	DWORD PTR -20[rbp], eax
	jl	.L51
.L50:
	cmp	QWORD PTR -16[rbp], 0
	je	.L52
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L53
.L52:
	lea	rdi, .LC11[rip]
	call	puts@PLT
	jmp	.L45
.L53:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	Free
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
.L45:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	delete_at_pos, .-delete_at_pos
	.section	.rodata
	.align 8
.LC12:
	.string	"List Was Deleted Successfully "
	.text
	.globl	deleteList
	.type	deleteList, @function
deleteList:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	mov	QWORD PTR -8[rbp], 0
	jmp	.L55
.L56:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	Free
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -16[rbp], rax
.L55:
	cmp	QWORD PTR -16[rbp], 0
	jne	.L56
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], 0
	lea	rdi, .LC12[rip]
	call	puts@PLT
	mov	QWORD PTR Head[rip], 0
	mov	QWORD PTR Tail1[rip], 0
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	deleteList, .-deleteList
	.section	.rodata
	.align 8
.LC13:
	.string	"Error a List is already initialized "
.LC14:
	.string	" LIST NEEDS TO BE DELETED! "
.LC15:
	.string	"New List Created "
	.text
	.globl	Create
	.type	Create, @function
Create:
.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	DWORD PTR -20[rbp], edi
	mov	esi, 16
	mov	edi, 1
	call	calloc@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR Head[rip]
	test	rax, rax
	je	.L58
	lea	rdi, .LC13[rip]
	call	puts@PLT
	lea	rdi, .LC14[rip]
	call	puts@PLT
	mov	rax, QWORD PTR Head[rip]
	mov	rdi, rax
	call	print
	lea	rdi, Head[rip]
	call	deleteList
	jmp	.L59
.L58:
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR Head[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR Tail1[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	edx, DWORD PTR -20[rbp]
	mov	DWORD PTR 8[rax], edx
.L59:
	lea	rdi, .LC15[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	Create, .-Create
	.globl	reverse
	.type	reverse, @function
reverse:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -24[rbp], rax
	mov	QWORD PTR -16[rbp], 0
	mov	QWORD PTR -8[rbp], 0
	jmp	.L62
.L63:
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -24[rbp], rax
.L62:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L63
	mov	rax, QWORD PTR -40[rbp]
	mov	rdx, QWORD PTR -16[rbp]
	mov	QWORD PTR [rax], rdx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	reverse, .-reverse
	.globl	swap
	.type	swap, @function
swap:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 8[rax]
	mov	DWORD PTR -4[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -4[rbp]
	mov	DWORD PTR 8[rax], edx
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	swap, .-swap
	.globl	sort
	.type	sort, @function
sort:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 40
	mov	QWORD PTR -40[rbp], rdi
	mov	BYTE PTR -17[rbp], 0
	mov	QWORD PTR -8[rbp], 0
	cmp	QWORD PTR -40[rbp], 0
	je	.L71
.L66:
	mov	BYTE PTR -17[rbp], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -16[rbp], rax
	jmp	.L68
.L70:
	mov	rax, QWORD PTR -16[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	eax, DWORD PTR 8[rax]
	cmp	edx, eax
	jle	.L69
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	swap
	mov	BYTE PTR -17[rbp], 1
.L69:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
.L68:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR [rax]
	cmp	QWORD PTR -8[rbp], rax
	jne	.L70
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -8[rbp], rax
	cmp	BYTE PTR -17[rbp], 0
	jne	.L66
	jmp	.L65
.L71:
	nop
.L65:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	sort, .-sort
	.section	.rodata
.LC16:
	.string	"**----MENU----** "
	.align 8
.LC17:
	.string	"Enter 1 for Creating A New LinkedList "
.LC18:
	.string	"Enter 2 to Push an Element "
	.align 8
.LC19:
	.string	"Enter 3 for printing the LinkedList "
.LC20:
	.string	"Enter 4 for Deletion "
	.align 8
.LC21:
	.string	"Press 5 for Sorting the LinkedList "
	.align 8
.LC22:
	.string	"Press 6 for Reversing the LinkedList "
	.align 8
.LC23:
	.string	"Press 7 to find the length of the LinkedList "
.LC24:
	.string	"Press 0 to exit "
.LC25:
	.string	"Enter Your Choice: "
.LC26:
	.string	"%d"
.LC27:
	.string	"Enter data: "
.LC28:
	.string	"Enter Data: "
	.align 8
.LC29:
	.string	"Press 1 for Pushing Back an Element "
	.align 8
.LC30:
	.string	"Press 2 for Pushing to the front of the List "
	.align 8
.LC31:
	.string	"Press 3 to insert after a cirten node (recuires a pointer to previous node) "
	.align 8
.LC32:
	.string	"Press 1 for key based insertion "
	.align 8
.LC33:
	.string	"Press 2 for pointer based insertion "
	.align 8
.LC34:
	.string	"Enter The data after which you want to insert: "
	.align 8
.LC35:
	.string	"Reqires a pointer to the previous node "
	.align 8
.LC36:
	.string	"Used \"Head Node\" beacause i did not save any pointer seperately "
	.align 8
.LC37:
	.string	"Press 1 to delete a node at a specific position "
	.align 8
.LC38:
	.string	"Press 2 to delete a node with a key value "
	.align 8
.LC39:
	.string	"Press 3 to delete the entire list "
.LC40:
	.string	"Enter your Choice: "
.LC41:
	.string	"Enter The Position: "
.LC42:
	.string	"Enter Key Value: "
	.align 8
.LC43:
	.string	"Length of the List: %d (found iteratively) \n"
	.align 8
.LC44:
	.string	"Length of the List: %d (found recursively) \n"
	.align 8
.LC45:
	.string	"Not Exactly sure of which one was more efficient so did both "
.LC46:
	.string	"\n "
	.text
	.globl	main
	.type	main, @function
main:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -28[rbp], 0
.L73:
	lea	rdi, .LC16[rip]
	call	puts@PLT
	lea	rdi, .LC17[rip]
	call	puts@PLT
	lea	rdi, .LC18[rip]
	call	puts@PLT
	lea	rdi, .LC19[rip]
	call	puts@PLT
	lea	rdi, .LC20[rip]
	call	puts@PLT
	lea	rdi, .LC21[rip]
	call	puts@PLT
	lea	rdi, .LC22[rip]
	call	puts@PLT
	lea	rdi, .LC23[rip]
	call	puts@PLT
	lea	rdi, .LC24[rip]
	call	puts@PLT
	lea	rdi, .LC25[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -28[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -28[rbp]
	cmp	eax, 7
	ja	.L74
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L76[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L76[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L76:
	.long	.L83-.L76
	.long	.L82-.L76
	.long	.L81-.L76
	.long	.L80-.L76
	.long	.L79-.L76
	.long	.L78-.L76
	.long	.L77-.L76
	.long	.L75-.L76
	.text
.L82:
	lea	rdi, .LC27[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -12[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -12[rbp]
	mov	edi, eax
	call	Create
	mov	QWORD PTR Head[rip], rax
	jmp	.L74
.L81:
	lea	rdi, .LC28[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -20[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	lea	rdi, .LC29[rip]
	call	puts@PLT
	lea	rdi, .LC30[rip]
	call	puts@PLT
	lea	rdi, .LC31[rip]
	call	puts@PLT
	lea	rdi, .LC25[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, 3
	je	.L84
	cmp	eax, 3
	jg	.L80
	cmp	eax, 1
	je	.L86
	cmp	eax, 2
	je	.L87
	jmp	.L80
.L86:
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, Tail1[rip]
	call	push_back
	jmp	.L80
.L87:
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, Head[rip]
	call	push_front
	jmp	.L80
.L84:
	lea	rdi, .LC32[rip]
	call	puts@PLT
	lea	rdi, .LC33[rip]
	call	puts@PLT
	lea	rdi, .LC25[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, 1
	je	.L88
	cmp	eax, 2
	je	.L89
	jmp	.L80
.L88:
	lea	rdi, .LC34[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -12[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	edx, DWORD PTR -20[rbp]
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, Head[rip]
	call	insertAfterKey
	jmp	.L80
.L89:
	lea	rdi, .LC35[rip]
	call	puts@PLT
	lea	rdi, .LC36[rip]
	call	puts@PLT
	mov	edx, DWORD PTR -20[rbp]
	mov	rax, QWORD PTR Head[rip]
	mov	esi, edx
	mov	rdi, rax
	call	insertAfter
	nop
.L80:
	mov	rax, QWORD PTR Head[rip]
	mov	rdi, rax
	call	print
	jmp	.L74
.L79:
	lea	rdi, .LC37[rip]
	call	puts@PLT
	lea	rdi, .LC38[rip]
	call	puts@PLT
	lea	rdi, .LC39[rip]
	call	puts@PLT
	lea	rdi, .LC40[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, 3
	je	.L91
	cmp	eax, 3
	jg	.L74
	cmp	eax, 1
	je	.L93
	cmp	eax, 2
	je	.L94
	jmp	.L74
.L93:
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -12[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, Head[rip]
	call	delete_at_pos
	jmp	.L74
.L94:
	lea	rdi, .LC42[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -12[rbp]
	mov	rsi, rax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, Head[rip]
	call	delete
	jmp	.L74
.L91:
	lea	rdi, Head[rip]
	call	deleteList
	jmp	.L74
.L78:
	mov	rax, QWORD PTR Head[rip]
	mov	rdi, rax
	call	sort
	jmp	.L74
.L77:
	lea	rdi, Head[rip]
	call	reverse
	jmp	.L74
.L75:
	mov	rax, QWORD PTR Head[rip]
	mov	rdi, rax
	call	length
	mov	esi, eax
	lea	rdi, .LC43[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR Head[rip]
	mov	rdi, rax
	call	Length
	mov	esi, eax
	lea	rdi, .LC44[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC45[rip]
	call	puts@PLT
	jmp	.L74
.L83:
	mov	rax, QWORD PTR Head[rip]
	test	rax, rax
	je	.L95
	lea	rdi, Head[rip]
	call	deleteList
.L95:
	mov	eax, 0
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L97
	jmp	.L98
.L74:
	lea	rdi, .LC46[rip]
	call	puts@PLT
	jmp	.L73
.L98:
	call	__stack_chk_fail@PLT
.L97:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.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	"70386.c"
	.text
	.align	2
	.global	Free
	.syntax unified
	.arm
	.fpu softvfp
	.type	Free, %function
Free:
	@ 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	r0, [fp, #-8]
	bl	free
	mov	r3, #0
	str	r3, [fp, #-8]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	Free, .-Free
	.global	Head
	.bss
	.align	2
	.type	Head, %object
	.size	Head, 4
Head:
	.space	4
	.global	Head2
	.align	2
	.type	Head2, %object
	.size	Head2, 4
Head2:
	.space	4
	.global	Tail1
	.align	2
	.type	Tail1, %object
	.size	Tail1, 4
Tail1:
	.space	4
	.text
	.align	2
	.global	length
	.syntax unified
	.arm
	.fpu softvfp
	.type	length, %function
length:
	@ 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, [fp, #-16]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L4
.L5:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
.L4:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L5
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	length, .-length
	.align	2
	.global	Length
	.syntax unified
	.arm
	.fpu softvfp
	.type	Length, %function
Length:
	@ 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]
	cmp	r3, #0
	bne	.L8
	mov	r3, #0
	b	.L9
.L8:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	bl	Length
	mov	r3, r0
	add	r3, r3, #1
.L9:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	Length, .-Length
	.section	.rodata
	.align	2
.LC0:
	.ascii	"Element: %d \012\000"
	.align	2
.LC1:
	.ascii	"\012 X---------------------------------------------"
	.ascii	"--------X \012 \000"
	.align	2
.LC2:
	.ascii	"List Empty \000"
	.text
	.align	2
	.global	print
	.syntax unified
	.arm
	.fpu softvfp
	.type	print, %function
print:
	@ 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]
	cmp	r3, #0
	beq	.L11
	b	.L12
.L13:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	mov	r1, r3
	ldr	r0, .L16
	bl	printf
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
.L12:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L13
	ldr	r0, .L16+4
	bl	puts
	b	.L15
.L11:
	ldr	r0, .L16+8
	bl	puts
.L15:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L17:
	.align	2
.L16:
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.size	print, .-print
	.section	.rodata
	.align	2
.LC3:
	.ascii	"Lists Merged \000"
	.text
	.align	2
	.global	merge
	.syntax unified
	.arm
	.fpu softvfp
	.type	merge, %function
merge:
	@ 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, [fp, #-16]
	str	r3, [fp, #-8]
	b	.L19
.L21:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
.L19:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L20
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L21
.L20:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-20]
	str	r2, [r3]
	ldr	r0, .L23
	bl	puts
	ldr	r3, [fp, #-8]
	str	r3, [fp, #-16]
	ldr	r3, .L23+4
	mov	r2, #0
	str	r2, [r3]
	ldr	r0, [fp, #-16]
	bl	print
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L24:
	.align	2
.L23:
	.word	.LC3
	.word	Head2
	.size	merge, .-merge
	.align	2
	.global	push_back
	.syntax unified
	.arm
	.fpu softvfp
	.type	push_back, %function
push_back:
	@ 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]
	mov	r0, #8
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L28
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	b	.L25
.L29:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
.L28:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L29
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	ldr	r2, .L30
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	nop
.L25:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L31:
	.align	2
.L30:
	.word	Tail1
	.size	push_back, .-push_back
	.section	.rodata
	.align	2
.LC4:
	.ascii	"the given previous node cannot be NULL \000"
	.align	2
.LC5:
	.ascii	"initialize a new node \000"
	.align	2
.LC6:
	.ascii	"Linked List Empty\000"
	.text
	.align	2
	.global	insertAfterKey
	.syntax unified
	.arm
	.fpu softvfp
	.type	insertAfterKey, %function
insertAfterKey:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L35
	ldr	r0, .L38
	bl	puts
	ldr	r0, .L38+4
	bl	puts
	ldr	r0, .L38+8
	bl	puts
	b	.L32
.L36:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
.L35:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	bne	.L36
	mov	r0, #8
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-24]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L37
	ldr	r2, .L38+12
	ldr	r3, [fp, #-8]
	str	r3, [r2]
.L37:
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	nop
.L32:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L39:
	.align	2
.L38:
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.word	Tail1
	.size	insertAfterKey, .-insertAfterKey
	.align	2
	.global	insertAfter
	.syntax unified
	.arm
	.fpu softvfp
	.type	insertAfter, %function
insertAfter:
	@ 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, [fp, #-16]
	cmp	r3, #0
	bne	.L41
	ldr	r0, .L43
	bl	puts
	ldr	r0, .L43+4
	bl	puts
	b	.L40
.L41:
	mov	r0, #8
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	nop
.L40:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L44:
	.align	2
.L43:
	.word	.LC4
	.word	.LC5
	.size	insertAfter, .-insertAfter
	.align	2
	.global	push_front
	.syntax unified
	.arm
	.fpu softvfp
	.type	push_front, %function
push_front:
	@ 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]
	mov	r0, #8
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	push_front, .-push_front
	.section	.rodata
	.align	2
.LC7:
	.ascii	"Deleted \000"
	.align	2
.LC8:
	.ascii	"Node Was deleted sussessfully \000"
	.text
	.align	2
	.global	delete
	.syntax unified
	.arm
	.fpu softvfp
	.type	delete, %function
delete:
	@ 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, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L50
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	bne	.L50
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	str	r2, [r3]
	ldr	r0, [fp, #-12]
	bl	Free
	ldr	r0, .L55
	bl	puts
	b	.L47
.L52:
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
.L50:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L51
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-20]
	cmp	r2, r3
	bne	.L52
.L51:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L54
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	str	r2, [r3]
	ldr	r0, [fp, #-12]
	bl	Free
	ldr	r0, .L55+4
	bl	puts
	b	.L47
.L54:
	nop
.L47:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L56:
	.align	2
.L55:
	.word	.LC7
	.word	.LC8
	.size	delete, .-delete
	.section	.rodata
	.align	2
.LC9:
	.ascii	"List Empty\000"
	.align	2
.LC10:
	.ascii	"Node was deleted Successfully \000"
	.align	2
.LC11:
	.ascii	"Position is greater than the number of nodes \012 \000"
	.text
	.align	2
	.global	delete_at_pos
	.syntax unified
	.arm
	.fpu softvfp
	.type	delete_at_pos, %function
delete_at_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
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L58
	ldr	r0, .L66
	bl	printf
	b	.L57
.L58:
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L60
	ldr	r3, [fp, #-16]
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	ldr	r0, [fp, #-16]
	bl	Free
	ldr	r0, .L66+4
	bl	puts
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	ldr	r2, .L66+8
	str	r3, [r2]
	b	.L57
.L60:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L61
.L63:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L61:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L62
	ldr	r3, [fp, #-28]
	sub	r3, r3, #1
	ldr	r2, [fp, #-12]
	cmp	r2, r3
	blt	.L63
.L62:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L64
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L65
.L64:
	ldr	r0, .L66+12
	bl	puts
	b	.L57
.L65:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r0, r3
	bl	Free
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-8]
	str	r2, [r3]
.L57:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L67:
	.align	2
.L66:
	.word	.LC9
	.word	.LC10
	.word	Head
	.word	.LC11
	.size	delete_at_pos, .-delete_at_pos
	.section	.rodata
	.align	2
.LC12:
	.ascii	"List Was Deleted Successfully \000"
	.text
	.align	2
	.global	deleteList
	.syntax unified
	.arm
	.fpu softvfp
	.type	deleteList, %function
deleteList:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L69
.L70:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r0, [fp, #-12]
	bl	Free
	ldr	r3, [fp, #-8]
	str	r3, [fp, #-12]
.L69:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L70
	ldr	r3, [fp, #-16]
	mov	r2, #0
	str	r2, [r3]
	ldr	r0, .L71
	bl	puts
	ldr	r3, .L71+4
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L71+8
	mov	r2, #0
	str	r2, [r3]
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L72:
	.align	2
.L71:
	.word	.LC12
	.word	Head
	.word	Tail1
	.size	deleteList, .-deleteList
	.section	.rodata
	.align	2
.LC13:
	.ascii	"Error a List is already initialized \000"
	.align	2
.LC14:
	.ascii	" LIST NEEDS TO BE DELETED! \000"
	.align	2
.LC15:
	.ascii	"New List Created \000"
	.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
	str	r0, [fp, #-16]
	mov	r1, #8
	mov	r0, #1
	bl	calloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, .L77
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L74
	ldr	r0, .L77+4
	bl	puts
	ldr	r0, .L77+8
	bl	puts
	ldr	r3, .L77
	ldr	r3, [r3]
	mov	r0, r3
	bl	print
	ldr	r0, .L77
	bl	deleteList
	b	.L75
.L74:
	ldr	r2, .L77
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	ldr	r2, .L77+12
	ldr	r3, [fp, #-8]
	str	r3, [r2]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-16]
	str	r2, [r3, #4]
.L75:
	ldr	r0, .L77+16
	bl	puts
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L78:
	.align	2
.L77:
	.word	Head
	.word	.LC13
	.word	.LC14
	.word	Tail1
	.word	.LC15
	.size	Create, .-Create
	.align	2
	.global	reverse
	.syntax unified
	.arm
	.fpu softvfp
	.type	reverse, %function
reverse:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L80
.L81:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-12]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-8]
	str	r3, [fp, #-16]
.L80:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L81
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-12]
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	reverse, .-reverse
	.align	2
	.global	swap
	.syntax unified
	.arm
	.fpu softvfp
	.type	swap, %function
swap:
	@ 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]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-16]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-8]
	str	r2, [r3, #4]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	swap, .-swap
	.align	2
	.global	sort
	.syntax unified
	.arm
	.fpu softvfp
	.type	sort, %function
sort:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	mov	r3, #0
	strb	r3, [fp, #-13]
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L89
.L84:
	mov	r3, #0
	strb	r3, [fp, #-13]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-12]
	b	.L86
.L88:
	ldr	r3, [fp, #-12]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	ldr	r3, [r3, #4]
	cmp	r2, r3
	ble	.L87
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-12]
	bl	swap
	mov	r3, #1
	strb	r3, [fp, #-13]
.L87:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	str	r3, [fp, #-12]
.L86:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	bne	.L88
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-8]
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L84
	b	.L83
.L89:
	nop
.L83:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	sort, .-sort
	.section	.rodata
	.align	2
.LC16:
	.ascii	"**----MENU----** \000"
	.align	2
.LC17:
	.ascii	"Enter 1 for Creating A New LinkedList \000"
	.align	2
.LC18:
	.ascii	"Enter 2 to Push an Element \000"
	.align	2
.LC19:
	.ascii	"Enter 3 for printing the LinkedList \000"
	.align	2
.LC20:
	.ascii	"Enter 4 for Deletion \000"
	.align	2
.LC21:
	.ascii	"Press 5 for Sorting the LinkedList \000"
	.align	2
.LC22:
	.ascii	"Press 6 for Reversing the LinkedList \000"
	.align	2
.LC23:
	.ascii	"Press 7 to find the length of the LinkedList \000"
	.align	2
.LC24:
	.ascii	"Press 0 to exit \000"
	.align	2
.LC25:
	.ascii	"Enter Your Choice: \000"
	.align	2
.LC26:
	.ascii	"%d\000"
	.align	2
.LC27:
	.ascii	"Enter data: \000"
	.align	2
.LC28:
	.ascii	"Enter Data: \000"
	.align	2
.LC29:
	.ascii	"Press 1 for Pushing Back an Element \000"
	.align	2
.LC30:
	.ascii	"Press 2 for Pushing to the front of the List \000"
	.align	2
.LC31:
	.ascii	"Press 3 to insert after a cirten node (recuires a p"
	.ascii	"ointer to previous node) \000"
	.align	2
.LC32:
	.ascii	"Press 1 for key based insertion \000"
	.align	2
.LC33:
	.ascii	"Press 2 for pointer based insertion \000"
	.align	2
.LC34:
	.ascii	"Enter The data after which you want to insert: \000"
	.align	2
.LC35:
	.ascii	"Reqires a pointer to the previous node \000"
	.align	2
.LC36:
	.ascii	"Used \"Head Node\" beacause i did not save any poin"
	.ascii	"ter seperately \000"
	.align	2
.LC37:
	.ascii	"Press 1 to delete a node at a specific position \000"
	.align	2
.LC38:
	.ascii	"Press 2 to delete a node with a key value \000"
	.align	2
.LC39:
	.ascii	"Press 3 to delete the entire list \000"
	.align	2
.LC40:
	.ascii	"Enter your Choice: \000"
	.align	2
.LC41:
	.ascii	"Enter The Position: \000"
	.align	2
.LC42:
	.ascii	"Enter Key Value: \000"
	.align	2
.LC43:
	.ascii	"Length of the List: %d (found iteratively) \012\000"
	.align	2
.LC44:
	.ascii	"Length of the List: %d (found recursively) \012\000"
	.align	2
.LC45:
	.ascii	"Not Exactly sure of which one was more efficient so"
	.ascii	" did both \000"
	.align	2
.LC46:
	.ascii	"\012 \000"
	.align	2
.LC47:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ 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, .L117
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-28]
.L91:
	ldr	r0, .L117+4
	bl	puts
	ldr	r0, .L117+8
	bl	puts
	ldr	r0, .L117+12
	bl	puts
	ldr	r0, .L117+16
	bl	puts
	ldr	r0, .L117+20
	bl	puts
	ldr	r0, .L117+24
	bl	puts
	ldr	r0, .L117+28
	bl	puts
	ldr	r0, .L117+32
	bl	puts
	ldr	r0, .L117+36
	bl	puts
	ldr	r0, .L117+40
	bl	printf
	sub	r3, fp, #28
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-28]
	cmp	r3, #7
	ldrls	pc, [pc, r3, asl #2]
	b	.L92
.L94:
	.word	.L101
	.word	.L100
	.word	.L99
	.word	.L98
	.word	.L97
	.word	.L96
	.word	.L95
	.word	.L93
.L100:
	ldr	r0, .L117+48
	bl	printf
	sub	r3, fp, #12
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-12]
	mov	r0, r3
	bl	Create
	mov	r3, r0
	ldr	r2, .L117+52
	str	r3, [r2]
	b	.L92
.L99:
	ldr	r0, .L117+56
	bl	printf
	sub	r3, fp, #20
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r0, .L117+60
	bl	puts
	ldr	r0, .L117+64
	bl	puts
	ldr	r0, .L117+68
	bl	puts
	ldr	r0, .L117+40
	bl	printf
	sub	r3, fp, #24
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-24]
	cmp	r3, #3
	beq	.L102
	cmp	r3, #3
	bgt	.L98
	cmp	r3, #1
	beq	.L104
	cmp	r3, #2
	beq	.L105
	b	.L98
.L104:
	ldr	r3, [fp, #-20]
	mov	r1, r3
	ldr	r0, .L117+72
	bl	push_back
	b	.L98
.L105:
	ldr	r3, [fp, #-20]
	mov	r1, r3
	ldr	r0, .L117+52
	bl	push_front
	b	.L98
.L102:
	ldr	r0, .L117+76
	bl	puts
	ldr	r0, .L117+80
	bl	puts
	ldr	r0, .L117+40
	bl	printf
	sub	r3, fp, #16
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-16]
	cmp	r3, #1
	beq	.L106
	cmp	r3, #2
	beq	.L107
	b	.L98
.L106:
	ldr	r0, .L117+84
	bl	printf
	sub	r3, fp, #12
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-20]
	mov	r1, r3
	ldr	r0, .L117+52
	bl	insertAfterKey
	b	.L98
.L107:
	ldr	r0, .L117+88
	bl	puts
	ldr	r0, .L117+92
	bl	puts
	ldr	r3, .L117+52
	ldr	r3, [r3]
	ldr	r2, [fp, #-20]
	mov	r1, r2
	mov	r0, r3
	bl	insertAfter
	nop
.L98:
	ldr	r3, .L117+52
	ldr	r3, [r3]
	mov	r0, r3
	bl	print
	b	.L92
.L97:
	ldr	r0, .L117+96
	bl	puts
	ldr	r0, .L117+100
	bl	puts
	ldr	r0, .L117+104
	bl	puts
	ldr	r0, .L117+108
	bl	printf
	sub	r3, fp, #16
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	beq	.L109
	cmp	r3, #3
	bgt	.L92
	cmp	r3, #1
	beq	.L111
	cmp	r3, #2
	beq	.L112
	b	.L92
.L111:
	ldr	r0, .L117+112
	bl	printf
	sub	r3, fp, #12
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-12]
	mov	r1, r3
	ldr	r0, .L117+52
	bl	delete_at_pos
	b	.L92
.L112:
	ldr	r0, .L117+116
	bl	printf
	sub	r3, fp, #12
	mov	r1, r3
	ldr	r0, .L117+44
	bl	__isoc99_scanf
	ldr	r3, [fp, #-12]
	mov	r1, r3
	ldr	r0, .L117+52
	bl	delete
	b	.L92
.L109:
	ldr	r0, .L117+52
	bl	deleteList
	b	.L92
.L96:
	ldr	r3, .L117+52
	ldr	r3, [r3]
	mov	r0, r3
	bl	sort
	b	.L92
.L95:
	ldr	r0, .L117+52
	bl	reverse
	b	.L92
.L93:
	ldr	r3, .L117+52
	ldr	r3, [r3]
	mov	r0, r3
	bl	length
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L117+120
	bl	printf
	ldr	r3, .L117+52
	ldr	r3, [r3]
	mov	r0, r3
	bl	Length
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L117+124
	bl	printf
	ldr	r0, .L117+128
	bl	puts
	b	.L92
.L101:
	ldr	r3, .L117+52
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L113
	ldr	r0, .L117+52
	bl	deleteList
.L113:
	mov	r3, #0
	ldr	r2, .L117
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L115
	b	.L116
.L92:
	ldr	r0, .L117+132
	bl	puts
	b	.L91
.L116:
	bl	__stack_chk_fail
.L115:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L118:
	.align	2
.L117:
	.word	.LC47
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	Head
	.word	.LC28
	.word	.LC29
	.word	.LC30
	.word	.LC31
	.word	Tail1
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	.LC39
	.word	.LC40
	.word	.LC41
	.word	.LC42
	.word	.LC43
	.word	.LC44
	.word	.LC45
	.word	.LC46
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
