// File: /workspace/github_c_makefile_star2_O0/FirestonnneTFM[P]tfm_key_parser/src/traits_info.cpp
// Function: traits_info::load(abc_stream&)
void traits_info::load(abc_stream &stream){
	has_loaded_value = false;
	uint32_t name_index;
	stream >> name_index;
	if (name_index == 0)
		fatal("Multiname index cannot be zero");
	name = abc_file::get_multiname(name_index);
	stream >> kind;
	uint8_t kind_high = kind >> 4;
	kind = kind & 0x0f;
	if (kind_high & ATTR_Metadata)
		fatal("Trait attribute metadata unsupported");
	uint32_t slot_id;
	switch (kind) {
	case Trait_Slot:
	case Trait_Const: {
		stream >> slot_id;
		stream >> vindex;
		stream >> vindex;
		if (vindex) {
			uint8_t dummy;
			stream >> dummy;
		}
		break;
	}
	case Trait_Class:
	case Trait_Method:
	case Trait_Getter:
	case Trait_Setter:
	case Trait_Function:
		stream >> slot_id;
		stream >> vindex;
		break;
	default:
		std::cout << "traits_info, kind = " << +kind << std::endl;
		fatal("Low bits of trait kind unknown");
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movb $0x0, 0x10(%rax)
movq -0x10(%rbp), %rdi
leaq -0x14(%rbp), %rsi
callq 0x43d0
cmpl $0x0, -0x14(%rbp)
jne 0x8b7b
movl $0x18, %edi
callq 0x20e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
leaq 0x1ac9(%rip), %rsi      # 0xa603
leaq 0x1ae1(%rip), %rdx      # 0xa622
movl $0xd, %ecx
callq 0x2f30
jmp 0x8b4d
movq -0x40(%rbp), %rdi
leaq 0x6230(%rip), %rsi      # 0xed88
xorl %eax, %eax
movl %eax, %edx
callq 0x22b0
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2110
jmp 0x8d3d
movl -0x14(%rbp), %edi
callq 0x35d0
movq -0x38(%rbp), %rsi
movq %rax, (%rsi)
movq -0x10(%rbp), %rdi
addq $0x8, %rsi
callq 0x4370
movq -0x38(%rbp), %rax
movzbl 0x8(%rax), %ecx
sarl $0x4, %ecx
movb %cl, -0x25(%rbp)
movzbl 0x8(%rax), %ecx
andl $0xf, %ecx
movb %cl, 0x8(%rax)
movzbl -0x25(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x8c17
movl $0x18, %edi
callq 0x20e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x48(%rbp)
leaq 0x1a60(%rip), %rsi      # 0xa636
leaq 0x1a45(%rip), %rdx      # 0xa622
movl $0x13, %ecx
callq 0x2f30
jmp 0x8be9
movq -0x48(%rbp), %rdi
leaq 0x6194(%rip), %rsi      # 0xed88
xorl %eax, %eax
movl %eax, %edx
callq 0x22b0
movq -0x48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2110
jmp 0x8d3d
movq -0x38(%rbp), %rax
movzbl 0x8(%rax), %eax
movl %eax, -0x4c(%rbp)
testl %eax, %eax
je 0x8c3e
jmp 0x8c28
movl -0x4c(%rbp), %eax
decl %eax
subl $0x5, %eax
jb 0x8c89
jmp 0x8c34
movl -0x4c(%rbp), %eax
subl $0x6, %eax
jne 0x8cac
jmp 0x8c3e
movq -0x10(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0x43d0
movq -0x38(%rbp), %rsi
movq -0x10(%rbp), %rdi
addq $0xc, %rsi
callq 0x43d0
movq -0x38(%rbp), %rsi
movq -0x10(%rbp), %rdi
addq $0xc, %rsi
callq 0x43d0
movq -0x38(%rbp), %rax
cmpl $0x0, 0xc(%rax)
je 0x8c84
movq -0x10(%rbp), %rdi
leaq -0x2d(%rbp), %rsi
callq 0x4370
jmp 0x8d37
movq -0x10(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0x43d0
movq -0x38(%rbp), %rsi
movq -0x10(%rbp), %rdi
addq $0xc, %rsi
callq 0x43d0
jmp 0x8d37
movq 0x631d(%rip), %rdi      # 0xefd0
leaq 0x19a1(%rip), %rsi      # 0xa65b
callq 0x2170
movq %rax, %rdi
movq -0x38(%rbp), %rax
movzbl 0x8(%rax), %esi
callq 0x22c0
movq %rax, %rdi
movq 0x62e7(%rip), %rsi      # 0xefc0
callq 0x21c0
movl $0x18, %edi
callq 0x20e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x58(%rbp)
leaq 0x1977(%rip), %rsi      # 0xa670
leaq 0x1922(%rip), %rdx      # 0xa622
movl $0x2b, %ecx
callq 0x2f30
jmp 0x8d0c
movq -0x58(%rbp), %rdi
leaq 0x6071(%rip), %rsi      # 0xed88
xorl %eax, %eax
movl %eax, %edx
callq 0x22b0
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x2110
jmp 0x8d3d
addq $0x60, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x22e0
nopw %cs:(%rax,%rax)