if (firstReorder == 0) bdd_enable_reorder();
if (numReorder == 0) bdd_enable_reorder();
    int bdd_apply(int l, int r, int op) {        int res;        firstReorder = 1;        CHECKa(l, bddfalse);        CHECKa(r, bddfalse);        if (op < 0 || op > bddop_invimp) {            bdd_error(BDD_OP);            return bddfalse;        }        if (applycache == null) applycache = BddCacheI_init(cachesize);                again : for (;;) {            try {                INITREF();                applyop = op;                if (firstReorder == 0)                    bdd_disable_reorder();                switch (op) {                    case bddop_and: res = ZDD ? zand_rec(l, r) : and_rec(l, r); break;                    case bddop_or: res = ZDD ? zor_rec(l, r) : or_rec(l, r); break;                    case bddop_diff: res = ZDD ? zdiff_rec(l, r) : apply_rec(l, r); break;                    default: res = apply_rec(l, r); break;                }                if (firstReorder == 0)                    bdd_enable_reorder();            } catch (ReorderException x) {                bdd_checkreorder();                if (firstReorder-- == 1)                    continue again;                res = BDDZERO;                /* avoid warning about res being uninitialized */            }            break;        }        //validate(res);                checkresize();        return res;    }