// File: /workspace/github_c_makefile_star2_O0/phluid61[P]hsf/main.c
// Function: do_sh_innerlist
void do_sh_innerlist() {
	SH_List* list;
	SH_InnerList* innerlist;

	SH_BareItem* list_bi;
	SH_Item* list_item;

	SH_Boolean* b;
	SH_BareItem* bi;
	SH_Item* item;

	SH_Key  *key1;
	SH_Item *val1;

	int err = 0;

	list = SH_List__init(&err);
	if (err) {
		printf("* unable to init SH_List\n");
		return;
	}
	b = SH_Boolean__init(SH_FALSE, &err);
	if (err) {
		printf("* unable to init SH_Boolean\n");
		SH_List__destroy(list, SH_FALSE, 0);
		return;
	}
	bi = SH_BareItem__init_boolean(b, &err);
	if (err) {
		printf("* unable to init_boolean SH_BareItem\n");
		SH_Boolean__destroy(b, 0);
		SH_List__destroy(list, SH_FALSE, 0);
		return;
	}
	item = SH_Item__init(bi, (SH_dict*)0, &err);
	if (err) {
		printf("* unable to init SH_Item\n");
		SH_BareItem__destroy(bi, SH_TRUE, 0);
		SH_List__destroy(list, SH_FALSE, 0);
		return;
	}

	innerlist = SH_InnerList__init(&err);
	if ((SH_InnerList*)0 == innerlist || err) {
		printf("* unable to init SH_InnerList: [%llX] 0x%08X\n", (long long)innerlist, err);
	} else {
		printf("+ init SH_InnerList: [%llX]\n", (long long)innerlist);

		_print_innerlist(innerlist);

		SH_InnerList__add(innerlist, item, &err);
		if (err) {
			printf("  * unable to add to SH_InnerList: 0x%08X\n", err);
		} else {
			_print_innerlist(innerlist);
		}

		SH_InnerList__add(innerlist, item, &err);
		if (err) {
			printf("  * unable to add to SH_InnerList: 0x%08X\n", err);
		} else {
			_print_innerlist(innerlist);
		}

		SH_InnerList__add(innerlist, item, &err);
		if (err) {
			printf("  * unable to add to SH_InnerList: 0x%08X\n", err);
		} else {
			_print_innerlist(innerlist);
		}

		list_bi = SH_BareItem__init_innerlist(innerlist, &err);
		if (err) {
			printf("  * unable to init SH_BareItem from innerlist: 0x%08X\n", err);
		} else {
			list_item = SH_Item__init(list_bi, (SH_dict*)0, 0);

			SH_List__add(list, item, 0);
			SH_List__add(list, list_item, 0);
			SH_List__add(list, item, 0);

			_print_list(list);

			/* FIXME: catch errors here: */
			key1 = SH_Key__init((unsigned char*)"test", 4, &err);
			val1 = SH_Item__init(SH_BareItem__init_integer(SH_Integer__init(SH_INT_C(42), &err), &err), 0, &err);
			if (err) {
				printf("    x [%llX]=[%llX] 0x%08X\n", (long long)key1, (long long)val1, err);
			}
			SH_Item__add_param(list_item, key1, val1, &err);
			if (err) {
				printf("    x [%llX]=[%llX] 0x%08X\n", (long long)key1, (long long)val1, err);
			} else {
				_print_list(list);
			}

			SH_Key__destroy(key1, 0);
			SH_Item__destroy(val1, SH_TRUE, 0);

			SH_Item__destroy(list_item, SH_FALSE, 0);
			SH_BareItem__destroy(list_bi, SH_FALSE, 0);
		}

		SH_InnerList__destroy(innerlist, SH_FALSE, 0);
	}

	SH_Item__destroy(item, SH_TRUE, 0);
	SH_List__destroy(list, SH_FALSE, 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl $0x0, -0x4c(%rbp)
leaq -0x4c(%rbp), %rdi
callq 0x6ab0
movq %rax, -0x8(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x2835
leaq 0x5f1c(%rip), %rdi      # 0x8745
movb $0x0, %al
callq 0x1050
jmp 0x2b79
xorl %edi, %edi
leaq -0x4c(%rbp), %rsi
callq 0x4110
movq %rax, -0x28(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x286c
leaq 0x5f0e(%rip), %rdi      # 0x875f
movb $0x0, %al
callq 0x1050
movq -0x8(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x6b40
jmp 0x2b79
movq -0x28(%rbp), %rdi
leaq -0x4c(%rbp), %rsi
callq 0x4d70
movq %rax, -0x30(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x28b2
leaq 0x5ef2(%rip), %rdi      # 0x877c
movb $0x0, %al
callq 0x1050
movq -0x28(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x41b0
movq -0x8(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x6b40
jmp 0x2b79
movq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
leaq -0x4c(%rbp), %rdx
callq 0x5610
movq %rax, -0x38(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x2901
leaq 0x5ece(%rip), %rdi      # 0x87a2
movb $0x0, %al
callq 0x1050
movq -0x30(%rbp), %rdi
movl $0xff, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x4eb0
movq -0x8(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x6b40
jmp 0x2b79
leaq -0x4c(%rbp), %rdi
callq 0x43d0
movq %rax, -0x10(%rbp)
xorl %eax, %eax
cmpq -0x10(%rbp), %rax
je 0x291c
cmpl $0x0, -0x4c(%rbp)
je 0x2936
movq -0x10(%rbp), %rsi
movl -0x4c(%rbp), %edx
leaq 0x5e92(%rip), %rdi      # 0x87bc
movb $0x0, %al
callq 0x1050
jmp 0x2b58
movq -0x10(%rbp), %rsi
leaq 0x5ea9(%rip), %rdi      # 0x87ea
movb $0x0, %al
callq 0x1050
movq -0x10(%rbp), %rdi
callq 0x2770
movq -0x10(%rbp), %rdi
movq -0x38(%rbp), %rsi
leaq -0x4c(%rbp), %rdx
callq 0x4540
cmpl $0x0, -0x4c(%rbp)
je 0x297b
movl -0x4c(%rbp), %esi
leaq 0x5e95(%rip), %rdi      # 0x8807
movb $0x0, %al
callq 0x1050
jmp 0x2984
movq -0x10(%rbp), %rdi
callq 0x2770
movq -0x10(%rbp), %rdi
movq -0x38(%rbp), %rsi
leaq -0x4c(%rbp), %rdx
callq 0x4540
cmpl $0x0, -0x4c(%rbp)
je 0x29ae
movl -0x4c(%rbp), %esi
leaq 0x5e62(%rip), %rdi      # 0x8807
movb $0x0, %al
callq 0x1050
jmp 0x29b7
movq -0x10(%rbp), %rdi
callq 0x2770
movq -0x10(%rbp), %rdi
movq -0x38(%rbp), %rsi
leaq -0x4c(%rbp), %rdx
callq 0x4540
cmpl $0x0, -0x4c(%rbp)
je 0x29e1
movl -0x4c(%rbp), %esi
leaq 0x5e2f(%rip), %rdi      # 0x8807
movb $0x0, %al
callq 0x1050
jmp 0x29ea
movq -0x10(%rbp), %rdi
callq 0x2770
movq -0x10(%rbp), %rdi
leaq -0x4c(%rbp), %rsi
callq 0x4e10
movq %rax, -0x18(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x2a17
movl -0x4c(%rbp), %esi
leaq 0x5e27(%rip), %rdi      # 0x8832
movb $0x0, %al
callq 0x1050
jmp 0x2b49
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x5610
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x6c20
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x6c20
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x6c20
movq -0x8(%rbp), %rdi
callq 0x24f0
leaq 0x5bb9(%rip), %rdi      # 0x8627
movl $0x4, %esi
leaq -0x4c(%rbp), %rdx
callq 0x5ce0
movq %rax, -0x40(%rbp)
movl $0x2a, %edi
leaq -0x4c(%rbp), %rsi
callq 0x2b80
movq %rax, %rdi
leaq -0x4c(%rbp), %rsi
callq 0x4a50
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
leaq -0x4c(%rbp), %rdx
callq 0x5610
movq %rax, -0x48(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x2acd
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
movl -0x4c(%rbp), %ecx
leaq 0x5b68(%rip), %rdi      # 0x862e
movb $0x0, %al
callq 0x1050
movq -0x20(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
leaq -0x4c(%rbp), %rcx
callq 0x5850
cmpl $0x0, -0x4c(%rbp)
je 0x2b03
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
movl -0x4c(%rbp), %ecx
leaq 0x5b34(%rip), %rdi      # 0x862e
movb $0x0, %al
callq 0x1050
jmp 0x2b0c
movq -0x8(%rbp), %rdi
callq 0x24f0
movq -0x40(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x5ee0
movq -0x48(%rbp), %rdi
movl $0xff, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x56f0
movq -0x20(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x56f0
movq -0x18(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x4eb0
movq -0x10(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x4460
movq -0x38(%rbp), %rdi
movl $0xff, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x56f0
movq -0x8(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x6b40
addq $0x50, %rsp
popq %rbp
retq
nop