// File: /workspace/github_cpp_makefile_star2_O2/KokiKishimoto[P]cp_decomposition/testcp.cpp
// Function: TestCP::TestCP(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
TestCP(std::string dataFile, std::string testFile, std::string validFile, std::string modelSubjFile, std::string modelObjFile, std::string modelRelFile) {
		trainData = Data();
		trainData.readFromRawFile(dataFile);

		testData = TestData();
		testData.readFromRawFileRev(testFile, trainData);

		scores_subj.resize(trainData.entity_counter, RankScore());
		scores_obj.resize(trainData.entity_counter, RankScore());

		subjData = ModelFileLoad();
		subjData.model_load(modelSubjFile);
		subjVec = subjData.Vec;

		objData = ModelFileLoad();
		objData.model_load(modelObjFile);
		objVec = objData.Vec;

		relationData = ModelFileLoad();
		relationData.model_load(modelRelFile);
		relationVec = relationData.Vec;

		vecDim = subjData.vecDim;

		op = SignalOperation();
		outVec1.resize(vecDim);
		outVec2.resize(vecDim);
		outVec3.resize(vecDim);

		outVec1_inv.resize(vecDim);
		outVec2_inv.resize(vecDim);
		outVec3_inv.resize(vecDim);

		generate_key(trainData.triples);
		generate_key(testData.triples);

		validData = TestData();
		validData.readFromRawFile(validFile, trainData);
		generate_key(validData.triples);
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x268, %rsp            # imm = 0x268
movq %r9, 0x18(%rsp)
movq %r8, 0x8(%rsp)
movq %rcx, 0x10(%rsp)
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %rbx
leaq 0x18(%rdi), %rax
movq %rax, 0x88(%rsp)
leaq 0x30(%rdi), %r15
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rdi)
movups %xmm0, 0x10(%rdi)
movups %xmm0, (%rdi)
movq %r15, %rdi
callq 0x37b8
leaq 0x148(%rbx), %r14
leaq 0x160(%rbx), %rax
movq %rax, 0x20(%rsp)
leaq 0x178(%rbx), %rax
movq %rax, 0x38(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x180(%rbx)
andq $0x0, 0x190(%rbx)
leaq 0x1a8(%rbx), %rax
movups %xmm0, 0x148(%rbx)
movups %xmm0, 0x158(%rbx)
movups %xmm0, 0x168(%rbx)
movq %rax, 0x198(%rbx)
andq $0x0, 0x1a0(%rbx)
xorl %eax, %eax
movb %al, 0x1a8(%rbx)
leaq 0x1b8(%rbx), %rcx
movq %rcx, 0x30(%rsp)
movups %xmm0, 0x1c0(%rbx)
andq $0x0, 0x1d0(%rbx)
leaq 0x1e8(%rbx), %rcx
movq %rcx, 0x1d8(%rbx)
andq $0x0, 0x1e0(%rbx)
movb %al, 0x1e8(%rbx)
andq $0x0, 0x210(%rbx)
leaq 0x1f8(%rbx), %rcx
movq %rcx, 0x28(%rsp)
movups %xmm0, 0x200(%rbx)
leaq 0x228(%rbx), %rcx
movq %rcx, 0x218(%rbx)
andq $0x0, 0x220(%rbx)
movb %al, 0x228(%rbx)
leaq 0x238(%rbx), %rdi
leaq 0x250(%rbx), %rax
movq %rax, 0x78(%rsp)
leaq 0x268(%rbx), %rax
movq %rax, 0x70(%rsp)
leaq 0x280(%rbx), %rax
movq %rax, 0x68(%rsp)
leaq 0x298(%rbx), %rax
movq %rax, 0x60(%rsp)
leaq 0x2b0(%rbx), %rax
movq %rax, 0x58(%rsp)
leaq 0x2c8(%rbx), %rax
movq %rax, 0x50(%rsp)
leaq 0x2e0(%rbx), %rax
movq %rax, 0x48(%rsp)
leaq 0x2f8(%rbx), %rax
movq %rax, 0x40(%rsp)
andl $0x0, 0x320(%rbx)
leaq 0x320(%rbx), %rbp
andq $0x0, 0x328(%rbx)
movl $0xd8, %edx
movq %rdi, 0x80(%rsp)
xorl %esi, %esi
callq 0x2110
movq %rbp, 0x330(%rbx)
movq %rbp, 0x338(%rbx)
andq $0x0, 0x340(%rbx)
leaq 0x350(%rbx), %rax
andl $0x0, 0x350(%rbx)
andq $0x0, 0x358(%rbx)
movq %rax, 0x360(%rbx)
movq %rax, 0x368(%rbx)
andq $0x0, 0x370(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x380(%rbx)
movups %xmm0, 0x390(%rbx)
movups %xmm0, 0x3a0(%rbx)
movups %xmm0, 0x3b0(%rbx)
movups %xmm0, 0x3c0(%rbx)
movups %xmm0, 0x3d0(%rbx)
leaq 0x160(%rsp), %rax
andq $0x0, -0x10(%rax)
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x190(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x1c0(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x1f0(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x220(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movups %xmm0, 0x30(%rax)
movups %xmm0, 0x20(%rax)
leaq 0x150(%rsp), %rbp
movq %r15, %rdi
movq %rbp, %rsi
callq 0x3876
movq %rbp, %rdi
movq %r14, %rbp
callq 0x38fa
leaq 0x130(%rsp), %rdi
movq %r13, %rsi
callq 0x2240
leaq 0x130(%rsp), %rsi
movq %r15, %rdi
callq 0x3942
leaq 0x130(%rsp), %rdi
callq 0x20d0
xorps %xmm0, %xmm0
leaq 0x150(%rsp), %r13
movaps %xmm0, (%r13)
andq $0x0, 0x10(%r13)
movq %rbp, %rdi
movq %r13, %rsi
callq 0x4716
movq %r13, %rdi
callq 0x4412
leaq 0x110(%rsp), %rdi
movq %r12, %rsi
callq 0x2240
leaq 0x110(%rsp), %rsi
movq %rbp, %rdi
movq %r15, %rdx
callq 0x3bc8
leaq 0x110(%rsp), %rdi
callq 0x20d0
movslq 0x30(%rbx), %rsi
leaq 0x150(%rsp), %rdx
movq %rbx, %rdi
callq 0x3e4a
movslq (%r15), %rsi
leaq 0x150(%rsp), %rdx
movq 0x88(%rsp), %rdi
callq 0x3e4a
xorps %xmm0, %xmm0
leaq 0x180(%rsp), %r13
movups %xmm0, -0x28(%r13)
andq $0x0, -0x18(%r13)
movq %r13, -0x10(%r13)
andq $0x0, -0x8(%r13)
movb $0x0, (%r13)
leaq 0x150(%rsp), %r12
movq 0x38(%rsp), %rdi
movq %r12, %rsi
callq 0x3e80
movq %r12, %rdi
callq 0x3eb8
leaq 0xf0(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x2240
leaq 0xf0(%rsp), %rsi
movq 0x38(%rsp), %rdi
callq 0x3ed2
leaq 0x180(%rbx), %r14
leaq 0xf0(%rsp), %rdi
callq 0x20d0
movq 0x80(%rsp), %rdi
movq %r14, %rsi
callq 0x4012
xorps %xmm0, %xmm0
leaq 0x150(%rsp), %r14
movups %xmm0, 0x8(%r14)
andq $0x0, 0x18(%r14)
movq %r13, 0x20(%r14)
andq $0x0, 0x28(%r14)
movb $0x0, 0x30(%r14)
movq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0x3e80
movq %r14, %rdi
callq 0x3eb8
leaq 0xd0(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x2240
leaq 0xd0(%rsp), %rsi
movq 0x30(%rsp), %rdi
callq 0x3ed2
leaq 0x1c0(%rbx), %r14
leaq 0xd0(%rsp), %rdi
callq 0x20d0
movq 0x78(%rsp), %rdi
movq %r14, %rsi
callq 0x4012
movq 0x2a0(%rsp), %r14
xorps %xmm0, %xmm0
leaq 0x150(%rsp), %r12
movups %xmm0, 0x8(%r12)
andq $0x0, 0x18(%r12)
movq %r13, 0x20(%r12)
andq $0x0, 0x28(%r12)
movb $0x0, 0x30(%r12)
movq 0x28(%rsp), %rdi
movq %r12, %rsi
callq 0x3e80
movq %r12, %rdi
callq 0x3eb8
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x2240
leaq 0xb0(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x3ed2
leaq 0x200(%rbx), %r14
leaq 0xb0(%rsp), %rdi
callq 0x20d0
movq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0x4012
movslq 0x17c(%rbx), %rsi
movl %esi, 0x378(%rbx)
movq 0x68(%rsp), %rdi
callq 0x40f0
movslq 0x378(%rbx), %rsi
movq 0x60(%rsp), %rdi
callq 0x40f0
movslq 0x378(%rbx), %rsi
movq 0x58(%rsp), %rdi
callq 0x40f0
movslq 0x378(%rbx), %rsi
movq 0x50(%rsp), %rdi
callq 0x40f0
movslq 0x378(%rbx), %rsi
movq 0x48(%rsp), %rdi
callq 0x40f0
movslq 0x378(%rbx), %rsi
movq 0x40(%rsp), %rdi
callq 0x40f0
leaq 0x128(%rbx), %rsi
movq %rbx, %rdi
callq 0x4122
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x4122
xorps %xmm0, %xmm0
leaq 0x150(%rsp), %r14
movaps %xmm0, (%r14)
andq $0x0, 0x10(%r14)
movq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x4716
movq %r14, %rdi
callq 0x4412
leaq 0x90(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x2240
leaq 0x90(%rsp), %rsi
movq 0x20(%rsp), %r14
movq %r14, %rdi
movq %r15, %rdx
callq 0x41ba
leaq 0x90(%rsp), %rdi
callq 0x20d0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4122
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbp, 0x10(%rsp)
movq %rax, 0x8(%rsp)
leaq 0x90(%rsp), %rdi
jmp 0x3099
movq %rbp, 0x10(%rsp)
movq %rax, 0x8(%rsp)
leaq 0xb0(%rsp), %rdi
jmp 0x3099
movq %rbp, 0x10(%rsp)
movq %rax, 0x8(%rsp)
leaq 0xd0(%rsp), %rdi
jmp 0x3099
movq %rbp, 0x10(%rsp)
movq %rax, 0x8(%rsp)
leaq 0xf0(%rsp), %rdi
jmp 0x3099
jmp 0x30aa
jmp 0x30aa
movq %rbp, 0x10(%rsp)
movq %rax, 0x8(%rsp)
leaq 0x110(%rsp), %rdi
jmp 0x3099
movq %rbp, 0x10(%rsp)
movq %rax, 0x8(%rsp)
leaq 0x130(%rsp), %rdi
callq 0x20d0
jmp 0x30b4
movq %rax, 0x8(%rsp)
jmp 0x31a9
movq %rbp, 0x10(%rsp)
movq %rax, 0x8(%rsp)
leaq 0x318(%rbx), %rax
movq %rax, 0x18(%rsp)
leaq 0x348(%rbx), %r13
leaq 0x380(%rbx), %rbp
leaq 0x398(%rbx), %r14
leaq 0x3b0(%rbx), %r12
leaq 0x3c8(%rbx), %rdi
callq 0x5b78
movq %r12, %rdi
callq 0x5b78
movq %r14, %rdi
callq 0x5b78
movq %rbp, %rdi
callq 0x5b78
movq %r13, %rdi
callq 0x6514
movq 0x18(%rsp), %rdi
callq 0x6514
movq 0x40(%rsp), %rdi
callq 0x5b78
movq 0x48(%rsp), %rdi
callq 0x5b78
movq 0x50(%rsp), %rdi
callq 0x5b78
movq 0x58(%rsp), %rdi
callq 0x5b78
movq 0x60(%rsp), %rdi
callq 0x5b78
movq 0x68(%rsp), %rdi
callq 0x5b78
movq 0x70(%rsp), %rdi
callq 0x43e6
movq 0x78(%rsp), %rdi
callq 0x43e6
movq 0x80(%rsp), %rdi
callq 0x43e6
movq 0x28(%rsp), %rdi
callq 0x3eb8
movq 0x30(%rsp), %rdi
callq 0x3eb8
movq 0x38(%rsp), %rdi
callq 0x3eb8
movq 0x20(%rsp), %rdi
callq 0x4412
movq 0x10(%rsp), %rdi
callq 0x4412
movq %r15, %rdi
callq 0x38fa
movq 0x88(%rsp), %rdi
callq 0x6584
movq %rbx, %rdi
callq 0x6584
movq 0x8(%rsp), %rdi
callq 0x22c0