(self, sim_successors, call_stack, func_addr, block_id=None, depth=None, exception_info=None)
return cfg_node
Create a context-sensitive CFGNode instance for a specific block.

        :param SimSuccessors sim_successors:         The SimSuccessors object.
        :param CallStack call_stack_suffix:          The call stack.
        :param int func_addr:                        Address of the current function.
        :param BlockID block_id:                     The block ID of this CFGNode.
        :param int or None depth:                    Depth of this CFGNode.
        :return:                                     A CFGNode instance.
        :rtype:                                      CFGNode
Create a context-sensitive CFGNode instance for a specific block.
Create a context - sensitive CFGNode instance for a specific block .
def _create_cfgnode(self, sim_successors, call_stack, func_addr, block_id=None, depth=None, exception_info=None):
        """
        Create a context-sensitive CFGNode instance for a specific block.

        :param SimSuccessors sim_successors:         The SimSuccessors object.
        :param CallStack call_stack_suffix:          The call stack.
        :param int func_addr:                        Address of the current function.
        :param BlockID block_id:                     The block ID of this CFGNode.
        :param int or None depth:                    Depth of this CFGNode.
        :return:                                     A CFGNode instance.
        :rtype:                                      CFGNode
        """

        sa = sim_successors.artifacts  # shorthand

        # Determine if this is a SimProcedure, and further, if this is a syscall
        syscall = None
        is_syscall = False
        if sim_successors.sort == 'SimProcedure':
            is_simprocedure = True
            if sa['is_syscall'] is True:
                is_syscall = True
                syscall = sim_successors.artifacts['procedure']
        else:
            is_simprocedure = False

        if is_simprocedure:
            simproc_name = sa['name'].split('.')[-1]
            if simproc_name == "ReturnUnconstrained" and 'resolves' in sa and sa['resolves'] is not None:
                simproc_name = sa['resolves']

            no_ret = False
            if syscall is not None and sa['no_ret']:
                no_ret = True

            cfg_node = CFGENode(sim_successors.addr,
                                None,
                                self.model,
                                callstack_key=call_stack.stack_suffix(self.context_sensitivity_level),
                                input_state=None,
                                simprocedure_name=simproc_name,
                                syscall_name=syscall,
                                no_ret=no_ret,
                                is_syscall=is_syscall,
                                function_address=sim_successors.addr,
                                block_id=block_id,
                                depth=depth,
                                creation_failure_info=exception_info,
                                thumb=(isinstance(self.project.arch, ArchARM) and sim_successors.addr & 1),
                                )

        else:
            cfg_node = CFGENode(sim_successors.addr,
                                sa['irsb_size'],
                                self.model,
                                callstack_key=call_stack.stack_suffix(self.context_sensitivity_level),
                                input_state=None,
                                is_syscall=is_syscall,
                                function_address=func_addr,
                                block_id=block_id,
                                depth=depth,
                                irsb=sim_successors.artifacts['irsb'],
                                creation_failure_info=exception_info,
                                thumb=(isinstance(self.project.arch, ArchARM) and sim_successors.addr & 1),
                                )

        return cfg_node
def _create_cfgnode ( self , sim_successors , call_stack , func_addr , block_id = None , depth = None , exception_info = None ) : sa = sim_successors . artifacts # shorthand # Determine if this is a SimProcedure, and further, if this is a syscall syscall = None is_syscall = False if sim_successors . sort == 'SimProcedure' : is_simprocedure = True if sa [ 'is_syscall' ] is True : is_syscall = True syscall = sim_successors . artifacts [ 'procedure' ] else : is_simprocedure = False if is_simprocedure : simproc_name = sa [ 'name' ] . split ( '.' ) [ - 1 ] if simproc_name == "ReturnUnconstrained" and 'resolves' in sa and sa [ 'resolves' ] is not None : simproc_name = sa [ 'resolves' ] no_ret = False if syscall is not None and sa [ 'no_ret' ] : no_ret = True cfg_node = CFGENode ( sim_successors . addr , None , self . model , callstack_key = call_stack . stack_suffix ( self . context_sensitivity_level ) , input_state = None , simprocedure_name = simproc_name , syscall_name = syscall , no_ret = no_ret , is_syscall = is_syscall , function_address = sim_successors . addr , block_id = block_id , depth = depth , creation_failure_info = exception_info , thumb = ( isinstance ( self . project . arch , ArchARM ) and sim_successors . addr & 1 ) , ) else : cfg_node = CFGENode ( sim_successors . addr , sa [ 'irsb_size' ] , self . model , callstack_key = call_stack . stack_suffix ( self . context_sensitivity_level ) , input_state = None , is_syscall = is_syscall , function_address = func_addr , block_id = block_id , depth = depth , irsb = sim_successors . artifacts [ 'irsb' ] , creation_failure_info = exception_info , thumb = ( isinstance ( self . project . arch , ArchARM ) and sim_successors . addr & 1 ) , ) return cfg_node