// File: /workspace/github_c_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
leaq 0x4(%rsp), %r14
andl $0x0, (%r14)
movq %r14, %rdi
callq 0x46c0
cmpl $0x0, (%r14)
je 0x25aa
leaq 0x32aa(%rip), %rdi      # 0x584a
callq 0x1040
jmp 0x289e
movq %rax, %rbx
leaq 0x4(%rsp), %r15
xorl %edi, %edi
movq %r15, %rsi
callq 0x3268
cmpl $0x0, (%r15)
je 0x25d3
leaq 0x3265(%rip), %rdi      # 0x582e
callq 0x1040
jmp 0x2892
movq %rax, %r14
leaq 0x4(%rsp), %r12
movq %rax, %rdi
movq %r12, %rsi
callq 0x3834
cmpl $0x0, (%r12)
je 0x2608
leaq 0x3215(%rip), %rdi      # 0x5809
callq 0x1040
movq %r14, %rdi
xorl %esi, %esi
callq 0x32b4
jmp 0x2892
movq %rax, %r15
leaq 0x4(%rsp), %r12
movq %rax, %rdi
xorl %esi, %esi
movq %r12, %rdx
callq 0x3b84
cmpl $0x0, (%r12)
je 0x2644
leaq 0x31c5(%rip), %rdi      # 0x57f0
callq 0x1040
movq %r15, %rdi
movl $0xff, %esi
xorl %edx, %edx
callq 0x38c6
jmp 0x2892
movq %rax, %r14
leaq 0x4(%rsp), %r12
movq %r12, %rdi
callq 0x3364
movq %rax, %r15
testq %rax, %rax
sete %al
movl (%r12), %edx
testl %edx, %edx
setne %cl
orb %al, %cl
cmpb $0x1, %cl
jne 0x2683
leaq 0x30ad(%rip), %rdi      # 0x5721
movq %r15, %rsi
xorl %eax, %eax
callq 0x1060
jmp 0x2883
leaq 0x30c5(%rip), %rdi      # 0x574f
movq %r15, %rsi
xorl %eax, %eax
callq 0x1060
movq %r15, %rdi
callq 0x24f5
leaq 0x4(%rsp), %r12
movq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x342e
movl (%r12), %esi
testl %esi, %esi
je 0x26c7
leaq 0x30ae(%rip), %rdi      # 0x576c
xorl %eax, %eax
callq 0x1060
jmp 0x26cf
movq %r15, %rdi
callq 0x24f5
leaq 0x4(%rsp), %r12
movq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x342e
movl (%r12), %esi
testl %esi, %esi
je 0x26fa
leaq 0x307b(%rip), %rdi      # 0x576c
xorl %eax, %eax
callq 0x1060
jmp 0x2702
movq %r15, %rdi
callq 0x24f5
leaq 0x4(%rsp), %r12
movq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x342e
movl (%r12), %esi
testl %esi, %esi
je 0x272d
leaq 0x3048(%rip), %rdi      # 0x576c
xorl %eax, %eax
callq 0x1060
jmp 0x2735
movq %r15, %rdi
callq 0x24f5
leaq 0x4(%rsp), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x387d
movl (%r13), %esi
testl %esi, %esi
je 0x2760
leaq 0x3043(%rip), %rdi      # 0x5797
xorl %eax, %eax
callq 0x1060
jmp 0x2877
movq %rax, 0x10(%rsp)
movq %rax, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3b84
movq %rax, %r12
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x478a
movq %rbx, %rdi
movq %r12, 0x8(%rsp)
movq %r12, %rsi
xorl %edx, %edx
callq 0x478a
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x478a
movq %rbx, %rdi
callq 0x227f
leaq 0x2e54(%rip), %rdi      # 0x5603
pushq $0x4
popq %rsi
leaq 0x4(%rsp), %r12
movq %r12, %rdx
callq 0x3fb4
movq %rax, %rbp
pushq $0x2a
popq %rdi
movq %r12, %rsi
callq 0x28b0
movq %rax, %rdi
movq %r12, %rsi
callq 0x36c7
movq %rax, %rdi
xorl %esi, %esi
movq %r12, %rdx
callq 0x3b84
movq %rax, %r13
movl (%r12), %ecx
testl %ecx, %ecx
je 0x2804
leaq 0x2e13(%rip), %rdi      # 0x560a
movq %rbp, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1060
leaq 0x4(%rsp), %r12
movq 0x8(%rsp), %rdi
movq %rbp, %rsi
movq %r13, %rdx
movq %r12, %rcx
callq 0x3cb5
movl (%r12), %ecx
testl %ecx, %ecx
je 0x283a
leaq 0x2ddf(%rip), %rdi      # 0x560a
movq %rbp, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1060
jmp 0x2842
movq %rbx, %rdi
callq 0x227f
movq %rbp, %rdi
xorl %esi, %esi
callq 0x40ca
movq %r13, %rdi
movl $0xff, %esi
xorl %edx, %edx
callq 0x3c13
movq 0x8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3c13
movq 0x10(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x38c6
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x33a1
movq %r14, %rdi
movl $0xff, %esi
xorl %edx, %edx
callq 0x3c13
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x46fd
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)