// File: /workspace/github_c_makefile_star2_O2/FirestonnneTFM[P]tfm_key_parser/src/cpool_info.cpp
// Function: cpool_info::load(abc_stream&)
void cpool_info::load(abc_stream &stream) {
	uint32_t count;
	stream >> count;
	count = count ? count : 1;
	ints = Array<int32_t>(count);
	ints[0] = 0;
	for (unsigned i = 1; i < count; ++i) {
		stream >> ints[i];
	}
	stream >> count;
	count = count ? count : 1;
	uints = Array<uint32_t>(count);
	uints[0] = 0;
	for (unsigned i = 1; i < count; ++i) {
		stream >> uints[i];
	}
	stream >> count;
	count = count ? count : 1;
	doubles = Array<double>(count);
	doubles[0] = NAN;
	for (unsigned i = 1; i < count; ++i) {
		stream >> doubles[i];
	}
	stream >> count;
	count = count ? count : 1;
	strings = Array<char*>(count);
	strings[0] = new char[1];
	strings[0][0] = '\0';
	for (unsigned i = 1; i < count; ++i) {
		stream >> strings[i];
	}
	stream >> count;
	count = count ? count : 1;
	namespaces = Array<namespace_info>(count);
	namespaces[0].kind = 0;
	namespaces[0].str = NULL;
	for (unsigned i = 1; i < count; ++i) {
		stream >> namespaces[i].kind;
		uint32_t name_index;
		stream >> name_index;
		namespaces[i].str = abc_file::get_str(name_index);
	}
	stream >> count;
	count = count ? count : 1;
	namespace_sets = Array<Array<namespace_info*>>(count);
	namespace_sets[0] = Array<namespace_info*>(0);
	for (unsigned i = 1; i < count; ++i) {
		uint32_t n;
		stream >> n;
		namespace_sets[i] = Array<namespace_info*>(n);
		for (unsigned j = 0; j < n; ++j) {
			uint32_t index;
			stream >> index;
			if (index == 0) {
				fatal("namespace set contained 0 (namespace *ANY)");
			}
			namespace_sets[i][j] = abc_file::get_namespace(index);
		}
	}
	stream >> count;
	count = count ? count : 1;
	multinames = Array<multiname_info>(count);
	multinames[0].kind = 0;
	multinames[0].ns_str = abc_file::get_str(0);
	multinames[0].str = abc_file::get_str(0);
	for (unsigned i = 1; i < count; ++i) {
		multinames[i].load(stream);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movq %rsp, %r15
movq %rsi, %rdi
movq %r15, %rsi
callq 0x305c
movl (%r15), %esi
cmpl $0x1, %esi
adcl $0x0, %esi
movl %esi, (%r15)
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x3f8c
movups (%r15), %xmm0
movups %xmm0, (%r14)
movq 0x8(%r14), %rax
andl $0x0, (%rax)
pushq $0x1
popq %rbp
cmpl (%rsp), %ebp
jae 0x3c8d
movslq %ebp, %rsi
shlq $0x2, %rsi
addq 0x8(%r14), %rsi
movq %rbx, %rdi
callq 0x30c8
incl %ebp
jmp 0x3c71
movq %rsp, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x305c
movl (%r15), %esi
cmpl $0x1, %esi
adcl $0x0, %esi
movl %esi, (%r15)
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x3fac
movups (%r15), %xmm0
movups %xmm0, 0x10(%r14)
movq 0x18(%r14), %rax
andl $0x0, (%rax)
pushq $0x1
popq %rbp
cmpl (%rsp), %ebp
jae 0x3ce3
movslq %ebp, %rsi
shlq $0x2, %rsi
addq 0x18(%r14), %rsi
movq %rbx, %rdi
callq 0x305c
incl %ebp
jmp 0x3cc7
movq %rsp, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x305c
movl (%r15), %esi
cmpl $0x1, %esi
adcl $0x0, %esi
movl %esi, (%r15)
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x3fcc
movups (%r15), %xmm0
movups %xmm0, 0x20(%r14)
movq 0x28(%r14), %rax
movabsq $0x7ff8000000000000, %rcx # imm = 0x7FF8000000000000
movq %rcx, (%rax)
pushq $0x1
popq %rbp
cmpl (%rsp), %ebp
jae 0x3d43
movslq %ebp, %rsi
shlq $0x3, %rsi
addq 0x28(%r14), %rsi
movq %rbx, %rdi
callq 0x311c
incl %ebp
jmp 0x3d27
movq %rsp, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x305c
movl (%r15), %esi
cmpl $0x1, %esi
adcl $0x0, %esi
movl %esi, (%r15)
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x3fec
movups (%r15), %xmm0
movups %xmm0, 0x30(%r14)
pushq $0x1
popq %rdi
callq 0x2030
movq 0x38(%r14), %rcx
movq %rax, (%rcx)
movq 0x38(%r14), %rax
movq (%rax), %rax
movb $0x0, (%rax)
pushq $0x1
popq %rbp
cmpl (%rsp), %ebp
jae 0x3dab
movslq %ebp, %rsi
shlq $0x3, %rsi
addq 0x38(%r14), %rsi
movq %rbx, %rdi
callq 0x3134
incl %ebp
jmp 0x3d8f
movq %rsp, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x305c
movl (%r15), %esi
cmpl $0x1, %esi
adcl $0x0, %esi
movl %esi, (%r15)
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x400c
movups (%r15), %xmm0
movups %xmm0, 0x40(%r14)
movq 0x48(%r14), %rsi
movb $0x0, (%rsi)
andq $0x0, 0x8(%rsi)
pushq $0x1
popq %rbp
cmpl (%rsp), %ebp
jae 0x3e22
movslq %ebp, %r12
shlq $0x4, %r12
addq %r12, %rsi
movq %rbx, %rdi
callq 0x3036
movq %rbx, %rdi
movq %r15, %rsi
callq 0x305c
movl 0x8(%rsp), %edi
callq 0x2d08
movq 0x48(%r14), %rsi
movq %rax, 0x8(%rsi,%r12)
incl %ebp
jmp 0x3dea
movq %rsp, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x305c
movl (%r15), %esi
cmpl $0x1, %esi
adcl $0x0, %esi
movl %esi, (%r15)
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x402c
movups (%r15), %xmm0
movups %xmm0, 0x50(%r14)
movq 0x58(%r14), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
pushq $0x1
popq %rbp
cmpl (%rsp), %ebp
jae 0x3ed3
movq %rbx, %rdi
leaq 0x4(%rsp), %rsi
callq 0x305c
movl 0x4(%rsp), %esi
movq %r15, %rdi
callq 0x4070
movq 0x58(%r14), %rax
movslq %ebp, %r13
shlq $0x4, %r13
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rax,%r13)
xorl %r12d, %r12d
cmpl 0x4(%rsp), %r12d
jae 0x3ecf
movq %rbx, %rdi
movq %r15, %rsi
callq 0x305c
movl 0x8(%rsp), %edi
testl %edi, %edi
je 0x3f56
callq 0x2d66
movq 0x58(%r14), %rcx
movq 0x8(%rcx,%r13), %rcx
movslq %r12d, %rdx
movq %rax, (%rcx,%rdx,8)
incl %r12d
jmp 0x3e97
incl %ebp
jmp 0x3e61
movq %rsp, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x305c
movl (%r15), %esi
cmpl $0x1, %esi
adcl $0x0, %esi
movl %esi, (%r15)
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x4090
movups (%r15), %xmm0
movups %xmm0, 0x60(%r14)
movq 0x68(%r14), %rax
movb $0x0, (%rax)
xorl %edi, %edi
callq 0x2d08
movq 0x68(%r14), %rcx
movq %rax, 0x8(%rcx)
xorl %edi, %edi
callq 0x2d08
movq 0x68(%r14), %rcx
movq %rax, 0x10(%rcx)
pushq $0x1
popq %rbp
cmpl (%rsp), %ebp
jae 0x3f47
movslq %ebp, %rax
imulq $0x30, %rax, %rdi
addq 0x68(%r14), %rdi
movq %rbx, %rsi
callq 0x43f8
incl %ebp
jmp 0x3f2b
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x18
popq %rdi
callq 0x20f0
movl $0x3d, (%rax)
leaq 0x2227(%rip), %rcx      # 0x6192
movq %rcx, 0x8(%rax)
leaq 0x21f1(%rip), %rcx      # 0x6167
movq %rcx, 0x10(%rax)
leaq 0x4e0f(%rip), %rsi      # 0x8d90
movq %rax, %rdi
xorl %edx, %edx
callq 0x2280
nop