(self, func, func_graph=None, max_iterations=2, low_priority=False, track_sp=True,
                 func_args: Optional[List[SimVariable]]=None, store_live_variables=False)
:param knowledge.Function func:  The function to analyze.
        :param int max_iterations:
        :param clinic:
def __init__(self, func, func_graph=None, max_iterations=2, low_priority=False, track_sp=True,
                 func_args: Optional[List[SimVariable]]=None, store_live_variables=False):
        """

        :param knowledge.Function func:  The function to analyze.
        :param int max_iterations:
        :param clinic:
        """

        function_graph_visitor = FunctionGraphVisitor(func, graph=func_graph)

        # Make sure the function is not empty
        if not func.block_addrs_set or func.startpoint is None:
            raise AngrVariableRecoveryError("Function %s is empty." % repr(func))

        VariableRecoveryBase.__init__(self, func, max_iterations, store_live_variables)
        ForwardAnalysis.__init__(self, order_jobs=True, allow_merging=True, allow_widening=False,
                                 graph_visitor=function_graph_visitor)

        self._low_priority = low_priority
        self._job_ctr = 0
        self._track_sp = track_sp and self.project.arch.sp_offset is not None
        self._func_args = func_args

        self._ail_engine = SimEngineVRAIL(self.project, self.kb)
        self._vex_engine = SimEngineVRVEX(self.project, self.kb)

        self._node_iterations = defaultdict(int)

        self._node_to_cc = { }
        self.var_to_typevar = { }
        self.type_constraints = None

        self._analyze()

        # cleanup (for cpython pickle)
        self.downsize()
        self._ail_engine = None
        self._vex_engine = None
def __init__ ( self , func , func_graph = None , max_iterations = 2 , low_priority = False , track_sp = True , func_args : Optional [ List [ SimVariable ] ] = None , store_live_variables = False ) : function_graph_visitor = FunctionGraphVisitor ( func , graph = func_graph ) # Make sure the function is not empty if not func . block_addrs_set or func . startpoint is None : raise AngrVariableRecoveryError ( "Function %s is empty." % repr ( func ) ) VariableRecoveryBase . __init__ ( self , func , max_iterations , store_live_variables ) ForwardAnalysis . __init__ ( self , order_jobs = True , allow_merging = True , allow_widening = False , graph_visitor = function_graph_visitor ) self . _low_priority = low_priority self . _job_ctr = 0 self . _track_sp = track_sp and self . project . arch . sp_offset is not None self . _func_args = func_args self . _ail_engine = SimEngineVRAIL ( self . project , self . kb ) self . _vex_engine = SimEngineVRVEX ( self . project , self . kb ) self . _node_iterations = defaultdict ( int ) self . _node_to_cc = { } self . var_to_typevar = { } self . type_constraints = None self . _analyze ( ) # cleanup (for cpython pickle) self . downsize ( ) self . _ail_engine = None self . _vex_engine = None