list_len:
	xorl	%eax, %eax
	testq	%rdi, %rdi
	je	.L4
.L3:
	movq	(%rdi), %rdi
	addq	$1, %rax
	testq	%rdi, %rdi
	jne	.L3
	rep ret
.L4:
	rep ret
list_len_clear:
	xorl	%eax, %eax
	testq	%rdi, %rdi
	je	.L12
.L11:
	movq	$0, 8(%rdi)
	movq	(%rdi), %rdi
	addq	$1, %rax
	testq	%rdi, %rdi
	jne	.L11
	rep ret
.L12:
	rep ret
list_sum_clear:
	xorl	%eax, %eax
	testq	%rdi, %rdi
	je	.L19
.L18:
	addq	8(%rdi), %rax
	movq	$0, 8(%rdi)
	movq	(%rdi), %rdi
	testq	%rdi, %rdi
	jne	.L18
	rep ret
.L19:
	rep ret
list_sum:
	xorl	%eax, %eax
	testq	%rdi, %rdi
	je	.L26
.L25:
	addq	8(%rdi), %rax
	movq	(%rdi), %rdi
	testq	%rdi, %rdi
	jne	.L25
	rep ret
.L26:
	rep ret
list_sum2:
	xorl	%eax, %eax
	testq	%rdi, %rdi
	jne	.L32
	jmp	.L31
.L37:
	movq	%rdx, %rdi
.L32:
	movq	(%rdi), %rdx
	addq	8(%rdi), %rax
	testq	%rdx, %rdx
	jne	.L37
.L31:
	rep ret
pipe_sum2:
	xorl	%eax, %eax
	testq	%rdi, %rdi
	jne	.L40
	jmp	.L39
.L45:
	movq	%rdx, %rdi
.L40:
	movq	(%rdi), %rdx
	addq	8(%rdi), %rax
	testq	%rdx, %rdx
	jne	.L45
.L39:
	rep ret
rlist_len:
	xorl	%eax, %eax
	testq	%rdi, %rdi
	je	.L49
.L48:
	movq	(%rdi), %rdi
	addq	$1, %rax
	testq	%rdi, %rdi
	jne	.L48
	rep ret
.L49:
	rep ret
rlist_sum:
	xorl	%eax, %eax
	testq	%rdi, %rdi
	je	.L56
.L55:
	movq	8(%rdi), %rdx
	movq	(%rdi), %rdi
	addq	%rdx, %rax
	testq	%rdi, %rdi
	jne	.L55
	rep ret
.L56:
	rep ret
list_copy:
	testq	%rdi, %rdi
	je	.L60
	testq	%rsi, %rsi
	jne	.L71
	jmp	.L60
.L75:
	testq	%rdi, %rdi
	je	.L60
.L71:
	movq	8(%rdi), %rax
	movq	(%rdi), %rdi
	movq	%rax, 8(%rsi)
	movq	(%rsi), %rsi
	testq	%rsi, %rsi
	jne	.L75
.L60:
	rep ret
plist_copy2:
	testq	%rdi, %rdi
	je	.L76
	testq	%rsi, %rsi
	jne	.L87
	jmp	.L76
.L91:
	testq	%rdx, %rdx
	je	.L76
	movq	%rax, %rsi
	movq	%rdx, %rdi
.L87:
	movq	(%rsi), %rax
	movq	8(%rdi), %rcx
	movq	(%rdi), %rdx
	testq	%rax, %rax
	movq	%rcx, 8(%rsi)
	jne	.L91
.L76:
	rep ret
stationary_copy:
	movl	$1024, %eax
.L94:
	movq	8(%rdi), %rdx
	subq	$1, %rax
	movq	%rdx, 8(%rsi)
	jne	.L94
	rep ret
test:
	pushq	%rbp
	pushq	%rbx
	leaq	-1(%rdi), %rbx
	movl	$main_list, %edi
	salq	$4, %rbx
	subq	$8, %rsp
	movq	myindex(%rip), %rax
	movq	main_list(%rbx), %rbp
	movq	$0, main_list(%rbx)
	call	*test_fun(,%rax,8)
	movq	%rbp, main_list(%rbx)
	addq	$8, %rsp
	popq	%rbx
	popq	%rbp
	ret

test2a:
	pushq	%rbp
	movl	$main_list, %esi
	pushq	%rbx
	leaq	-1(%rdi), %rbx
	movq	%rsi, %rdi
	salq	$4, %rbx
	subq	$8, %rsp
	movq	myindex(%rip), %rax
	movq	main_list(%rbx), %rbp
	movq	$0, main_list(%rbx)
	call	*test2_fun(,%rax,8)
	movq	%rbp, main_list(%rbx)
	addq	$8, %rsp
	popq	%rbx
	popq	%rbp
	ret

