// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/list.c
// Function: llst_test
void llst_test(void) {
	LinkedList llst;

	llst_init(&llst, _test_comparer, NULL);
	MYASSERT(
		llst.head == NULL && llst.tail == NULL && llst.count == 0,
		"TEST llst_init(...)"
	);

	llst_append(&llst, "A");
	llst_append(&llst, "B");
	llst_append(&llst, "C");
	llst_append(&llst, "D");
	MYASSERT(
		llst.count == 4
			&& llst.head != NULL
			&& strcmp(llst.head->data, "A") == 0
			&& llst.head->next != NULL
			&& strcmp(llst.head->next->data, "B") == 0
			&& llst.head->next->next != NULL
			&& strcmp(llst.head->next->next->data, "C") == 0
			&& llst.head->next->next->next != NULL
			&& strcmp(llst.head->next->next->next->data, "D") == 0,
		"TEST llst_append(...)"
	);

	LinkedListNode *node = llst_find(&llst, "C");
	MYASSERT(
		node != NULL
			&& strcmp(node->data, "C") == 0,
		"TEST llst_find(...)"
	);

	llst_delete(&llst, llst.head->next, false);
	MYASSERT(
		llst.count == 3
			&& llst.head != NULL
			&& strcmp(llst.head->data, "A") == 0
			&& llst.head->next != NULL
			&& strcmp(llst.head->next->data, "C") == 0
			&& llst.head->next->next != NULL
			&& strcmp(llst.head->next->next->data, "D") == 0,
		"TEST llst_delete(...)"
	);

	llst_delete(&llst, llst.head, false);
	MYASSERT(
		llst.count == 2
			&& llst.head != NULL
			&& strcmp(llst.head->data, "C") == 0
			&& llst.head->next != NULL
			&& strcmp(llst.head->next->data, "D") == 0,
		"TEST llst_delete(...)"
	);


	llst_delete(&llst, llst.tail, false);
	MYASSERT(
		llst.count == 1
			&& llst.head != NULL
			&& strcmp(llst.head->data, "C") == 0,
		"TEST llst_delete(...)"
	);

	llst_delete(&llst, llst.head, false);
	MYASSERT(
		llst.head == NULL && llst.tail == NULL && llst.count == 0,
		"TEST llst_delete(...)"
	);

	llst_free(&llst, false);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
leaq -0x28(%rbp), %rdi
leaq 0x36d(%rip), %rsi       # 0xd1e0
xorl %eax, %eax
movl %eax, %edx
callq 0xc760
cmpq $0x0, -0x28(%rbp)
jne 0xce91
cmpq $0x0, -0x20(%rbp)
jne 0xce91
cmpq $0x0, -0x18(%rbp)
je 0xceab
leaq 0x39d3c(%rip), %rdi     # 0x46bd4
movl $0xaf, %esi
leaq 0x39ed4(%rip), %rdx     # 0x46d78
movb $0x0, %al
callq 0xe240
leaq -0x28(%rbp), %rdi
leaq 0x41927(%rip), %rsi     # 0x4e7dd
callq 0xc920
leaq -0x28(%rbp), %rdi
leaq 0x3d3e7(%rip), %rsi     # 0x4a2ad
callq 0xc920
leaq -0x28(%rbp), %rdi
leaq 0x3d71b(%rip), %rsi     # 0x4a5f1
callq 0xc920
leaq -0x28(%rbp), %rdi
leaq 0x3d31a(%rip), %rsi     # 0x4a200
callq 0xc920
cmpq $0x4, -0x18(%rbp)
jne 0xcfb2
cmpq $0x0, -0x28(%rbp)
je 0xcfb2
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x418cd(%rip), %rsi     # 0x4e7dd
callq 0xa0f0
cmpl $0x0, %eax
jne 0xcfb2
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xcfb2
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x3d36d(%rip), %rsi     # 0x4a2ad
callq 0xa0f0
cmpl $0x0, %eax
jne 0xcfb2
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x0, 0x18(%rax)
je 0xcfb2
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x3d681(%rip), %rsi     # 0x4a5f1
callq 0xa0f0
cmpl $0x0, %eax
jne 0xcfb2
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
cmpq $0x0, 0x18(%rax)
je 0xcfb2
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x3d258(%rip), %rsi     # 0x4a200
callq 0xa0f0
cmpl $0x0, %eax
je 0xcfcc
leaq 0x39c1b(%rip), %rdi     # 0x46bd4
movl $0xc0, %esi
leaq 0x39dc7(%rip), %rdx     # 0x46d8c
movb $0x0, %al
callq 0xe240
leaq -0x28(%rbp), %rdi
leaq 0x3d61a(%rip), %rsi     # 0x4a5f1
callq 0xcdb0
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0xd000
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x3d5fb(%rip), %rsi     # 0x4a5f1
callq 0xa0f0
cmpl $0x0, %eax
je 0xd01a
leaq 0x39bcd(%rip), %rdi     # 0x46bd4
movl $0xc7, %esi
leaq 0x39d8f(%rip), %rdx     # 0x46da2
movb $0x0, %al
callq 0xe240
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0x28(%rbp), %rdi
xorl %edx, %edx
callq 0xcc20
cmpq $0x3, -0x18(%rbp)
jne 0xd0ac
cmpq $0x0, -0x28(%rbp)
je 0xd0ac
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x41793(%rip), %rsi     # 0x4e7dd
callq 0xa0f0
cmpl $0x0, %eax
jne 0xd0ac
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xd0ac
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x3d57f(%rip), %rsi     # 0x4a5f1
callq 0xa0f0
cmpl $0x0, %eax
jne 0xd0ac
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x0, 0x18(%rax)
je 0xd0ac
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x3d15e(%rip), %rsi     # 0x4a200
callq 0xa0f0
cmpl $0x0, %eax
je 0xd0c6
leaq 0x39b21(%rip), %rdi     # 0x46bd4
movl $0xd3, %esi
leaq 0x39cf7(%rip), %rdx     # 0x46db6
movb $0x0, %al
callq 0xe240
movq -0x28(%rbp), %rsi
leaq -0x28(%rbp), %rdi
xorl %edx, %edx
callq 0xcc20
cmpq $0x2, -0x18(%rbp)
jne 0xd124
cmpq $0x0, -0x28(%rbp)
je 0xd124
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x3d4ff(%rip), %rsi     # 0x4a5f1
callq 0xa0f0
cmpl $0x0, %eax
jne 0xd124
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xd124
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x3d0e6(%rip), %rsi     # 0x4a200
callq 0xa0f0
cmpl $0x0, %eax
je 0xd13e
leaq 0x39aa9(%rip), %rdi     # 0x46bd4
movl $0xdd, %esi
leaq 0x39c7f(%rip), %rdx     # 0x46db6
movb $0x0, %al
callq 0xe240
movq -0x20(%rbp), %rsi
leaq -0x28(%rbp), %rdi
xorl %edx, %edx
callq 0xcc20
cmpq $0x1, -0x18(%rbp)
jne 0xd174
cmpq $0x0, -0x28(%rbp)
je 0xd174
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x3d487(%rip), %rsi     # 0x4a5f1
callq 0xa0f0
cmpl $0x0, %eax
je 0xd18e
leaq 0x39a59(%rip), %rdi     # 0x46bd4
movl $0xe6, %esi
leaq 0x39c2f(%rip), %rdx     # 0x46db6
movb $0x0, %al
callq 0xe240
movq -0x28(%rbp), %rsi
leaq -0x28(%rbp), %rdi
xorl %edx, %edx
callq 0xcc20
cmpq $0x0, -0x28(%rbp)
jne 0xd1b2
cmpq $0x0, -0x20(%rbp)
jne 0xd1b2
cmpq $0x0, -0x18(%rbp)
je 0xd1cc
leaq 0x39a1b(%rip), %rdi     # 0x46bd4
movl $0xec, %esi
leaq 0x39bf1(%rip), %rdx     # 0x46db6
movb $0x0, %al
callq 0xe240
leaq -0x28(%rbp), %rdi
xorl %esi, %esi
callq 0xc870
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)