// File: /workspace/github_c_makefile_star2_O0/phluid61[P]hsf/src/bareitem.c
// Function: SH_BareItem__destroy
void
SH_BareItem__destroy(SH_BareItem *obj, sh_bool_t recursive, int* err) {
	__cascade(err,);
	if (recursive) {
		switch (obj->type) {
		case SH_NULL:
			free(obj);
			__clear(err);
			return;

		case SH_INTEGER:
			do_destroy(SH_Integer, obj);
			__clear(err);
			return;

		case SH_DECIMAL:
			do_destroy(SH_Decimal, obj);
			__clear(err);
			return;

		case SH_STRING:
			do_destroy(SH_String, obj);
			__clear(err);
			return;

		case SH_TOKEN:
			do_destroy(SH_Token, obj);
			__clear(err);
			return;

		case SH_BYTESEQUENCE:
			do_destroy(SH_ByteSequence, obj);
			__clear(err);
			return;

		case SH_BOOLEAN:
			do_destroy(SH_Boolean, obj);
			__clear(err);
			return;

		case SH_INNERLIST:
			/*do_destroy(SH_InnerList, recursive, obj);*/
			SH_InnerList__destroy((SH_InnerList*)(obj->ptr), recursive, 0);
			free(obj);
			__clear(err);
			return;

		/*default: fall out */
		}

		free(obj);
		__raise(err, SH_E_ITEM_WRONG_TYPE);
	} else {
		free(obj);
		__clear(err);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq %rdx, -0x18(%rbp)
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x172d
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpl (%rcx), %eax
je 0x172d
jmp 0x190e
cmpb $0x0, -0x9(%rbp)
je 0x18f1
movq -0x8(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x20(%rbp)
subq $0x7, %rax
ja 0x18d4
movq -0x20(%rbp), %rax
leaq 0x8aa(%rip), %rcx       # 0x2000
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x177a
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1100
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x17ab
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1050
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x17dc
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1110
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x180d
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10f0
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x183e
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10a0
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x186f
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10b0
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x18a0
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %edx
movzbl -0x9(%rbp), %esi
callq 0x1060
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x18d2
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x18ef
movq -0x18(%rbp), %rax
movl $0x100001, (%rax)       # imm = 0x100001
jmp 0x190e
movq -0x8(%rbp), %rdi
callq 0x1040
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x190c
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
jmp 0x190e
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)