def METHOD_NAME(self, arch):
    proj = angr.Project(
        os.path.join(test_location, arch, "fauxware"), use_sim_procedures=True, auto_load_libs=False
    )
    cfg = proj.analyses.CFGEmulated()
    vfg = proj.analyses.VFG(
        cfg,
        start=0x40071D,
        context_sensitivity_level=10,
        interfunction_level=10,
        record_function_final_states=True,
    )
    all_block_addresses = {n.addr for n in vfg.graph.nodes()}
    assert vfg_1_addresses[arch].issubset(all_block_addresses)
    # return value for functions
    # function authenticate has only two possible return values: 0 and 1
    authenticate = cfg.functions.function(name="authenticate")
    assert authenticate.addr in vfg.function_final_states
    authenticate_final_states = vfg.function_final_states[authenticate.addr]
    assert len(authenticate_final_states) == 1
    authenticate_final_state = next(iter(authenticate_final_states.values()))
    assert authenticate_final_state is not None
    assert authenticate_final_state.solver.eval_upto(authenticate_final_state.regs.rax, 3) == [0, 1]
    # optimal execution tests
    # - the basic block after returning from `authenticate` should only be executed once
    assert vfg._execution_counter[0x4007B3] == 1
    # - the last basic block in `authenticate` should only be executed once (on a non-normalized CFG)
    assert vfg._execution_counter[0x4006EB] == 1