(self, state, add_guard=True)
Preprocesses the successor state.

        :param state: the successor state
Preprocesses the successor state.
Preprocesses the successor state .
def _preprocess_successor(self, state, add_guard=True): #pylint:disable=unused-argument
        """
        Preprocesses the successor state.

        :param state: the successor state
        """

        # Next, simplify what needs to be simplified
        if o.SIMPLIFY_EXIT_STATE in state.options:
            state.solver.simplify()
        if o.SIMPLIFY_EXIT_GUARD in state.options:
            state.scratch.guard = state.solver.simplify(state.scratch.guard)
        if o.SIMPLIFY_EXIT_TARGET in state.options:
            state.scratch.target = state.solver.simplify(state.scratch.target)

        # unwrap stuff from SimActionObjects
        state.scratch.target = _raw_ast(state.scratch.target)
        state.scratch.guard = _raw_ast(state.scratch.guard)

        # apply the guard constraint and new program counter to the state
        if add_guard:
            state.add_constraints(state.scratch.guard)
        # trigger inspect breakpoints here since this statement technically shows up in the IRSB as the "next"
        state.regs.ip = state.scratch.target

        # For architectures with no stack pointer, we can't manage a callstack. This has the side effect of breaking
        # SimProcedures that call out to binary code self.call.
        if self.initial_state.arch.sp_offset is not None and not isinstance(state.arch, ArchSoot):
            self._manage_callstack(state)

        if len(self.successors) != 0:
            # This is a fork!
            state._inspect('fork', BP_AFTER)

        # clean up the state
        state.options.discard(o.AST_DEPS)
        state.options.discard(o.AUTO_REFS)
def _preprocess_successor ( self , state , add_guard = True ) : #pylint:disable=unused-argument # Next, simplify what needs to be simplified if o . SIMPLIFY_EXIT_STATE in state . options : state . solver . simplify ( ) if o . SIMPLIFY_EXIT_GUARD in state . options : state . scratch . guard = state . solver . simplify ( state . scratch . guard ) if o . SIMPLIFY_EXIT_TARGET in state . options : state . scratch . target = state . solver . simplify ( state . scratch . target ) # unwrap stuff from SimActionObjects state . scratch . target = _raw_ast ( state . scratch . target ) state . scratch . guard = _raw_ast ( state . scratch . guard ) # apply the guard constraint and new program counter to the state if add_guard : state . add_constraints ( state . scratch . guard ) # trigger inspect breakpoints here since this statement technically shows up in the IRSB as the "next" state . regs . ip = state . scratch . target # For architectures with no stack pointer, we can't manage a callstack. This has the side effect of breaking # SimProcedures that call out to binary code self.call. if self . initial_state . arch . sp_offset is not None and not isinstance ( state . arch , ArchSoot ) : self . _manage_callstack ( state ) if len ( self . successors ) != 0 : # This is a fork! state . _inspect ( 'fork' , BP_AFTER ) # clean up the state state . options . discard ( o . AST_DEPS ) state . options . discard ( o . AUTO_REFS )