// File: /workspace/github_c_makefile_star2_O0/phluid61[P]hsf/main.c
// Function: do_sh_decimal
void do_sh_decimal(sh_float_t value) {
	SH_Decimal* obj;
	SH_BareItem* bi;

	sh_float_t f;
	sh_bool_t b;
	sh_int_t i;
	uint16_t u;
	sh_char_t* s;

	int err = 0;

	obj = SH_Decimal__init(value, &err);
	if ((SH_Decimal*)0 == obj || err) {
		printf("* unable to init SH_Decimal(%.4F): [%llX] 0x%08X\n", (double)value, (long long)obj, err);
	} else {
		printf("+ init SH_Decimal(%.4F): [%llX]\n", (double)value, (long long)obj);

		f = SH_Decimal__float(obj, 0);
		printf("  - float =: %.4F\n", (double)f);

		f = SH_Decimal__abs(obj, 0);
		printf("  - abs =: %.4F\n", (double)f);

		b = SH_Decimal__negative(obj, 0);
		printf("  - negative =: %hhu\n", (unsigned char)b);

		i = SH_Decimal__integer_part(obj, 0);
		printf("  - integer_part =: %lld\n", (long long)i);

		u = SH_Decimal__fractional_part(obj, 0);
		printf("  - fractional_part =: %hu\n", u);

		s = SH_Decimal__to_s(obj, &err);
		if ((sh_char_t*)0 == s || err) {
			printf("  * unable to to_s: [%llX] 0x%08X\n", (long long)s, err);
		} else {
			printf("  - to_s =:\n");
			hexdump_string(s);
			free(s);
		}

		bi = SH_BareItem__init_decimal(obj, &err);
		if ((SH_BareItem*)0 == bi || err) {
			printf("  * unable to init SH_BareItem: [%llX] 0x%08X\n", (long long)bi, err);
		} else {
			printf("  + init SH_BareItem: [%llX]\n", (long long)bi);
			do_sh_bareitem(bi);
			SH_BareItem__destroy(bi, SH_FALSE, 0);
		}

		SH_Decimal__destroy(obj, 0);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movsd %xmm0, -0x8(%rbp)
movl $0x0, -0x44(%rbp)
movsd -0x8(%rbp), %xmm0
leaq -0x44(%rbp), %rdi
callq 0x2fb0
movq %rax, -0x10(%rbp)
xorl %eax, %eax
cmpq -0x10(%rbp), %rax
je 0x17a4
cmpl $0x0, -0x44(%rbp)
je 0x17c3
movsd -0x8(%rbp), %xmm0
movq -0x10(%rbp), %rsi
movl -0x44(%rbp), %edx
leaq 0x6a6e(%rip), %rdi      # 0x8225
movb $0x1, %al
callq 0x1050
jmp 0x194f
movsd -0x8(%rbp), %xmm0
movq -0x10(%rbp), %rsi
leaq 0x6a84(%rip), %rdi      # 0x8257
movb $0x1, %al
callq 0x1050
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x31a0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
leaq 0x6a80(%rip), %rdi      # 0x8278
movb $0x1, %al
callq 0x1050
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x31f0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
leaq 0x6a6e(%rip), %rdi      # 0x828b
movb $0x1, %al
callq 0x1050
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3250
movb %al, -0x21(%rbp)
movzbl -0x21(%rbp), %esi
leaq 0x69bf(%rip), %rdi      # 0x81fe
movb $0x0, %al
callq 0x1050
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x32a0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rsi
leaq 0x6a3a(%rip), %rdi      # 0x829c
movb $0x0, %al
callq 0x1050
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x32f0
movw %ax, -0x32(%rbp)
movzwl -0x32(%rbp), %esi
leaq 0x6a31(%rip), %rdi      # 0x82b6
movb $0x0, %al
callq 0x1050
movq -0x10(%rbp), %rdi
leaq -0x44(%rbp), %rsi
callq 0x3340
movq %rax, -0x40(%rbp)
xorl %eax, %eax
cmpq -0x40(%rbp), %rax
je 0x18ab
cmpl $0x0, -0x44(%rbp)
je 0x18c2
movq -0x40(%rbp), %rsi
movl -0x44(%rbp), %edx
leaq 0x6855(%rip), %rdi      # 0x810e
movb $0x0, %al
callq 0x1050
jmp 0x18e2
leaq 0x686a(%rip), %rdi      # 0x8133
movb $0x0, %al
callq 0x1050
movq -0x40(%rbp), %rdi
callq 0x1380
movq -0x40(%rbp), %rdi
callq 0x1030
movq -0x10(%rbp), %rdi
leaq -0x44(%rbp), %rsi
callq 0x4af0
movq %rax, -0x18(%rbp)
xorl %eax, %eax
cmpq -0x18(%rbp), %rax
je 0x1901
cmpl $0x0, -0x44(%rbp)
je 0x1918
movq -0x18(%rbp), %rsi
movl -0x44(%rbp), %edx
leaq 0x683e(%rip), %rdi      # 0x814d
movb $0x0, %al
callq 0x1050
jmp 0x1942
movq -0x18(%rbp), %rsi
leaq 0x6859(%rip), %rdi      # 0x817c
movb $0x0, %al
callq 0x1050
movq -0x18(%rbp), %rdi
callq 0x11e0
movq -0x18(%rbp), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x4eb0
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3150
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)