def unconstrain_loop(self, constrained_entry):

        constrained_state = constrained_entry.state.copy()

        # first, go through the loop normally, one more time
        constrained_results = self._tick_loop(start=constrained_entry)
        l.debug("%d paths to header found", len(constrained_results.found))

        # then unconstrain differences between the original state and any new
        # head states
        unconstrained_states = []
        for p in constrained_results.found:
            # because the head_entry might actually point partway *through* the
            # loop header, in the cases of a loop starting between
            # the counter-increment and the condition check (because the
            # counter is only incremented at the end of the loop, and the
            # end is placed in the beginning for optimization), so we run the
            # loop through to the *end* of the header
            new_state = p.state.copy()
            if self._unconstrain_registers:
                new_state.registers.unconstrain_differences(constrained_state.registers)
            if self._unconstrain_memory:
                new_state.memory.unconstrain_differences(constrained_state.memory)

            unconstrained_states.append(new_state)
        l.debug("%d unconstrained states", len(unconstrained_states))

        unconstrained_exits = []
        unconstrained_entry = constrained_entry
        for s in unconstrained_states:
            unconstrained_entry.state = s
            unconstrained_results = self._tick_loop(start=unconstrained_entry)

            unconstrained_exits += unconstrained_results.deviating

        return unconstrained_exits
Return the score for a given category
dataset/ETHPy150Open angr/angr/angr/surveyors/escaper.py/Escaper.unconstrain_loop--crossover with--dataset/ETHPy150Open moonso/genmod/genmod/score_variants/score_variant.py/get_category_score