40 make_usable(uint32_t access_rights)
    44 make_unusable(uint32_t access_rights)
    56 setup_check_guest_control_registers_debug_registers_and_msrs_all_paths(std::vector<struct control_flow_path> &cfg)
    83 setup_check_guest_segment_registers_all_paths(std::vector<struct control_flow_path> &cfg)
   128 setup_check_guest_descriptor_table_registers_all_paths(std::vector<struct control_flow_path> &cfg)
   140 setup_check_guest_rip_and_rflags_all_paths(std::vector<struct control_flow_path> &cfg)
   157 setup_check_guest_non_register_state_all_paths(std::vector<struct control_flow_path> &cfg)
   178 setup_check_guest_pdptes_all_paths(std::vector<struct control_flow_path> &cfg)
   188     std::vector<struct control_flow_path> sub_cfg;
   190     setup_check_guest_control_registers_debug_registers_and_msrs_all_paths(sub_cfg);
   191     setup_check_guest_segment_registers_all_paths(sub_cfg);
   192     setup_check_guest_descriptor_table_registers_all_paths(sub_cfg);
   193     setup_check_guest_rip_and_rflags_all_paths(sub_cfg);
   194     setup_check_guest_non_register_state_all_paths(sub_cfg);
   195     setup_check_guest_pdptes_all_paths(sub_cfg);
   197     path.
setup = [sub_cfg]
   199         for (
const auto &sub_path : sub_cfg)
   207 setup_check_guest_cr0_for_unsupported_bits_paths(std::vector<struct control_flow_path> &cfg)
   239 setup_check_guest_cr0_verify_paging_enabled_paths(std::vector<struct control_flow_path> &cfg)
   256 setup_check_guest_cr4_for_unsupported_bits_paths(std::vector<struct control_flow_path> &cfg)
   273 setup_check_guest_load_debug_controls_verify_reserved_paths(std::vector<struct control_flow_path> &cfg)
   299 setup_check_guest_verify_ia_32e_mode_enabled_paths(std::vector<struct control_flow_path> &cfg)
   334 setup_check_guest_verify_ia_32e_mode_disabled_paths(std::vector<struct control_flow_path> &cfg)
   360 setup_check_guest_cr3_for_unsupported_bits_paths(std::vector<struct control_flow_path> &cfg)
   373 setup_check_guest_load_debug_controls_verify_dr7_paths(std::vector<struct control_flow_path> &cfg)
   399 setup_check_guest_ia32_sysenter_esp_canonical_address_paths(std::vector<struct control_flow_path> &cfg)
   412 setup_check_guest_ia32_sysenter_eip_canonical_address_paths(std::vector<struct control_flow_path> &cfg)
   425 setup_check_guest_verify_load_ia32_perf_global_ctrl_paths(std::vector<struct control_flow_path> &cfg)
   451 setup_check_guest_verify_load_ia32_pat_paths(std::vector<struct control_flow_path> &cfg)
   512 setup_check_guest_verify_load_ia32_efer_paths(std::vector<struct control_flow_path> &cfg)
   583 setup_check_guest_verify_load_ia32_bndcfgs_paths(std::vector<struct control_flow_path> &cfg)
   614 setup_check_guest_tr_ti_bit_equals_0_paths(std::vector<struct control_flow_path> &cfg)
   627 setup_check_guest_ldtr_ti_bit_equals_0_paths(std::vector<struct control_flow_path> &cfg)
   648 setup_check_guest_ss_and_cs_rpl_are_the_same_paths(std::vector<struct control_flow_path> &cfg)
   650     path.
setup = [&] { enable_v8086(); };
   683 setup_check_guest_cs_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
   685     path.
setup = [&] { disable_v8086(); };
   705 setup_check_guest_ss_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
   707     path.
setup = [&] { disable_v8086(); };
   727 setup_check_guest_ds_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
   729     path.
setup = [&] { disable_v8086(); };
   749 setup_check_guest_es_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
   751     path.
setup = [&] { disable_v8086(); };
   771 setup_check_guest_fs_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
   773     path.
setup = [&] { disable_v8086(); };
   793 setup_check_guest_gs_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
   795     path.
setup = [&] { disable_v8086(); };
   815 setup_check_guest_tr_base_is_canonical_paths(std::vector<struct control_flow_path> &cfg)
   828 setup_check_guest_fs_base_is_canonical_paths(std::vector<struct control_flow_path> &cfg)
   841 setup_check_guest_gs_base_is_canonical_paths(std::vector<struct control_flow_path> &cfg)
   854 setup_check_guest_ldtr_base_is_canonical_paths(std::vector<struct control_flow_path> &cfg)
   875 setup_check_guest_cs_base_upper_dword_0_paths(std::vector<struct control_flow_path> &cfg)
   888 setup_check_guest_ss_base_upper_dword_0_paths(std::vector<struct control_flow_path> &cfg)
   909 setup_check_guest_ds_base_upper_dword_0_paths(std::vector<struct control_flow_path> &cfg)
   930 setup_check_guest_es_base_upper_dword_0_paths(std::vector<struct control_flow_path> &cfg)
   951 setup_check_guest_cs_limit_paths(std::vector<struct control_flow_path> &cfg)
   953     path.
setup = [&] { disable_v8086(); };
   972 setup_check_guest_ss_limit_paths(std::vector<struct control_flow_path> &cfg)
   974     path.
setup = [&] { disable_v8086(); };
   993 setup_check_guest_ds_limit_paths(std::vector<struct control_flow_path> &cfg)
   995     path.
setup = [&] { disable_v8086(); };
  1006     cfg.push_back(path);
  1010     cfg.push_back(path);
  1014 setup_check_guest_es_limit_paths(std::vector<struct control_flow_path> &cfg)
  1016     path.
setup = [&] { disable_v8086(); };
  1018     cfg.push_back(path);
  1027     cfg.push_back(path);
  1031     cfg.push_back(path);
  1035 setup_check_guest_gs_limit_paths(std::vector<struct control_flow_path> &cfg)
  1037     path.
setup = [&] { disable_v8086(); };
  1039     cfg.push_back(path);
  1048     cfg.push_back(path);
  1052     cfg.push_back(path);
  1056 setup_check_guest_fs_limit_paths(std::vector<struct control_flow_path> &cfg)
  1058     path.
setup = [&] { disable_v8086(); };
  1060     cfg.push_back(path);
  1069     cfg.push_back(path);
  1073     cfg.push_back(path);
  1077 setup_check_guest_v8086_cs_access_rights_paths(std::vector<struct control_flow_path> &cfg)
  1079     path.
setup = [&] { disable_v8086(); };
  1081     cfg.push_back(path);
  1090     cfg.push_back(path);
  1094     cfg.push_back(path);
  1098 setup_check_guest_v8086_ss_access_rights_paths(std::vector<struct control_flow_path> &cfg)
  1100     path.
setup = [&] { disable_v8086(); };
  1102     cfg.push_back(path);
  1111     cfg.push_back(path);
  1115     cfg.push_back(path);
  1119 setup_check_guest_v8086_ds_access_rights_paths(std::vector<struct control_flow_path> &cfg)
  1121     path.
setup = [&] { disable_v8086(); };
  1123     cfg.push_back(path);
  1132     cfg.push_back(path);
  1136     cfg.push_back(path);
  1140 setup_check_guest_v8086_es_access_rights_paths(std::vector<struct control_flow_path> &cfg)
  1142     path.
setup = [&] { disable_v8086(); };
  1144     cfg.push_back(path);
  1153     cfg.push_back(path);
  1157     cfg.push_back(path);
  1161 setup_check_guest_v8086_fs_access_rights_paths(std::vector<struct control_flow_path> &cfg)
  1163     path.
setup = [&] { disable_v8086(); };
  1165     cfg.push_back(path);
  1174     cfg.push_back(path);
  1178     cfg.push_back(path);
  1182 setup_check_guest_v8086_gs_access_rights_paths(std::vector<struct control_flow_path> &cfg)
  1184     path.
setup = [&] { disable_v8086(); };
  1186     cfg.push_back(path);
  1195     cfg.push_back(path);
  1199     cfg.push_back(path);
  1203 setup_check_guest_cs_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
  1205     path.
setup = [&] { enable_v8086(); };
  1207     cfg.push_back(path);
  1218     cfg.push_back(path);
  1230     cfg.push_back(path);
  1239     cfg.push_back(path);
  1244     cfg.push_back(path);
  1248 setup_check_guest_ss_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
  1250     path.
setup = [&] { enable_v8086(); };
  1252     cfg.push_back(path);
  1260     cfg.push_back(path);
  1268     cfg.push_back(path);
  1273     cfg.push_back(path);
  1277 setup_check_guest_ds_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
  1279     path.
setup = [&] { enable_v8086(); };
  1281     cfg.push_back(path);
  1289     cfg.push_back(path);
  1297     cfg.push_back(path);
  1302     cfg.push_back(path);
  1306 setup_check_guest_es_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
  1308     path.
setup = [&] { enable_v8086(); };
  1310     cfg.push_back(path);
  1318     cfg.push_back(path);
  1326     cfg.push_back(path);
  1331     cfg.push_back(path);
  1335 setup_check_guest_fs_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
  1337     path.
setup = [&] { enable_v8086(); };
  1339     cfg.push_back(path);
  1347     cfg.push_back(path);
  1355     cfg.push_back(path);
  1360     cfg.push_back(path);
  1364 setup_check_guest_gs_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
  1366     path.
setup = [&] { enable_v8086(); };
  1368     cfg.push_back(path);
  1376     cfg.push_back(path);
  1384     cfg.push_back(path);
  1389     cfg.push_back(path);
  1393 setup_check_guest_cs_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
  1395     path.
setup = [&] { enable_v8086(); };
  1397     cfg.push_back(path);
  1406     cfg.push_back(path);
  1410     cfg.push_back(path);
  1414 setup_check_guest_ss_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
  1416     path.
setup = [&] { enable_v8086(); };
  1418     cfg.push_back(path);
  1426     cfg.push_back(path);
  1435     cfg.push_back(path);
  1439     cfg.push_back(path);
  1443 setup_check_guest_ds_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
  1445     path.
setup = [&] { enable_v8086(); };
  1447     cfg.push_back(path);
  1455     cfg.push_back(path);
  1464     cfg.push_back(path);
  1468     cfg.push_back(path);
  1472 setup_check_guest_es_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
  1474     path.
setup = [&] { enable_v8086(); };
  1476     cfg.push_back(path);
  1484     cfg.push_back(path);
  1493     cfg.push_back(path);
  1497     cfg.push_back(path);
  1501 setup_check_guest_fs_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
  1503     path.
setup = [&] { enable_v8086(); };
  1505     cfg.push_back(path);
  1513     cfg.push_back(path);
  1522     cfg.push_back(path);
  1526     cfg.push_back(path);
  1530 setup_check_guest_gs_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
  1532     path.
setup = [&] { enable_v8086(); };
  1534     cfg.push_back(path);
  1542     cfg.push_back(path);
  1551     cfg.push_back(path);
  1555     cfg.push_back(path);
  1559 setup_check_guest_cs_type_not_equal_3_paths(std::vector<struct control_flow_path> &cfg)
  1561     path.
setup = [&] { enable_v8086(); };
  1563     cfg.push_back(path);
  1571     cfg.push_back(path);
  1576     cfg.push_back(path);
  1580     cfg.push_back(path);
  1584 setup_check_guest_cs_dpl_adheres_to_ss_dpl_paths(std::vector<struct control_flow_path> &cfg)
  1586     path.
setup = [&] { enable_v8086(); };
  1588     cfg.push_back(path);
  1598     cfg.push_back(path);
  1602     cfg.push_back(path);
  1607     cfg.push_back(path);
  1611     cfg.push_back(path);
  1615     cfg.push_back(path);
  1619 setup_check_guest_ss_dpl_must_equal_rpl_paths(std::vector<struct control_flow_path> &cfg)
  1621     path.
setup = [&] { enable_v8086(); };
  1623     cfg.push_back(path);
  1633     cfg.push_back(path);
  1645     cfg.push_back(path);
  1649     cfg.push_back(path);
  1653 setup_check_guest_ss_dpl_must_equal_zero_paths(std::vector<struct control_flow_path> &cfg)
  1655     path.
setup = [&] { enable_v8086(); };
  1657     cfg.push_back(path);
  1666     cfg.push_back(path);
  1675     cfg.push_back(path);
  1679 setup_check_guest_ds_dpl_paths(std::vector<struct control_flow_path> &cfg)
  1681     path.
setup = [&] { enable_v8086(); };
  1683     cfg.push_back(path);
  1694     cfg.push_back(path);
  1704     cfg.push_back(path);
  1712     cfg.push_back(path);
  1722     cfg.push_back(path);
  1726     cfg.push_back(path);
  1730 setup_check_guest_es_dpl_paths(std::vector<struct control_flow_path> &cfg)
  1732     path.
setup = [&] { enable_v8086(); };
  1734     cfg.push_back(path);
  1745     cfg.push_back(path);
  1755     cfg.push_back(path);
  1763     cfg.push_back(path);
  1773     cfg.push_back(path);
  1777     cfg.push_back(path);
  1781 setup_check_guest_fs_dpl_paths(std::vector<struct control_flow_path> &cfg)
  1783     path.
setup = [&] { enable_v8086(); };
  1785     cfg.push_back(path);
  1796     cfg.push_back(path);
  1806     cfg.push_back(path);
  1814     cfg.push_back(path);
  1824     cfg.push_back(path);
  1828     cfg.push_back(path);
  1832 setup_check_guest_gs_dpl_paths(std::vector<struct control_flow_path> &cfg)
  1834     path.
setup = [&] { enable_v8086(); };
  1836     cfg.push_back(path);
  1847     cfg.push_back(path);
  1857     cfg.push_back(path);
  1865     cfg.push_back(path);
  1875     cfg.push_back(path);
  1879     cfg.push_back(path);
  1883 setup_check_guest_cs_must_be_present_paths(std::vector<struct control_flow_path> &cfg)
  1885     path.
setup = [&] { enable_v8086(); };
  1887     cfg.push_back(path);
  1896     cfg.push_back(path);
  1900     cfg.push_back(path);
  1904 setup_check_guest_ss_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
  1906     path.
setup = [&] { enable_v8086(); };
  1908     cfg.push_back(path);
  1916     cfg.push_back(path);
  1921     cfg.push_back(path);
  1925     cfg.push_back(path);
  1929 setup_check_guest_ds_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
  1931     path.
setup = [&] { enable_v8086(); };
  1933     cfg.push_back(path);
  1941     cfg.push_back(path);
  1946     cfg.push_back(path);
  1950     cfg.push_back(path);
  1953 setup_check_guest_es_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
  1955     path.
setup = [&] { enable_v8086(); };
  1957     cfg.push_back(path);
  1965     cfg.push_back(path);
  1970     cfg.push_back(path);
  1974     cfg.push_back(path);
  1978 setup_check_guest_fs_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
  1980     path.
setup = [&] { enable_v8086(); };
  1982     cfg.push_back(path);
  1990     cfg.push_back(path);
  1995     cfg.push_back(path);
  1999     cfg.push_back(path);
  2002 setup_check_guest_gs_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
  2004     path.
setup = [&] { enable_v8086(); };
  2006     cfg.push_back(path);
  2014     cfg.push_back(path);
  2019     cfg.push_back(path);
  2023     cfg.push_back(path);
  2027 setup_check_guest_cs_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
  2029     path.
setup = [&] { enable_v8086(); };
  2031     cfg.push_back(path);
  2040     cfg.push_back(path);
  2044     cfg.push_back(path);
  2048 setup_check_guest_ss_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
  2050     path.
setup = [&] { enable_v8086(); };
  2052     cfg.push_back(path);
  2060     cfg.push_back(path);
  2069     cfg.push_back(path);
  2073     cfg.push_back(path);
  2077 setup_check_guest_ds_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
  2079     path.
setup = [&] { enable_v8086(); };
  2081     cfg.push_back(path);
  2089     cfg.push_back(path);
  2098     cfg.push_back(path);
  2102     cfg.push_back(path);
  2106 setup_check_guest_es_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
  2108     path.
setup = [&] { enable_v8086(); };
  2110     cfg.push_back(path);
  2118     cfg.push_back(path);
  2127     cfg.push_back(path);
  2131     cfg.push_back(path);
  2135 setup_check_guest_fs_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
  2137     path.
setup = [&] { enable_v8086(); };
  2139     cfg.push_back(path);
  2147     cfg.push_back(path);
  2156     cfg.push_back(path);
  2160     cfg.push_back(path);
  2164 setup_check_guest_gs_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
  2166     path.
setup = [&] { enable_v8086(); };
  2168     cfg.push_back(path);
  2176     cfg.push_back(path);
  2185     cfg.push_back(path);
  2189     cfg.push_back(path);
  2193 setup_check_guest_cs_db_must_be_0_if_l_equals_1_paths(std::vector<struct control_flow_path> &cfg)
  2195     path.
setup = [&] { enable_v8086(); };
  2197     cfg.push_back(path);
  2206     cfg.push_back(path);
  2215     cfg.push_back(path);
  2219     cfg.push_back(path);
  2224     cfg.push_back(path);
  2228 setup_check_guest_cs_granularity_paths(std::vector<struct control_flow_path> &cfg)
  2230     path.
setup = [&] { enable_v8086(); };
  2232     cfg.push_back(path);
  2242     cfg.push_back(path);
  2246     cfg.push_back(path);
  2251     cfg.push_back(path);
  2255 setup_check_guest_ss_granularity_paths(std::vector<struct control_flow_path> &cfg)
  2257     path.
setup = [&] { enable_v8086(); };
  2259     cfg.push_back(path);
  2267     cfg.push_back(path);
  2277     cfg.push_back(path);
  2281     cfg.push_back(path);
  2286     cfg.push_back(path);
  2290 setup_check_guest_ds_granularity_paths(std::vector<struct control_flow_path> &cfg)
  2292     path.
setup = [&] { enable_v8086(); };
  2294     cfg.push_back(path);
  2302     cfg.push_back(path);
  2312     cfg.push_back(path);
  2316     cfg.push_back(path);
  2321     cfg.push_back(path);
  2325 setup_check_guest_es_granularity_paths(std::vector<struct control_flow_path> &cfg)
  2327     path.
setup = [&] { enable_v8086(); };
  2329     cfg.push_back(path);
  2337     cfg.push_back(path);
  2347     cfg.push_back(path);
  2351     cfg.push_back(path);
  2356     cfg.push_back(path);
  2360 setup_check_guest_fs_granularity_paths(std::vector<struct control_flow_path> &cfg)
  2362     path.
setup = [&] { enable_v8086(); };
  2364     cfg.push_back(path);
  2372     cfg.push_back(path);
  2382     cfg.push_back(path);
  2386     cfg.push_back(path);
  2391     cfg.push_back(path);
  2395 setup_check_guest_gs_granularity_paths(std::vector<struct control_flow_path> &cfg)
  2397     path.
setup = [&] { enable_v8086(); };
  2399     cfg.push_back(path);
  2407     cfg.push_back(path);
  2417     cfg.push_back(path);
  2421     cfg.push_back(path);
  2426     cfg.push_back(path);
  2430 setup_check_guest_cs_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
  2432     path.
setup = [&] { enable_v8086(); };
  2434     cfg.push_back(path);
  2443     cfg.push_back(path);
  2447     cfg.push_back(path);
  2451 setup_check_guest_ss_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
  2453     path.
setup = [&] { enable_v8086(); };
  2455     cfg.push_back(path);
  2463     cfg.push_back(path);
  2472     cfg.push_back(path);
  2476     cfg.push_back(path);
  2480 setup_check_guest_ds_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
  2482     path.
setup = [&] { enable_v8086(); };
  2484     cfg.push_back(path);
  2492     cfg.push_back(path);
  2501     cfg.push_back(path);
  2505     cfg.push_back(path);
  2509 setup_check_guest_es_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
  2511     path.
setup = [&] { enable_v8086(); };
  2513     cfg.push_back(path);
  2521     cfg.push_back(path);
  2530     cfg.push_back(path);
  2534     cfg.push_back(path);
  2538 setup_check_guest_fs_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
  2540     path.
setup = [&] { enable_v8086(); };
  2542     cfg.push_back(path);
  2550     cfg.push_back(path);
  2559     cfg.push_back(path);
  2563     cfg.push_back(path);
  2567 setup_check_guest_gs_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
  2569     path.
setup = [&] { enable_v8086(); };
  2571     cfg.push_back(path);
  2579     cfg.push_back(path);
  2588     cfg.push_back(path);
  2592     cfg.push_back(path);
  2596 setup_check_guest_tr_type_must_be_11_paths(std::vector<struct control_flow_path> &cfg)
  2606     cfg.push_back(path);
  2614     cfg.push_back(path);
  2618     cfg.push_back(path);
  2623     cfg.push_back(path);
  2627 setup_check_guest_tr_must_be_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
  2632     cfg.push_back(path);
  2636     cfg.push_back(path);
  2640 setup_check_guest_tr_must_be_present_paths(std::vector<struct control_flow_path> &cfg)
  2645     cfg.push_back(path);
  2649     cfg.push_back(path);
  2653 setup_check_guest_tr_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
  2658     cfg.push_back(path);
  2662     cfg.push_back(path);
  2666 setup_check_guest_tr_granularity_paths(std::vector<struct control_flow_path> &cfg)
  2668     path.
setup = [&] { enable_v8086(); };
  2670     cfg.push_back(path);
  2678     cfg.push_back(path);
  2688     cfg.push_back(path);
  2692     cfg.push_back(path);
  2697     cfg.push_back(path);
  2701 setup_check_guest_tr_must_be_usable_paths(std::vector<struct control_flow_path> &cfg)
  2706     cfg.push_back(path);
  2710     cfg.push_back(path);
  2714 setup_check_guest_tr_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
  2719     cfg.push_back(path);
  2723     cfg.push_back(path);
  2727 setup_check_guest_ldtr_type_must_be_2_paths(std::vector<struct control_flow_path> &cfg)
  2731     cfg.push_back(path);
  2740     cfg.push_back(path);
  2744     cfg.push_back(path);
  2748 setup_check_guest_ldtr_must_be_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
  2752     cfg.push_back(path);
  2761     cfg.push_back(path);
  2765     cfg.push_back(path);
  2769 setup_check_guest_ldtr_must_be_present_paths(std::vector<struct control_flow_path> &cfg)
  2773     cfg.push_back(path);
  2782     cfg.push_back(path);
  2786     cfg.push_back(path);
  2790 setup_check_guest_ldtr_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
  2794     cfg.push_back(path);
  2803     cfg.push_back(path);
  2807     cfg.push_back(path);
  2811 setup_check_guest_ldtr_granularity_paths(std::vector<struct control_flow_path> &cfg)
  2813     path.
setup = [&] { enable_v8086(); };
  2815     cfg.push_back(path);
  2823     cfg.push_back(path);
  2833     cfg.push_back(path);
  2837     cfg.push_back(path);
  2842     cfg.push_back(path);
  2846 setup_check_guest_ldtr_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
  2850     cfg.push_back(path);
  2859     cfg.push_back(path);
  2863     cfg.push_back(path);
  2867 setup_check_guest_gdtr_base_must_be_canonical_paths(std::vector<struct control_flow_path> &cfg)
  2872     cfg.push_back(path);
  2876     cfg.push_back(path);
  2880 setup_check_guest_idtr_base_must_be_canonical_paths(std::vector<struct control_flow_path> &cfg)
  2885     cfg.push_back(path);
  2889     cfg.push_back(path);
  2893 setup_check_guest_gdtr_limit_reserved_bits_paths(std::vector<struct control_flow_path> &cfg)
  2898     cfg.push_back(path);
  2902     cfg.push_back(path);
  2906 setup_check_guest_idtr_limit_reserved_bits_paths(std::vector<struct control_flow_path> &cfg)
  2911     cfg.push_back(path);
  2915     cfg.push_back(path);
  2919 setup_check_guest_rip_upper_bits_paths(std::vector<struct control_flow_path> &cfg)
  2928     cfg.push_back(path);
  2938     cfg.push_back(path);
  2942     cfg.push_back(path);
  2946 setup_check_guest_rip_valid_addr_paths(std::vector<struct control_flow_path> &cfg)
  2954     cfg.push_back(path);
  2963     cfg.push_back(path);
  2972     cfg.push_back(path);
  2976     cfg.push_back(path);
  2980 setup_check_guest_rflags_reserved_bits_paths(std::vector<struct control_flow_path> &cfg)
  2985     cfg.push_back(path);
  2990     cfg.push_back(path);
  2994     cfg.push_back(path);
  2998 setup_check_guest_rflags_vm_bit_paths(std::vector<struct control_flow_path> &cfg)
  3007     cfg.push_back(path);
  3016     cfg.push_back(path);
  3020     cfg.push_back(path);
  3024 setup_check_guest_rflag_interrupt_enable_paths(std::vector<struct control_flow_path> &cfg)
  3026     using namespace vm_entry_interruption_information_field;
  3030     cfg.push_back(path);
  3038     cfg.push_back(path);
  3047     cfg.push_back(path);
  3051     cfg.push_back(path);
  3055 setup_check_guest_valid_activity_state_paths(std::vector<struct control_flow_path> &cfg)
  3060     cfg.push_back(path);
  3064     cfg.push_back(path);
  3068 setup_check_guest_activity_state_not_hlt_when_dpl_not_0_paths(std::vector<struct control_flow_path> &cfg)
  3072     cfg.push_back(path);
  3081     cfg.push_back(path);
  3085     cfg.push_back(path);
  3089 setup_check_guest_must_be_active_if_injecting_blocking_state_paths(std::vector<struct control_flow_path> &cfg)
  3093     cfg.push_back(path);
  3102     cfg.push_back(path);
  3111     cfg.push_back(path);
  3115     cfg.push_back(path);
  3119 setup_check_guest_hlt_valid_interrupts_paths(std::vector<struct control_flow_path> &cfg)
  3121     using namespace vm_entry_interruption_information_field;
  3125     cfg.push_back(path);
  3133     cfg.push_back(path);
  3141     cfg.push_back(path);
  3149     cfg.push_back(path);
  3153     cfg.push_back(path);
  3158     cfg.push_back(path);
  3166     cfg.push_back(path);
  3171     cfg.push_back(path);
  3176     cfg.push_back(path);
  3180 setup_check_guest_shutdown_valid_interrupts_paths(std::vector<struct control_flow_path> &cfg)
  3182     using namespace vm_entry_interruption_information_field;
  3186     cfg.push_back(path);
  3194     cfg.push_back(path);
  3202     cfg.push_back(path);
  3210     cfg.push_back(path);
  3215     cfg.push_back(path);
  3220     cfg.push_back(path);
  3224 setup_check_guest_sipi_valid_interrupts_paths(std::vector<struct control_flow_path> &cfg)
  3226     using namespace vm_entry_interruption_information_field;
  3230     cfg.push_back(path);
  3238     cfg.push_back(path);
  3243     cfg.push_back(path);
  3247 setup_check_guest_valid_activity_state_and_smm_paths(std::vector<struct control_flow_path> &cfg)
  3255     cfg.push_back(path);
  3264     cfg.push_back(path);
  3269     cfg.push_back(path);
  3273 setup_check_guest_interruptibility_state_reserved_paths(std::vector<struct control_flow_path> &cfg)
  3278     cfg.push_back(path);
  3282     cfg.push_back(path);
  3286 setup_check_guest_interruptibility_state_sti_mov_ss_paths(std::vector<struct control_flow_path> &cfg)
  3290     cfg.push_back(path);
  3299     cfg.push_back(path);
  3303 setup_check_guest_interruptibility_state_sti_paths(std::vector<struct control_flow_path> &cfg)
  3307     cfg.push_back(path);
  3316     cfg.push_back(path);
  3320     cfg.push_back(path);
  3324 setup_check_guest_interruptibility_state_external_interrupt_paths(std::vector<struct control_flow_path> &cfg)
  3326     using namespace vm_entry_interruption_information_field;
  3330     cfg.push_back(path);
  3338     cfg.push_back(path);
  3347     cfg.push_back(path);
  3356     cfg.push_back(path);
  3360     cfg.push_back(path);
  3364 setup_check_guest_interruptibility_state_nmi_paths(std::vector<struct control_flow_path> &cfg)
  3366     using namespace vm_entry_interruption_information_field;
  3370     cfg.push_back(path);
  3378     cfg.push_back(path);
  3387     cfg.push_back(path);
  3391     cfg.push_back(path);
  3395 setup_check_guest_interruptibility_not_in_smm_paths(std::vector<struct control_flow_path> &cfg)
  3401 setup_check_guest_interruptibility_entry_to_smm_paths(std::vector<struct control_flow_path> &cfg)
  3409     cfg.push_back(path);
  3419     cfg.push_back(path);
  3423     cfg.push_back(path);
  3427 setup_check_guest_interruptibility_state_sti_and_nmi_paths(std::vector<struct control_flow_path> &cfg)
  3429     using namespace vm_entry_interruption_information_field;
  3433     cfg.push_back(path);
  3441     cfg.push_back(path);
  3450     cfg.push_back(path);
  3454     cfg.push_back(path);
  3458 setup_check_guest_interruptibility_state_virtual_nmi_paths(std::vector<struct control_flow_path> &cfg)
  3460     using namespace vm_entry_interruption_information_field;
  3468     cfg.push_back(path);
  3477     cfg.push_back(path);
  3485     cfg.push_back(path);
  3494     cfg.push_back(path);
  3498     cfg.push_back(path);
  3502 setup_check_guest_interruptibility_state_enclave_interrupt_paths(std::vector<struct control_flow_path> &cfg)
  3506     cfg.push_back(path);
  3515     cfg.push_back(path);
  3524     cfg.push_back(path);
  3528     cfg.push_back(path);
  3532 setup_check_guest_pending_debug_exceptions_reserved_paths(std::vector<struct control_flow_path> &cfg)
  3537     cfg.push_back(path);
  3541     cfg.push_back(path);
  3545 setup_check_guest_pending_debug_exceptions_dbg_ctl_paths(std::vector<struct control_flow_path> &cfg)
  3553     cfg.push_back(path);
  3564     cfg.push_back(path);
  3574     cfg.push_back(path);
  3578     cfg.push_back(path);
  3582 setup_check_guest_pending_debug_exceptions_rtm_paths(std::vector<struct control_flow_path> &cfg)
  3586     cfg.push_back(path);
  3595     cfg.push_back(path);
  3608     cfg.push_back(path);
  3617     cfg.push_back(path);
  3626     cfg.push_back(path);
  3630     cfg.push_back(path);
  3634 setup_check_guest_vmcs_link_pointer_bits_11_0_paths(std::vector<struct control_flow_path> &cfg)
  3638     cfg.push_back(path);
  3643     cfg.push_back(path);
  3647     cfg.push_back(path);
  3651 setup_check_guest_vmcs_link_pointer_valid_addr_paths(std::vector<struct control_flow_path> &cfg)
  3655     cfg.push_back(path);
  3660     cfg.push_back(path);
  3664     cfg.push_back(path);
  3668 setup_check_guest_vmcs_link_pointer_first_word_paths(std::vector<struct control_flow_path> &cfg)
  3672     cfg.push_back(path);
  3681     cfg.push_back(path);
  3691     cfg.push_back(path);
  3700     cfg.push_back(path);
  3710     cfg.push_back(path);
  3719     cfg.push_back(path);
  3723     cfg.push_back(path);
  3727 setup_check_guest_valid_pdpte_with_ept_disabled_paths(std::vector<struct control_flow_path> &cfg)
  3731     cfg.push_back(path);
  3739     cfg.push_back(path);
  3748     cfg.push_back(path);
  3760     cfg.push_back(path);
  3771     cfg.push_back(path);
  3782     cfg.push_back(path);
  3791     cfg.push_back(path);
  3800     cfg.push_back(path);
  3809     cfg.push_back(path);
  3813     cfg.push_back(path);
  3817 setup_check_guest_valid_pdpte_with_ept_enabled_paths(std::vector<struct control_flow_path> &cfg)
  3821     cfg.push_back(path);
  3829     cfg.push_back(path);
  3838     cfg.push_back(path);
  3848     cfg.push_back(path);
  3858     cfg.push_back(path);
  3869     cfg.push_back(path);
  3878     cfg.push_back(path);
  3887     cfg.push_back(path);
  3896     cfg.push_back(path);
  3900     cfg.push_back(path);
  3904 vmcs_ut::test_check_guest_state_all()
  3906     std::vector<struct control_flow_path> cfg;
  3913 vmcs_ut::test_check_guest_control_registers_debug_registers_and_msrs_all()
  3915     std::vector<struct control_flow_path> cfg;
  3916     setup_check_guest_control_registers_debug_registers_and_msrs_all_paths(cfg);
  3922 vmcs_ut::test_check_guest_segment_registers_all()
  3924     std::vector<struct control_flow_path> cfg;
  3925     setup_check_guest_segment_registers_all_paths(cfg);
  3931 vmcs_ut::test_check_guest_descriptor_table_registers_all()
  3933     std::vector<struct control_flow_path> cfg;
  3934     setup_check_guest_descriptor_table_registers_all_paths(cfg);
  3940 vmcs_ut::test_check_guest_rip_and_rflags_all()
  3942     std::vector<struct control_flow_path> cfg;
  3943     setup_check_guest_rip_and_rflags_all_paths(cfg);
  3949 vmcs_ut::test_check_guest_non_register_state_all()
  3951     std::vector<struct control_flow_path> cfg;
  3952     setup_check_guest_non_register_state_all_paths(cfg);
  3958 vmcs_ut::test_check_guest_pdptes_all()
  3960     std::vector<struct control_flow_path> cfg;
  3961     setup_check_guest_pdptes_all_paths(cfg);
  3967 vmcs_ut::test_check_guest_cr0_for_unsupported_bits()
  3969     std::vector<struct control_flow_path> cfg;
  3970     setup_check_guest_cr0_for_unsupported_bits_paths(cfg);
  3976 vmcs_ut::test_check_guest_cr0_verify_paging_enabled()
  3978     std::vector<struct control_flow_path> cfg;
  3979     setup_check_guest_cr0_verify_paging_enabled_paths(cfg);
  3985 vmcs_ut::test_check_guest_cr4_for_unsupported_bits()
  3987     std::vector<struct control_flow_path> cfg;
  3988     setup_check_guest_cr4_for_unsupported_bits_paths(cfg);
  3994 vmcs_ut::test_check_guest_load_debug_controls_verify_reserved()
  3997     std::vector<struct control_flow_path> cfg;
  3998     setup_check_guest_load_debug_controls_verify_reserved_paths(cfg);
  4004 vmcs_ut::test_check_guest_verify_ia_32e_mode_enabled()
  4006     std::vector<struct control_flow_path> cfg;
  4007     setup_check_guest_verify_ia_32e_mode_enabled_paths(cfg);
  4013 vmcs_ut::test_check_guest_verify_ia_32e_mode_disabled()
  4015     std::vector<struct control_flow_path> cfg;
  4016     setup_check_guest_verify_ia_32e_mode_disabled_paths(cfg);
  4022 vmcs_ut::test_check_guest_cr3_for_unsupported_bits()
  4024     std::vector<struct control_flow_path> cfg;
  4025     setup_check_guest_cr3_for_unsupported_bits_paths(cfg);
  4031 vmcs_ut::test_check_guest_load_debug_controls_verify_dr7()
  4033     std::vector<struct control_flow_path> cfg;
  4034     setup_check_guest_load_debug_controls_verify_dr7_paths(cfg);
  4040 vmcs_ut::test_check_guest_ia32_sysenter_esp_canonical_address()
  4042     std::vector<struct control_flow_path> cfg;
  4043     setup_check_guest_ia32_sysenter_esp_canonical_address_paths(cfg);
  4049 vmcs_ut::test_check_guest_ia32_sysenter_eip_canonical_address()
  4051     std::vector<struct control_flow_path> cfg;
  4052     setup_check_guest_ia32_sysenter_eip_canonical_address_paths(cfg);
  4058 vmcs_ut::test_check_guest_verify_load_ia32_perf_global_ctrl()
  4060     std::vector<struct control_flow_path> cfg;
  4061     setup_check_guest_verify_load_ia32_perf_global_ctrl_paths(cfg);
  4067 vmcs_ut::test_check_guest_verify_load_ia32_pat()
  4069     std::vector<struct control_flow_path> cfg;
  4070     setup_check_guest_verify_load_ia32_pat_paths(cfg);
  4076 vmcs_ut::test_check_guest_verify_load_ia32_efer()
  4078     std::vector<struct control_flow_path> cfg;
  4079     setup_check_guest_verify_load_ia32_efer_paths(cfg);
  4085 vmcs_ut::test_check_guest_verify_load_ia32_bndcfgs()
  4087     std::vector<struct control_flow_path> cfg;
  4088     setup_check_guest_verify_load_ia32_bndcfgs_paths(cfg);
  4094 vmcs_ut::test_check_guest_tr_ti_bit_equals_0()
  4096     std::vector<struct control_flow_path> cfg;
  4097     setup_check_guest_tr_ti_bit_equals_0_paths(cfg);
  4103 vmcs_ut::test_check_guest_ldtr_ti_bit_equals_0()
  4105     std::vector<struct control_flow_path> cfg;
  4106     setup_check_guest_ldtr_ti_bit_equals_0_paths(cfg);
  4112 vmcs_ut::test_check_guest_ss_and_cs_rpl_are_the_same()
  4114     std::vector<struct control_flow_path> cfg;
  4115     setup_check_guest_ss_and_cs_rpl_are_the_same_paths(cfg);
  4121 vmcs_ut::test_check_guest_cs_base_is_shifted()
  4123     std::vector<struct control_flow_path> cfg;
  4124     setup_check_guest_cs_base_is_shifted_paths(cfg);
  4130 vmcs_ut::test_check_guest_ss_base_is_shifted()
  4132     std::vector<struct control_flow_path> cfg;
  4133     setup_check_guest_ss_base_is_shifted_paths(cfg);
  4139 vmcs_ut::test_check_guest_ds_base_is_shifted()
  4141     std::vector<struct control_flow_path> cfg;
  4142     setup_check_guest_ds_base_is_shifted_paths(cfg);
  4148 vmcs_ut::test_check_guest_es_base_is_shifted()
  4150     std::vector<struct control_flow_path> cfg;
  4151     setup_check_guest_es_base_is_shifted_paths(cfg);
  4157 vmcs_ut::test_check_guest_fs_base_is_shifted()
  4159     std::vector<struct control_flow_path> cfg;
  4160     setup_check_guest_fs_base_is_shifted_paths(cfg);
  4166 vmcs_ut::test_check_guest_gs_base_is_shifted()
  4168     std::vector<struct control_flow_path> cfg;
  4169     setup_check_guest_gs_base_is_shifted_paths(cfg);
  4175 vmcs_ut::test_check_guest_tr_base_is_canonical()
  4177     std::vector<struct control_flow_path> cfg;
  4178     setup_check_guest_tr_base_is_canonical_paths(cfg);
  4184 vmcs_ut::test_check_guest_fs_base_is_canonical()
  4186     std::vector<struct control_flow_path> cfg;
  4187     setup_check_guest_fs_base_is_canonical_paths(cfg);
  4193 vmcs_ut::test_check_guest_gs_base_is_canonical()
  4195     std::vector<struct control_flow_path> cfg;
  4196     setup_check_guest_gs_base_is_canonical_paths(cfg);
  4202 vmcs_ut::test_check_guest_ldtr_base_is_canonical()
  4204     std::vector<struct control_flow_path> cfg;
  4205     setup_check_guest_ldtr_base_is_canonical_paths(cfg);
  4211 vmcs_ut::test_check_guest_cs_base_upper_dword_0()
  4213     std::vector<struct control_flow_path> cfg;
  4214     setup_check_guest_cs_base_upper_dword_0_paths(cfg);
  4220 vmcs_ut::test_check_guest_ss_base_upper_dword_0()
  4222     std::vector<struct control_flow_path> cfg;
  4223     setup_check_guest_ss_base_upper_dword_0_paths(cfg);
  4229 vmcs_ut::test_check_guest_ds_base_upper_dword_0()
  4231     std::vector<struct control_flow_path> cfg;
  4232     setup_check_guest_ds_base_upper_dword_0_paths(cfg);
  4238 vmcs_ut::test_check_guest_es_base_upper_dword_0()
  4240     std::vector<struct control_flow_path> cfg;
  4241     setup_check_guest_es_base_upper_dword_0_paths(cfg);
  4247 vmcs_ut::test_check_guest_cs_limit()
  4249     std::vector<struct control_flow_path> cfg;
  4250     setup_check_guest_cs_limit_paths(cfg);
  4256 vmcs_ut::test_check_guest_ss_limit()
  4258     std::vector<struct control_flow_path> cfg;
  4259     setup_check_guest_ss_limit_paths(cfg);
  4265 vmcs_ut::test_check_guest_ds_limit()
  4267     std::vector<struct control_flow_path> cfg;
  4268     setup_check_guest_ds_limit_paths(cfg);
  4274 vmcs_ut::test_check_guest_es_limit()
  4276     std::vector<struct control_flow_path> cfg;
  4277     setup_check_guest_es_limit_paths(cfg);
  4283 vmcs_ut::test_check_guest_gs_limit()
  4285     std::vector<struct control_flow_path> cfg;
  4286     setup_check_guest_gs_limit_paths(cfg);
  4292 vmcs_ut::test_check_guest_fs_limit()
  4294     std::vector<struct control_flow_path> cfg;
  4295     setup_check_guest_fs_limit_paths(cfg);
  4301 vmcs_ut::test_check_guest_v8086_cs_access_rights()
  4303     std::vector<struct control_flow_path> cfg;
  4304     setup_check_guest_v8086_cs_access_rights_paths(cfg);
  4310 vmcs_ut::test_check_guest_v8086_ss_access_rights()
  4312     std::vector<struct control_flow_path> cfg;
  4313     setup_check_guest_v8086_ss_access_rights_paths(cfg);
  4319 vmcs_ut::test_check_guest_v8086_ds_access_rights()
  4321     std::vector<struct control_flow_path> cfg;
  4322     setup_check_guest_v8086_ds_access_rights_paths(cfg);
  4328 vmcs_ut::test_check_guest_v8086_es_access_rights()
  4330     std::vector<struct control_flow_path> cfg;
  4331     setup_check_guest_v8086_es_access_rights_paths(cfg);
  4337 vmcs_ut::test_check_guest_v8086_fs_access_rights()
  4339     std::vector<struct control_flow_path> cfg;
  4340     setup_check_guest_v8086_fs_access_rights_paths(cfg);
  4346 vmcs_ut::test_check_guest_v8086_gs_access_rights()
  4348     std::vector<struct control_flow_path> cfg;
  4349     setup_check_guest_v8086_gs_access_rights_paths(cfg);
  4356 vmcs_ut::test_check_guest_cs_access_rights_type()
  4358     std::vector<struct control_flow_path> cfg;
  4359     setup_check_guest_cs_access_rights_type_paths(cfg);
  4365 vmcs_ut::test_check_guest_ss_access_rights_type()
  4367     std::vector<struct control_flow_path> cfg;
  4368     setup_check_guest_ss_access_rights_type_paths(cfg);
  4374 vmcs_ut::test_check_guest_ds_access_rights_type()
  4376     std::vector<struct control_flow_path> cfg;
  4377     setup_check_guest_ds_access_rights_type_paths(cfg);
  4383 vmcs_ut::test_check_guest_es_access_rights_type()
  4385     std::vector<struct control_flow_path> cfg;
  4386     setup_check_guest_es_access_rights_type_paths(cfg);
  4392 vmcs_ut::test_check_guest_fs_access_rights_type()
  4394     std::vector<struct control_flow_path> cfg;
  4395     setup_check_guest_fs_access_rights_type_paths(cfg);
  4401 vmcs_ut::test_check_guest_gs_access_rights_type()
  4403     std::vector<struct control_flow_path> cfg;
  4404     setup_check_guest_gs_access_rights_type_paths(cfg);
  4410 vmcs_ut::test_check_guest_cs_is_not_a_system_descriptor()
  4412     std::vector<struct control_flow_path> cfg;
  4413     setup_check_guest_cs_is_not_a_system_descriptor_paths(cfg);
  4419 vmcs_ut::test_check_guest_ss_is_not_a_system_descriptor()
  4421     std::vector<struct control_flow_path> cfg;
  4422     setup_check_guest_ss_is_not_a_system_descriptor_paths(cfg);
  4428 vmcs_ut::test_check_guest_ds_is_not_a_system_descriptor()
  4430     std::vector<struct control_flow_path> cfg;
  4431     setup_check_guest_ds_is_not_a_system_descriptor_paths(cfg);
  4437 vmcs_ut::test_check_guest_es_is_not_a_system_descriptor()
  4439     std::vector<struct control_flow_path> cfg;
  4440     setup_check_guest_es_is_not_a_system_descriptor_paths(cfg);
  4446 vmcs_ut::test_check_guest_fs_is_not_a_system_descriptor()
  4448     std::vector<struct control_flow_path> cfg;
  4449     setup_check_guest_fs_is_not_a_system_descriptor_paths(cfg);
  4455 vmcs_ut::test_check_guest_gs_is_not_a_system_descriptor()
  4457     std::vector<struct control_flow_path> cfg;
  4458     setup_check_guest_gs_is_not_a_system_descriptor_paths(cfg);
  4464 vmcs_ut::test_check_guest_cs_type_not_equal_3()
  4466     std::vector<struct control_flow_path> cfg;
  4467     setup_check_guest_cs_type_not_equal_3_paths(cfg);
  4473 vmcs_ut::test_check_guest_cs_dpl_adheres_to_ss_dpl()
  4475     std::vector<struct control_flow_path> cfg;
  4476     setup_check_guest_cs_dpl_adheres_to_ss_dpl_paths(cfg);
  4482 vmcs_ut::test_check_guest_ss_dpl_must_equal_rpl()
  4484     std::vector<struct control_flow_path> cfg;
  4485     setup_check_guest_ss_dpl_must_equal_rpl_paths(cfg);
  4491 vmcs_ut::test_check_guest_ss_dpl_must_equal_zero()
  4493     std::vector<struct control_flow_path> cfg;
  4494     setup_check_guest_ss_dpl_must_equal_zero_paths(cfg);
  4500 vmcs_ut::test_check_guest_ds_dpl()
  4502     std::vector<struct control_flow_path> cfg;
  4503     setup_check_guest_ds_dpl_paths(cfg);
  4509 vmcs_ut::test_check_guest_es_dpl()
  4511     std::vector<struct control_flow_path> cfg;
  4512     setup_check_guest_es_dpl_paths(cfg);
  4518 vmcs_ut::test_check_guest_fs_dpl()
  4520     std::vector<struct control_flow_path> cfg;
  4521     setup_check_guest_fs_dpl_paths(cfg);
  4527 vmcs_ut::test_check_guest_gs_dpl()
  4529     std::vector<struct control_flow_path> cfg;
  4530     setup_check_guest_gs_dpl_paths(cfg);
  4536 vmcs_ut::test_check_guest_cs_must_be_present()
  4538     std::vector<struct control_flow_path> cfg;
  4539     setup_check_guest_cs_must_be_present_paths(cfg);
  4545 vmcs_ut::test_check_guest_ss_must_be_present_if_usable()
  4547     std::vector<struct control_flow_path> cfg;
  4548     setup_check_guest_ss_must_be_present_if_usable_paths(cfg);
  4554 vmcs_ut::test_check_guest_ds_must_be_present_if_usable()
  4556     std::vector<struct control_flow_path> cfg;
  4557     setup_check_guest_ds_must_be_present_if_usable_paths(cfg);
  4563 vmcs_ut::test_check_guest_es_must_be_present_if_usable()
  4565     std::vector<struct control_flow_path> cfg;
  4566     setup_check_guest_es_must_be_present_if_usable_paths(cfg);
  4572 vmcs_ut::test_check_guest_fs_must_be_present_if_usable()
  4574     std::vector<struct control_flow_path> cfg;
  4575     setup_check_guest_fs_must_be_present_if_usable_paths(cfg);
  4581 vmcs_ut::test_check_guest_gs_must_be_present_if_usable()
  4583     std::vector<struct control_flow_path> cfg;
  4584     setup_check_guest_gs_must_be_present_if_usable_paths(cfg);
  4590 vmcs_ut::test_check_guest_cs_access_rights_reserved_must_be_0()
  4592     std::vector<struct control_flow_path> cfg;
  4593     setup_check_guest_cs_access_rights_reserved_must_be_0_paths(cfg);
  4599 vmcs_ut::test_check_guest_ss_access_rights_reserved_must_be_0()
  4601     std::vector<struct control_flow_path> cfg;
  4602     setup_check_guest_ss_access_rights_reserved_must_be_0_paths(cfg);
  4608 vmcs_ut::test_check_guest_ds_access_rights_reserved_must_be_0()
  4610     std::vector<struct control_flow_path> cfg;
  4611     setup_check_guest_ds_access_rights_reserved_must_be_0_paths(cfg);
  4617 vmcs_ut::test_check_guest_es_access_rights_reserved_must_be_0()
  4619     std::vector<struct control_flow_path> cfg;
  4620     setup_check_guest_es_access_rights_reserved_must_be_0_paths(cfg);
  4626 vmcs_ut::test_check_guest_fs_access_rights_reserved_must_be_0()
  4628     std::vector<struct control_flow_path> cfg;
  4629     setup_check_guest_fs_access_rights_reserved_must_be_0_paths(cfg);
  4635 vmcs_ut::test_check_guest_gs_access_rights_reserved_must_be_0()
  4637     std::vector<struct control_flow_path> cfg;
  4638     setup_check_guest_gs_access_rights_reserved_must_be_0_paths(cfg);
  4644 vmcs_ut::test_check_guest_cs_db_must_be_0_if_l_equals_1()
  4646     std::vector<struct control_flow_path> cfg;
  4647     setup_check_guest_cs_db_must_be_0_if_l_equals_1_paths(cfg);
  4653 vmcs_ut::test_check_guest_cs_granularity()
  4655     std::vector<struct control_flow_path> cfg;
  4656     setup_check_guest_cs_granularity_paths(cfg);
  4662 vmcs_ut::test_check_guest_ss_granularity()
  4664     std::vector<struct control_flow_path> cfg;
  4665     setup_check_guest_ss_granularity_paths(cfg);
  4671 vmcs_ut::test_check_guest_ds_granularity()
  4673     std::vector<struct control_flow_path> cfg;
  4674     setup_check_guest_ds_granularity_paths(cfg);
  4680 vmcs_ut::test_check_guest_es_granularity()
  4682     std::vector<struct control_flow_path> cfg;
  4683     setup_check_guest_es_granularity_paths(cfg);
  4689 vmcs_ut::test_check_guest_fs_granularity()
  4691     std::vector<struct control_flow_path> cfg;
  4692     setup_check_guest_fs_granularity_paths(cfg);
  4698 vmcs_ut::test_check_guest_gs_granularity()
  4700     std::vector<struct control_flow_path> cfg;
  4701     setup_check_guest_gs_granularity_paths(cfg);
  4707 vmcs_ut::test_check_guest_cs_access_rights_remaining_reserved_bit_0()
  4709     std::vector<struct control_flow_path> cfg;
  4710     setup_check_guest_cs_access_rights_remaining_reserved_bit_0_paths(cfg);
  4716 vmcs_ut::test_check_guest_ss_access_rights_remaining_reserved_bit_0()
  4718     std::vector<struct control_flow_path> cfg;
  4719     setup_check_guest_ss_access_rights_remaining_reserved_bit_0_paths(cfg);
  4725 vmcs_ut::test_check_guest_ds_access_rights_remaining_reserved_bit_0()
  4727     std::vector<struct control_flow_path> cfg;
  4728     setup_check_guest_ds_access_rights_remaining_reserved_bit_0_paths(cfg);
  4734 vmcs_ut::test_check_guest_es_access_rights_remaining_reserved_bit_0()
  4736     std::vector<struct control_flow_path> cfg;
  4737     setup_check_guest_es_access_rights_remaining_reserved_bit_0_paths(cfg);
  4743 vmcs_ut::test_check_guest_fs_access_rights_remaining_reserved_bit_0()
  4745     std::vector<struct control_flow_path> cfg;
  4746     setup_check_guest_fs_access_rights_remaining_reserved_bit_0_paths(cfg);
  4752 vmcs_ut::test_check_guest_gs_access_rights_remaining_reserved_bit_0()
  4754     std::vector<struct control_flow_path> cfg;
  4755     setup_check_guest_gs_access_rights_remaining_reserved_bit_0_paths(cfg);
  4761 vmcs_ut::test_check_guest_tr_type_must_be_11()
  4763     std::vector<struct control_flow_path> cfg;
  4764     setup_check_guest_tr_type_must_be_11_paths(cfg);
  4770 vmcs_ut::test_check_guest_tr_must_be_a_system_descriptor()
  4772     std::vector<struct control_flow_path> cfg;
  4773     setup_check_guest_tr_must_be_a_system_descriptor_paths(cfg);
  4779 vmcs_ut::test_check_guest_tr_must_be_present()
  4781     std::vector<struct control_flow_path> cfg;
  4782     setup_check_guest_tr_must_be_present_paths(cfg);
  4788 vmcs_ut::test_check_guest_tr_access_rights_reserved_must_be_0()
  4790     std::vector<struct control_flow_path> cfg;
  4791     setup_check_guest_tr_access_rights_reserved_must_be_0_paths(cfg);
  4797 vmcs_ut::test_check_guest_tr_granularity()
  4799     std::vector<struct control_flow_path> cfg;
  4800     setup_check_guest_tr_granularity_paths(cfg);
  4806 vmcs_ut::test_check_guest_tr_must_be_usable()
  4808     std::vector<struct control_flow_path> cfg;
  4809     setup_check_guest_tr_must_be_usable_paths(cfg);
  4815 vmcs_ut::test_check_guest_tr_access_rights_remaining_reserved_bit_0()
  4817     std::vector<struct control_flow_path> cfg;
  4818     setup_check_guest_tr_access_rights_remaining_reserved_bit_0_paths(cfg);
  4824 vmcs_ut::test_check_guest_ldtr_type_must_be_2()
  4826     std::vector<struct control_flow_path> cfg;
  4827     setup_check_guest_ldtr_type_must_be_2_paths(cfg);
  4833 vmcs_ut::test_check_guest_ldtr_must_be_a_system_descriptor()
  4835     std::vector<struct control_flow_path> cfg;
  4836     setup_check_guest_ldtr_must_be_a_system_descriptor_paths(cfg);
  4842 vmcs_ut::test_check_guest_ldtr_must_be_present()
  4844     std::vector<struct control_flow_path> cfg;
  4845     setup_check_guest_ldtr_must_be_present_paths(cfg);
  4851 vmcs_ut::test_check_guest_ldtr_access_rights_reserved_must_be_0()
  4853     std::vector<struct control_flow_path> cfg;
  4854     setup_check_guest_ldtr_access_rights_reserved_must_be_0_paths(cfg);
  4860 vmcs_ut::test_check_guest_ldtr_granularity()
  4862     std::vector<struct control_flow_path> cfg;
  4863     setup_check_guest_ldtr_granularity_paths(cfg);
  4869 vmcs_ut::test_check_guest_ldtr_access_rights_remaining_reserved_bit_0()
  4871     std::vector<struct control_flow_path> cfg;
  4872     setup_check_guest_ldtr_access_rights_remaining_reserved_bit_0_paths(cfg);
  4878 vmcs_ut::test_check_guest_gdtr_base_must_be_canonical()
  4880     std::vector<struct control_flow_path> cfg;
  4881     setup_check_guest_gdtr_base_must_be_canonical_paths(cfg);
  4887 vmcs_ut::test_check_guest_idtr_base_must_be_canonical()
  4889     std::vector<struct control_flow_path> cfg;
  4890     setup_check_guest_idtr_base_must_be_canonical_paths(cfg);
  4896 vmcs_ut::test_check_guest_gdtr_limit_reserved_bits()
  4898     std::vector<struct control_flow_path> cfg;
  4899     setup_check_guest_gdtr_limit_reserved_bits_paths(cfg);
  4905 vmcs_ut::test_check_guest_idtr_limit_reserved_bits()
  4907     std::vector<struct control_flow_path> cfg;
  4908     setup_check_guest_idtr_limit_reserved_bits_paths(cfg);
  4914 vmcs_ut::test_check_guest_rip_upper_bits()
  4916     std::vector<struct control_flow_path> cfg;
  4917     setup_check_guest_rip_upper_bits_paths(cfg);
  4923 vmcs_ut::test_check_guest_rip_valid_addr()
  4925     std::vector<struct control_flow_path> cfg;
  4926     setup_check_guest_rip_valid_addr_paths(cfg);
  4932 vmcs_ut::test_check_guest_rflags_reserved_bits()
  4934     std::vector<struct control_flow_path> cfg;
  4935     setup_check_guest_rflags_reserved_bits_paths(cfg);
  4941 vmcs_ut::test_check_guest_rflags_vm_bit()
  4943     std::vector<struct control_flow_path> cfg;
  4944     setup_check_guest_rflags_vm_bit_paths(cfg);
  4950 vmcs_ut::test_check_guest_rflag_interrupt_enable()
  4952     std::vector<struct control_flow_path> cfg;
  4953     setup_check_guest_rflag_interrupt_enable_paths(cfg);
  4959 vmcs_ut::test_check_guest_valid_activity_state()
  4961     std::vector<struct control_flow_path> cfg;
  4962     setup_check_guest_valid_activity_state_paths(cfg);
  4968 vmcs_ut::test_check_guest_activity_state_not_hlt_when_dpl_not_0()
  4970     std::vector<struct control_flow_path> cfg;
  4971     setup_check_guest_activity_state_not_hlt_when_dpl_not_0_paths(cfg);
  4977 vmcs_ut::test_check_guest_must_be_active_if_injecting_blocking_state()
  4979     std::vector<struct control_flow_path> cfg;
  4980     setup_check_guest_must_be_active_if_injecting_blocking_state_paths(cfg);
  4986 vmcs_ut::test_check_guest_hlt_valid_interrupts()
  4988     std::vector<struct control_flow_path> cfg;
  4989     setup_check_guest_hlt_valid_interrupts_paths(cfg);
  4995 vmcs_ut::test_check_guest_shutdown_valid_interrupts()
  4997     std::vector<struct control_flow_path> cfg;
  4998     setup_check_guest_shutdown_valid_interrupts_paths(cfg);
  5004 vmcs_ut::test_check_guest_sipi_valid_interrupts()
  5006     std::vector<struct control_flow_path> cfg;
  5007     setup_check_guest_sipi_valid_interrupts_paths(cfg);
  5013 vmcs_ut::test_check_guest_valid_activity_state_and_smm()
  5015     std::vector<struct control_flow_path> cfg;
  5016     setup_check_guest_valid_activity_state_and_smm_paths(cfg);
  5022 vmcs_ut::test_check_guest_interruptibility_state_reserved()
  5024     std::vector<struct control_flow_path> cfg;
  5025     setup_check_guest_interruptibility_state_reserved_paths(cfg);
  5031 vmcs_ut::test_check_guest_interruptibility_state_sti_mov_ss()
  5033     std::vector<struct control_flow_path> cfg;
  5034     setup_check_guest_interruptibility_state_sti_mov_ss_paths(cfg);
  5040 vmcs_ut::test_check_guest_interruptibility_state_sti()
  5042     std::vector<struct control_flow_path> cfg;
  5043     setup_check_guest_interruptibility_state_sti_paths(cfg);
  5049 vmcs_ut::test_check_guest_interruptibility_state_external_interrupt()
  5051     std::vector<struct control_flow_path> cfg;
  5052     setup_check_guest_interruptibility_state_external_interrupt_paths(cfg);
  5058 vmcs_ut::test_check_guest_interruptibility_state_nmi()
  5060     std::vector<struct control_flow_path> cfg;
  5061     setup_check_guest_interruptibility_state_nmi_paths(cfg);
  5067 vmcs_ut::test_check_guest_interruptibility_not_in_smm()
  5069     std::vector<struct control_flow_path> cfg;
  5070     setup_check_guest_interruptibility_not_in_smm_paths(cfg);
  5076 vmcs_ut::test_check_guest_interruptibility_entry_to_smm()
  5078     std::vector<struct control_flow_path> cfg;
  5079     setup_check_guest_interruptibility_entry_to_smm_paths(cfg);
  5085 vmcs_ut::test_check_guest_interruptibility_state_sti_and_nmi()
  5087     std::vector<struct control_flow_path> cfg;
  5088     setup_check_guest_interruptibility_state_sti_and_nmi_paths(cfg);
  5094 vmcs_ut::test_check_guest_interruptibility_state_virtual_nmi()
  5096     std::vector<struct control_flow_path> cfg;
  5097     setup_check_guest_interruptibility_state_virtual_nmi_paths(cfg);
  5103 vmcs_ut::test_check_guest_interruptibility_state_enclave_interrupt()
  5105     std::vector<struct control_flow_path> cfg;
  5106     setup_check_guest_interruptibility_state_enclave_interrupt_paths(cfg);
  5112 vmcs_ut::test_check_guest_pending_debug_exceptions_reserved()
  5114     std::vector<struct control_flow_path> cfg;
  5115     setup_check_guest_pending_debug_exceptions_reserved_paths(cfg);
  5121 vmcs_ut::test_check_guest_pending_debug_exceptions_dbg_ctl()
  5123     std::vector<struct control_flow_path> cfg;
  5124     setup_check_guest_pending_debug_exceptions_dbg_ctl_paths(cfg);
  5130 vmcs_ut::test_check_guest_pending_debug_exceptions_rtm()
  5132     std::vector<struct control_flow_path> cfg;
  5133     setup_check_guest_pending_debug_exceptions_rtm_paths(cfg);
  5139 vmcs_ut::test_check_guest_vmcs_link_pointer_bits_11_0()
  5141     std::vector<struct control_flow_path> cfg;
  5142     setup_check_guest_vmcs_link_pointer_bits_11_0_paths(cfg);
  5148 vmcs_ut::test_check_guest_vmcs_link_pointer_valid_addr()
  5150     std::vector<struct control_flow_path> cfg;
  5151     setup_check_guest_vmcs_link_pointer_valid_addr_paths(cfg);
  5157 vmcs_ut::test_check_guest_vmcs_link_pointer_first_word()
  5159     std::vector<struct control_flow_path> cfg;
  5160     setup_check_guest_vmcs_link_pointer_first_word_paths(cfg);
  5166 vmcs_ut::test_check_guest_valid_pdpte_with_ept_disabled()
  5168     std::vector<struct control_flow_path> cfg;
  5169     setup_check_guest_valid_pdpte_with_ept_disabled_paths(cfg);
  5175 vmcs_ut::test_check_guest_valid_pdpte_with_ept_enabled()
  5177     std::vector<struct control_flow_path> cfg;
  5178     setup_check_guest_valid_pdpte_with_ept_enabled_paths(cfg);
 constexpr const auto mask
void guest_valid_activity_state()
void guest_fs_must_be_present_if_usable()
void guest_gs_granularity()
void guest_ss_access_rights_type()
void guest_es_is_not_a_system_descriptor()
void guest_ss_granularity()
void guest_vmcs_link_pointer_bits_11_0()
void guest_interruptibility_state_sti_mov_ss()
void entry_ctl_allow1(uint64_t mask)
void guest_rflags_vm_bit()
void proc_ctl2_allow0(uint64_t mask)
void guest_interruptibility_not_in_smm()
constexpr const auto addr
void guest_ds_base_upper_dword_0()
void guest_ds_base_is_shifted()
void guest_cs_access_rights_type()
void guest_fs_granularity()
void guest_cr4_for_unsupported_bits()
void guest_pending_debug_exceptions_rtm()
void guest_load_debug_controls_verify_reserved()
constexpr const auto shutdown
#define test_vmcs_check(cfg,...)
void guest_ia32_sysenter_esp_canonical_address()
void guest_ss_must_be_present_if_usable()
void guest_cr0_for_unsupported_bits()
void guest_cs_type_not_equal_3()
constexpr const auto double_fault
void pin_ctl_allow1(uint64_t mask)
void guest_ds_granularity()
std::map< uint64_t, uint64_t > g_vmcs_fields
void guest_es_access_rights_reserved_must_be_0()
void guest_tr_must_be_usable()
void guest_tr_access_rights_remaining_reserved_bit_0()
constexpr const auto mask
void guest_cs_access_rights_remaining_reserved_bit_0()
void guest_gdtr_limit_reserved_bits()
constexpr const auto external_interrupt
void guest_verify_load_ia32_efer()
constexpr const auto mask
void guest_fs_is_not_a_system_descriptor()
void guest_must_be_active_if_injecting_blocking_state()
bool g_phys_to_virt_return_nullptr
void guest_interruptibility_state_nmi()
void guest_gs_access_rights_remaining_reserved_bit_0()
void guest_ds_access_rights_reserved_must_be_0()
void guest_v8086_gs_access_rights()
void guest_cs_base_is_shifted()
void guest_cs_db_must_be_0_if_l_equals_1()
constexpr const auto read_execute_accessed
void guest_ss_base_upper_dword_0()
void guest_ss_base_is_shifted()
void guest_es_base_is_shifted()
constexpr const auto addr
void guest_gs_access_rights_type()
void entry_ctl_allow0(uint64_t mask)
void guest_es_must_be_present_if_usable()
void guest_shutdown_valid_interrupts()
void guest_descriptor_table_registers_all()
constexpr const auto unusable
constexpr const auto mask
void guest_interruptibility_state_enclave_interrupt()
void guest_v8086_fs_access_rights()
constexpr const auto other_event
void guest_activity_state_not_hlt_when_dpl_not_0()
void guest_gs_is_not_a_system_descriptor()
void guest_tr_must_be_a_system_descriptor()
void setup_check_guest_state_all_paths(std::vector< struct control_flow_path > &cfg)
void guest_gs_access_rights_reserved_must_be_0()
void guest_ss_is_not_a_system_descriptor()
constexpr const auto hardware_exception
void guest_ss_and_cs_rpl_are_the_same()
constexpr const auto mask
void guest_gs_base_is_canonical()
void guest_cs_access_rights_reserved_must_be_0()
constexpr const auto addr
std::map< msrs::field_type, msrs::value_type > g_msrs
void guest_es_access_rights_type()
void guest_cs_granularity()
void guest_pending_debug_exceptions_dbg_ctl()
void guest_tr_type_must_be_11()
void guest_verify_ia_32e_mode_enabled()
std::map< cpuid::field_type, cpuid::value_type > g_eax_cpuid
constexpr const auto software_exception
constexpr const auto mask
constexpr const auto mask
constexpr const auto debug_exception
void guest_tr_granularity()
void guest_load_debug_controls_verify_dr7()
void guest_rflag_interrupt_enable()
void guest_verify_load_ia32_bndcfgs()
struct cpuid_regs g_cpuid_regs
void guest_ldtr_ti_bit_equals_0()
void guest_fs_access_rights_remaining_reserved_bit_0()
void guest_ldtr_access_rights_remaining_reserved_bit_0()
void guest_interruptibility_entry_to_smm()
void guest_v8086_ds_access_rights()
void guest_cs_base_upper_dword_0()
void guest_interruptibility_state_sti()
void guest_pending_debug_exceptions_reserved()
constexpr const auto non_maskable_interrupt
void guest_ss_dpl_must_equal_zero()
void guest_v8086_ss_access_rights()
void guest_verify_load_ia32_pat()
constexpr const auto mask
std::shared_ptr< std::exception > exception
void guest_gs_base_is_shifted()
void guest_fs_access_rights_reserved_must_be_0()
constexpr const auto mask
void guest_valid_pdpte_with_ept_disabled()
constexpr const auto mask
void pin_ctl_allow0(uint64_t mask)
void guest_sipi_valid_interrupts()
void guest_ldtr_base_is_canonical()
constexpr const auto mask
void guest_fs_access_rights_type()
void guest_verify_ia_32e_mode_disabled()
constexpr const auto machine_check
void guest_ss_access_rights_remaining_reserved_bit_0()
void guest_tr_ti_bit_equals_0()
void guest_ss_dpl_must_equal_rpl()
void guest_rip_and_rflags_all()
void guest_interruptibility_state_reserved()
void guest_rip_upper_bits()
void guest_verify_load_ia32_perf_global_ctrl()
void guest_rflags_reserved_bits()
void guest_vmcs_link_pointer_valid_addr()
void proc_ctl2_allow1(uint64_t mask)
constexpr const auto mask
void guest_ldtr_must_be_present()
void guest_idtr_limit_reserved_bits()
void guest_tr_access_rights_reserved_must_be_0()
constexpr const auto addr
void guest_cs_dpl_adheres_to_ss_dpl()
void guest_control_registers_debug_registers_and_msrs_all()
void guest_idtr_base_must_be_canonical()
void proc_ctl_allow1(uint64_t mask)
constexpr const auto mask
constexpr const auto mask
constexpr const auto addr
constexpr const auto addr
void guest_es_access_rights_remaining_reserved_bit_0()
void guest_non_register_state_all()
void guest_interruptibility_state_sti_and_nmi()
uint64_t g_vmcs_link_addr
void guest_interruptibility_state_virtual_nmi()
void guest_cr0_verify_paging_enabled()
void guest_ds_must_be_present_if_usable()
void guest_tr_must_be_present()
constexpr const auto divide_error
void guest_fs_base_is_canonical()
void proc_ctl_allow0(uint64_t mask)
void guest_cs_must_be_present()
void guest_ds_access_rights_type()
void guest_vmcs_link_pointer_first_word()
constexpr const auto mask
void guest_ldtr_must_be_a_system_descriptor()
void guest_cs_is_not_a_system_descriptor()
uint32_t g_vmcs_link_mem[1]
void guest_tr_base_is_canonical()
void guest_ds_is_not_a_system_descriptor()
void guest_gs_must_be_present_if_usable()
void guest_interruptibility_state_external_interrupt()
constexpr const auto wait_for_sipi
void guest_cr3_for_unsupported_bits()
constexpr const auto addr
void guest_ds_access_rights_remaining_reserved_bit_0()
void guest_ss_access_rights_reserved_must_be_0()
void guest_rip_valid_addr()
constexpr const auto tss_busy
void guest_v8086_es_access_rights()
constexpr const auto read_execute_conforming
constexpr const auto mask
constexpr const auto active
void guest_gdtr_base_must_be_canonical()
void guest_v8086_cs_access_rights()
void guest_ldtr_type_must_be_2()
void guest_segment_registers_all()
void guest_valid_activity_state_and_smm()
void guest_ldtr_granularity()
void guest_ia32_sysenter_eip_canonical_address()
void guest_valid_pdpte_with_ept_enabled()
void guest_es_base_upper_dword_0()
void guest_hlt_valid_interrupts()
void guest_fs_base_is_shifted()
std::function< void()> setup
void guest_ldtr_access_rights_reserved_must_be_0()
void guest_es_granularity()