// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/list.c
// Function: llst_remove
void llst_remove(
	LinkedList *llst,
	LinkedListNode *node
) {
	assert(llst);
	assert(node);
	assert(node->llst == llst);

	if (llst->head == node && llst->tail == node) {
		llst->head = NULL;
		llst->tail = NULL;
	} else if (llst->head == node && llst->tail != node) {
		node->next->previous = NULL;
		llst->head = node->next;
	} else if (llst->head != node && llst->tail == node) {
		node->previous->next = NULL;
		llst->tail = node->previous;
	} else if (llst->head != node && llst->tail != node) {
		node->previous->next = node->next;
		node->next->previous = node->previous;
	} else {
		assert(0);
	}

	llst->count--;
	node->llst = NULL;
	node->previous = NULL;
	node->next = NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0xca49
jmp 0xca68
leaq 0x3a25a(%rip), %rdi     # 0x46caa
leaq 0x3a17d(%rip), %rsi     # 0x46bd4
movl $0x5b, %edx
leaq 0x3a208(%rip), %rcx     # 0x46c6b
callq 0xa0b0
cmpq $0x0, -0x10(%rbp)
je 0xca71
jmp 0xca90
leaq 0x3e60f(%rip), %rdi     # 0x4b087
leaq 0x3a155(%rip), %rsi     # 0x46bd4
movl $0x5c, %edx
leaq 0x3a1e0(%rip), %rcx     # 0x46c6b
callq 0xa0b0
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpq -0x8(%rbp), %rax
jne 0xca9f
jmp 0xcabe
leaq 0x3a1f6(%rip), %rdi     # 0x46c9c
leaq 0x3a127(%rip), %rsi     # 0x46bd4
movl $0x5d, %edx
leaq 0x3a1b2(%rip), %rcx     # 0x46c6b
callq 0xa0b0
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0xcaf5
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0xcaf5
movq -0x8(%rbp), %rax
movq $0x0, (%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0xcbdb
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0xcb34
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x10(%rbp), %rax
je 0xcb34
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq $0x0, 0x10(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
jmp 0xcbd9
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
je 0xcb71
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0xcb71
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq $0x0, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0xcbd7
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq -0x10(%rbp), %rax
je 0xcbb6
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x10(%rbp), %rax
je 0xcbb6
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rcx, 0x10(%rax)
jmp 0xcbd5
leaq 0x3a8a8(%rip), %rdi     # 0x47465
leaq 0x3a010(%rip), %rsi     # 0x46bd4
movl $0x6c, %edx
leaq 0x3a09b(%rip), %rcx     # 0x46c6b
callq 0xa0b0
jmp 0xcbd7
jmp 0xcbd9
jmp 0xcbdb
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq $0x0, (%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x18(%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)