test2b:
	pushq	%rbp
	pushq	%rbx
	leaq	-1(%rdi), %rbx
	movl	$main_list, %edi
	salq	$4, %rbx
	subq	$8, %rsp
	movq	myindex(%rip), %rax
	movq	main_list(%rbx), %rbp
	movq	$0, main_list(%rbx)
	movq	main_list(%rip), %rsi
	call	*test2_fun(,%rax,8)
	movq	%rbp, main_list(%rbx)
	addq	$8, %rsp
	popq	%rbx
	popq	%rbp
	ret

test2c:
	pushq	%rbp
	movl	$main_list, %esi
	pushq	%rbx
	leaq	-1(%rdi), %rbx
	salq	$4, %rbx
	subq	$8, %rsp
	movq	myindex(%rip), %rax
	movq	main_list(%rbx), %rbp
	movq	$0, main_list(%rbx)
	movq	main_list(%rip), %rdi
	call	*test2_fun(,%rax,8)
	movq	%rbp, main_list(%rbx)
	addq	$8, %rsp
	popq	%rbx
	popq	%rbp
	ret

plist_copy:
	testq	%rdi, %rdi
	je	.L103
	testq	%rsi, %rsi
	jne	.L112
.L103:
	rep ret
.L117:
	testq	%rdx, %rdx
	je	.L103
	movq	%rdx, %rdi
	movq	%rax, %rsi
.L112:
	movq	(%rsi), %rax
	movq	8(%rdi), %rcx
	movq	(%rdi), %rdx
	testq	%rax, %rax
	movq	%rcx, 8(%rsi)
	jne	.L117
	rep ret
mylink:
	leaq	-1(%rdi), %rcx
	testq	%rcx, %rcx
	jle	.L120
	movl	$main_list+16, %eax
	xorl	%edx, %edx
.L121:
	movq	%rdx, -8(%rax)
	addq	$1, %rdx
	movq	%rax, -16(%rax)
	addq	$16, %rax
	cmpq	%rcx, %rdx
	jne	.L121
.L120:
	movq	%rcx, %rax
	salq	$4, %rax
	movq	%rcx, main_list+8(%rax)
	movq	$0, main_list(%rax)
	ret

main:
	pushq	%r12
	pushq	%rbp
	pushq	%rbx
	xorl	%ebx, %ebx
.L128:
	movl	$main_list+16, %eax
	xorl	%edx, %edx
.L125:
	movq	%rdx, -8(%rax)
	addq	$1, %rdx
	movq	%rax, -16(%rax)
	addq	$16, %rax
	cmpq	$1023, %rdx
	jne	.L125
	movl	$main_list, %edi
	movq	$1023, main_list+16376(%rip)
	movq	$0, main_list+16368(%rip)
	call	*test_fun(,%rbx,8)
	movq	test_descr(,%rbx,8), %rsi
	movq	%rax, %rcx
	movl	$1024, %edx
	movl	$.LC0, %edi
	xorl	%eax, %eax
	call	printf
	movl	$1024, %esi
	movl	$test, %edi
	movq	%rbx, myindex(%rip)
	call	find_cpe
	addq	$1, %rbx
	movl	$.LC1, %edi
	movl	$1, %eax
	call	printf
	cmpq	$8, %rbx
	jne	.L128
	xorl	%ebp, %ebp
.L127:
	movq	test2_descr(,%rbp,8), %r12
	xorl	%ebx, %ebx
.L133:
	movl	$main_list+16, %eax
	xorl	%edx, %edx
.L130:
	movq	%rdx, -8(%rax)
	addq	$1, %rdx
	movq	%rax, -16(%rax)
	addq	$16, %rax
	cmpq	$1023, %rdx
	jne	.L130
	movq	case2_descr(%rbx), %rdx
	movq	%r12, %rsi
	movl	$.LC2, %edi
	xorl	%eax, %eax
	movq	$1023, main_list+16376(%rip)
	movq	$0, main_list+16368(%rip)
	addq	$8, %rbx
	call	printf
	movq	case_fun-8(%rbx), %rdi
	movl	$1024, %esi
	movq	%rbp, myindex(%rip)
	call	find_cpe
	movl	$.LC1, %edi
	movl	$1, %eax
	call	printf
	cmpq	$24, %rbx
	jne	.L133
	addq	$1, %rbp
	cmpq	$4, %rbp
	jne	.L127
	popq	%rbx
	popq	%rbp
	xorl	%eax, %eax
	popq	%r12
	ret

case2_descr:
case_fun:
test2_descr:
test2_fun:
test_descr:
test_fun:
