+ v1 = SvPVX(sv1);
+ v2 = SvPVX(sv2);
+ c1 = SvCUR(sv1) * CHAR_BIT;
+ c2 = SvCUR(sv2) * CHAR_BIT;
+
+ redo:
+ l1 = s1 + l;
+ l2 = s2 + l;
+ e1 = l1 > c1 ? l1 - c1 : 0;
+ e2 = l2 > c2 ? l2 - c2 : 0;
+ e = e1 > e2 ? e1 : e2;
+
+ if (l > e) {
+ size_t p = l - e;
+
+ res = bv_eq(v1, s1, v2, s2, p);
+ if (!res || e == 0)
+ goto done;
+
+ /* Bit vectors are equal up to p < l */
+ s1 += p;
+ s2 += p;
+ l = e;
+ goto redo;