// File: KokiKishimoto[P]cp_decomposition/./data.hpp
// Function: Data::readFromRawFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void readFromRawFile(std::string filename) {
		std::ifstream fin;

		fin.open(filename);
		std::string t0, t1, t2;
		while (fin >> t0 >> t1 >> t2) {
			int subj = addEntity(t0);
			int obj = addEntity(t2);
			int relation = addRelation(t1);
			triples.emplace_back(subj, relation, obj);
		}

		key_gen = TripleKeyGen(entity_counter, relation_counter);
		for (const Triple& t : triples) {
			long long key = key_gen.calcKey(t.subj, t.relation, t.obj);
			triple_key_set.insert(key);
		}
		fin.close();
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3a0, %rsp            # imm = 0x3A0
movq %rsi, -0x348(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x358(%rbp)
leaq -0x218(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x3310
movq -0x350(%rbp), %rdi
movq -0x348(%rbp), %rsi
movl $0x8, %edx
callq 0x3250
jmp 0x4002
leaq -0x248(%rbp), %rdi
callq 0x3380
leaq -0x268(%rbp), %rdi
callq 0x3380
leaq -0x288(%rbp), %rdi
callq 0x3380
leaq -0x218(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x3360
movq %rax, -0x360(%rbp)
jmp 0x4042
movq -0x360(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x3360
movq %rax, -0x368(%rbp)
jmp 0x405e
movq -0x368(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x3360
movq %rax, -0x370(%rbp)
jmp 0x407a
movq -0x370(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3350
movb %al, -0x371(%rbp)
jmp 0x4098
movb -0x371(%rbp), %al
testb $0x1, %al
jne 0x40a7
jmp 0x4245
leaq -0x2b0(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x3120
jmp 0x40bc
movq -0x358(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x61a0
movl %eax, -0x378(%rbp)
jmp 0x40d7
leaq -0x2b0(%rbp), %rdi
callq 0x31a0
movl -0x378(%rbp), %eax
movl %eax, -0x28c(%rbp)
leaq -0x2d8(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x3120
jmp 0x4104
movq -0x358(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x61a0
movl %eax, -0x37c(%rbp)
jmp 0x411f
leaq -0x2d8(%rbp), %rdi
callq 0x31a0
movl -0x37c(%rbp), %eax
movl %eax, -0x2b4(%rbp)
leaq -0x300(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x3120
jmp 0x414c
movq -0x358(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x6260
movl %eax, -0x380(%rbp)
jmp 0x4167
leaq -0x300(%rbp), %rdi
callq 0x31a0
movl -0x380(%rbp), %eax
movq -0x358(%rbp), %rdi
movl %eax, -0x2dc(%rbp)
addq $0xf8, %rdi
leaq -0x28c(%rbp), %rsi
leaq -0x2dc(%rbp), %rdx
leaq -0x2b4(%rbp), %rcx
callq 0x6330
jmp 0x41a9
jmp 0x4026
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x43ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
jmp 0x43aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x31a0
jmp 0x43aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x31a0
jmp 0x43aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x31a0
jmp 0x43aa
movq -0x358(%rbp), %rax
movl (%rax), %esi
movl 0x4(%rax), %edx
leaq -0x308(%rbp), %rdi
callq 0x63c0
jmp 0x425f
movq -0x358(%rbp), %rax
movq -0x308(%rbp), %rcx
movq %rcx, 0x110(%rax)
addq $0xf8, %rax
movq %rax, -0x310(%rbp)
movq -0x310(%rbp), %rdi
callq 0x63f0
movq %rax, -0x318(%rbp)
movq -0x310(%rbp), %rdi
callq 0x6420
movq %rax, -0x320(%rbp)
leaq -0x318(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x6450
testb $0x1, %al
jne 0x42c3
jmp 0x4363
leaq -0x318(%rbp), %rdi
callq 0x6490
movq -0x358(%rbp), %rdi
movq %rax, -0x328(%rbp)
addq $0x110, %rdi            # imm = 0x110
movq -0x328(%rbp), %rax
movl 0x8(%rax), %edx
movl (%rax), %esi
movl 0x4(%rax), %ecx
callq 0x64b0
movq %rax, -0x388(%rbp)
jmp 0x4301
movq -0x358(%rbp), %rdi
movq -0x388(%rbp), %rax
movq %rax, -0x330(%rbp)
addq $0xc8, %rdi
leaq -0x330(%rbp), %rsi
callq 0x64f0
movb %dl, -0x391(%rbp)
movq %rax, -0x390(%rbp)
jmp 0x4338
movb -0x391(%rbp), %al
movq -0x390(%rbp), %rcx
movq %rcx, -0x340(%rbp)
movb %al, -0x338(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x6540
jmp 0x42a7
leaq -0x218(%rbp), %rdi
callq 0x3080
jmp 0x4371
leaq -0x288(%rbp), %rdi
callq 0x31a0
leaq -0x268(%rbp), %rdi
callq 0x31a0
leaq -0x248(%rbp), %rdi
callq 0x31a0
leaq -0x218(%rbp), %rdi
callq 0x30b0
addq $0x3a0, %rsp            # imm = 0x3A0
popq %rbp
retq
leaq -0x288(%rbp), %rdi
callq 0x31a0
leaq -0x268(%rbp), %rdi
callq 0x31a0
leaq -0x248(%rbp), %rdi
callq 0x31a0
leaq -0x218(%rbp), %rdi
callq 0x30b0
movq -0x220(%rbp), %rdi
callq 0x3440
nopw %cs:(%rax,%rax)