| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -19,22 +19,22 @@ int main() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    AllCases::build();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    std::vector<RawCode> test_cases;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        AllCases::build();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        std::vector<uint64_t> all_cases;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        for (uint64_t head = 0; head < 16; ++head) {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//            for (const auto &range : AllCases::fetch()[head]) {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//                all_cases.emplace_back(head << 32 | range);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//            }
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        }
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        for (uint32_t i = 0; i < 1000; ++i) {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//            test_cases.emplace_back(
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//                RawCode::from_common_code(all_cases.at(i * 29334))
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//            );
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        }
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    }
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    std::cout << "test size -> " << test_cases.size() << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::vector<RawCode> test_cases; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        AllCases::build(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        std::vector<uint64_t> all_cases; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (uint64_t head = 0; head < 16; ++head) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for (const auto &range : AllCases::fetch()[head]) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                all_cases.emplace_back(head << 32 | range); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (uint32_t i = 0; i < 100; ++i) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            test_cases.emplace_back( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                RawCode::from_common_code(all_cases.at(i * 293344)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::cout << "test size -> " << test_cases.size() << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    std::cout << "wait 3s" << std::endl;
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -44,25 +44,28 @@ int main() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto start_time = clock(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        auto fc = FastCal(RawCode::unsafe_create(0));
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        for (auto code : test_cases) {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//            fc.set_root(code);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//            fc.solve();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        }
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    }
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    auto fc = FastCal(RawCode::from_common_code("1a9bf0c"));
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    fc.solve();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        auto fc = FastCal(RawCode::unsafe_create(0)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (auto code : test_cases) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            fc.set_root(code); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            fc.solve(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto a = Analyse(RawCode::from_common_code("1a9bf0c")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    auto a = Analyse(RawCode::from_common_code("1a9bf0c"));
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    a.build();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto ret = a.build_until([](uint64_t code) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return ((code >> (3 * 0xD)) & 0b111) == B_2x2; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    auto ret = a.build_until([](uint64_t code) {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        return ((code >> (3 * 0xD)) & 0b111) == B_2x2;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    });
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    for (const auto &r : ret) {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        std::cout << r << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    }
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    a.backtrack_demo(0x7F87E0E5BFFF492); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    a.backtrack_demo(0x7F87E0E5BFFF492);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    a.backtrack_demo(0x1FB1E36F9FFF492);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    auto start_time = clock();
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -108,8 +111,8 @@ int main() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    std::cerr << (clock() - start_time) / CLOCKS_PER_SEC << "s" << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    std::cerr << (clock() - start_time) * 1000 / CLOCKS_PER_SEC << "ms" << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::cerr << (clock() - start_time) * 1000000 / CLOCKS_PER_SEC << "us" << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::cerr << (clock() - start_time) * 1000 / CLOCKS_PER_SEC << "ms" << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    std::cerr << (clock() - start_time) * 1000000 / CLOCKS_PER_SEC << "us" << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//    std::cout << "complete benchmark" << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |