private void countAvailible() {
        isChanged = true;
        boolean firstTime = true;
        while (isChanged) {
            if(firstTime)
                firstTime = false;
            else
                isChanged = false;
            BaseBlock first = null;
            markBB.clear();
            for (BaseBlock b : cfg.dfs()) {
                markBB.put(b, false);
                if (cfg.prevBB(b) == null)
                    first = b;
                else if (cfg.prevBB(b).isEmpty())
                    first = b;
            }
            this.first = first;

            recCountAvailible(first, null);
        }
            countEarliest();
    }