// File: /workspace/github_c_makefile_star2_O3/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
leaq 0xc(%rsp), %r15
movq %rsi, %rdi
movq %r15, %rsi
callq 0x30a0
movl (%r15), %ebp
cmpl $0x2, %ebp
movl $0x1, %r12d
movl $0x1, %r13d
cmovael %ebp, %r13d
movl %r13d, (%r15)
leaq (,%r13,4), %rdi
callq 0x2030
movl %r13d, (%r14)
movq %rax, 0x8(%r14)
movl $0x0, (%rax)
cmpl $0x2, %ebp
jb 0x3d7b
movl $0x1, %r15d
movslq %r15d, %r15
leaq (,%r15,4), %rsi
addq 0x8(%r14), %rsi
movq %rbx, %rdi
callq 0x3110
incl %r15d
cmpl 0xc(%rsp), %r15d
jb 0x3d5a
leaq 0xc(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30a0
movl (%r15), %ebp
cmpl $0x2, %ebp
cmovael %ebp, %r12d
movl %r12d, (%r15)
leaq (,%r12,4), %rdi
callq 0x2030
movl %r12d, 0x10(%r14)
movq %rax, 0x18(%r14)
movl $0x0, (%rax)
cmpl $0x2, %ebp
jb 0x3ddf
movl $0x1, %r15d
movslq %r15d, %r15
leaq (,%r15,4), %rsi
addq 0x18(%r14), %rsi
movq %rbx, %rdi
callq 0x30a0
incl %r15d
cmpl 0xc(%rsp), %r15d
jb 0x3dbe
leaq 0xc(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30a0
movl (%r15), %ebp
cmpl $0x2, %ebp
movl $0x1, %r12d
movl $0x1, %r13d
cmovael %ebp, %r13d
movl %r13d, (%r15)
leaq (,%r13,8), %rdi
callq 0x2030
movl %r13d, 0x20(%r14)
movq %rax, 0x28(%r14)
movabsq $0x7ff8000000000000, %rcx # imm = 0x7FF8000000000000
movq %rcx, (%rax)
cmpl $0x2, %ebp
jb 0x3e56
movl $0x1, %r15d
movslq %r15d, %r15
leaq (,%r15,8), %rsi
addq 0x28(%r14), %rsi
movq %rbx, %rdi
callq 0x3166
incl %r15d
cmpl 0xc(%rsp), %r15d
jb 0x3e35
leaq 0xc(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30a0
movl (%r15), %ebp
cmpl $0x2, %ebp
cmovael %ebp, %r12d
movl %r12d, (%r15)
leaq (,%r12,8), %rdi
callq 0x2030
movq %rax, %r15
movl %r12d, 0x30(%r14)
movq %rax, 0x38(%r14)
movl $0x1, %edi
callq 0x2030
movq %rax, (%r15)
movb $0x0, (%rax)
cmpl $0x2, %ebp
jb 0x3ec7
movl $0x1, %r15d
movslq %r15d, %r15
leaq (,%r15,8), %rsi
addq 0x38(%r14), %rsi
movq %rbx, %rdi
callq 0x317e
incl %r15d
cmpl 0xc(%rsp), %r15d
jb 0x3ea6
leaq 0xc(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30a0
movl (%r15), %ebp
cmpl $0x2, %ebp
movl $0x1, %r13d
cmovael %ebp, %r13d
movl $0x1, %r12d
movl %r13d, (%r15)
movq %r13, %rdi
shlq $0x4, %rdi
callq 0x2030
movl %r13d, 0x40(%r14)
movq %rax, 0x48(%r14)
movb $0x0, (%rax)
movq $0x0, 0x8(%rax)
cmpl $0x2, %ebp
jb 0x3f58
movq %rax, %rsi
leaq 0x10(%rsp), %r15
movslq %r12d, %r12
movq %r12, %r13
shlq $0x4, %r13
addq %r13, %rsi
movq %rbx, %rdi
callq 0x307a
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30a0
movl 0x10(%rsp), %edi
callq 0x2e72
movq 0x48(%r14), %rsi
movq %rax, 0x8(%rsi,%r13)
incl %r12d
cmpl 0xc(%rsp), %r12d
jb 0x3f1c
leaq 0xc(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30a0
movl (%r15), %ebp
cmpl $0x1, %ebp
movl %ebp, %r12d
adcl $0x0, %r12d
movl %r12d, (%r15)
movq %r12, %r15
shlq $0x4, %r15
movq %r15, %rdi
callq 0x2030
addq %rax, %r15
movq %rax, %rcx
movl $0x0, (%rcx)
movq $0x0, 0x8(%rcx)
addq $0x10, %rcx
cmpq %r15, %rcx
jne 0x3f8d
movl %r12d, 0x50(%r14)
movq %rax, 0x58(%r14)
movl $0x0, (%rax)
movq $0x0, 0x8(%rax)
cmpl $0x2, %ebp
jb 0x4055
movl $0x1, %ebp
leaq 0x14(%rsp), %r12
movq %rbx, %rdi
leaq 0x10(%rsp), %rsi
callq 0x30a0
movl 0x10(%rsp), %r15d
testq %r15, %r15
je 0x3ff3
leaq (,%r15,8), %rdi
callq 0x2030
jmp 0x3ff5
xorl %eax, %eax
movq 0x58(%r14), %rcx
movslq %ebp, %r13
shlq $0x4, %r13
movl %r15d, (%rcx,%r13)
movq %rax, 0x8(%rcx,%r13)
cmpl $0x0, 0x10(%rsp)
je 0x4049
xorl %r15d, %r15d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x30a0
movl 0x14(%rsp), %edi
testl %edi, %edi
je 0x4108
callq 0x2ed4
movq 0x58(%r14), %rcx
movq 0x8(%rcx,%r13), %rcx
movslq %r15d, %r15
movq %rax, (%rcx,%r15,8)
incl %r15d
cmpl 0x10(%rsp), %r15d
jb 0x4013
incl %ebp
cmpl 0xc(%rsp), %ebp
jb 0x3fcd
leaq 0xc(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30a0
movl (%r15), %r12d
cmpl $0x1, %r12d
adcl $0x0, %r12d
movl %r12d, (%r15)
movq %r12, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r15
movq %r15, %rdi
callq 0x2030
xorl %ecx, %ecx
movl $0x0, 0x20(%rax,%rcx)
movq $0x0, 0x28(%rax,%rcx)
addq $0x30, %rcx
cmpq %rcx, %r15
jne 0x4088
movl %r12d, 0x60(%r14)
movq %rax, 0x68(%r14)
movb $0x0, (%rax)
xorl %edi, %edi
callq 0x2e72
movq 0x68(%r14), %rcx
movq %rax, 0x8(%rcx)
xorl %edi, %edi
callq 0x2e72
movq 0x68(%r14), %rcx
movq %rax, 0x10(%rcx)
cmpl $0x2, 0xc(%rsp)
jb 0x40f9
movl $0x1, %r15d
movslq %r15d, %r15
leaq (%r15,%r15,2), %rdi
shlq $0x4, %rdi
addq 0x68(%r14), %rdi
movq %rbx, %rsi
callq 0x449c
incl %r15d
cmpl 0xc(%rsp), %r15d
jb 0x40d8
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x18, %edi
callq 0x2100
movl $0x3d, (%rax)
leaq 0x2073(%rip), %rcx      # 0x6192
movq %rcx, 0x8(%rax)
leaq 0x203d(%rip), %rcx      # 0x6167
movq %rcx, 0x10(%rax)
leaq 0x4c5b(%rip), %rsi      # 0x8d90
movq %rax, %rdi
xorl %edx, %edx
callq 0x22d0
nop