 // number of blocks of hashes extracted from single 512 bit blake2b output
 static const u32 NBLOCKS = (NHASHES+HASHESPERBLAKE-1)/HASHESPERBLAKE;
 // nothing larger found in 100000 runs
-static const u32 MAXSOLS = 8;
+static const u32 MAXSOLS = 64;
 
 // tree node identifying its children as two different slots in
 // a bucket on previous layer with the same rest bits (x-tra hash)

      for (cd.addslot(s1, htl.getxhash0(pslot1)); cd.nextcollision(); ) { // assume WK odd
        const u32 s0 = cd.slot();
        const slot0 *pslot0 = buck + s0;
        if (htl.equal(pslot0->hash, pslot1->hash)) {
#ifdef XINTREE
          eq->candidate(tree(bucketid, s0, s1, 0));
#else

  }
  __device__ u32 xhash() const {
    return bid_s0_s1_x & RESTMASK;
  }
  __device__ bool prob_disjoint(const tree other) const {
    tree xort(bid_s0_s1_x ^ other.bid_s0_s1_x);
    return xort.bucketid() || (xort.slotid0() && xort.slotid1());
    // next two tests catch much fewer cases and are therefore skipped
    // && slotid0() != other.slotid1() && slotid1() != other.slotid0()
  }
};

