 // 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

    cudaEventElapsedTime(&duration, start, stop);
      printf("%d rounds completed in %.3f seconds.\n", WK, duration / 1000.0f);

    u32 s, nsols, ndupes, maxsols = min(MAXSOLS, eq.nsols);
    for (s = nsols = ndupes = 0; s < maxsols; s++) {
      if (duped(sols[s])) {
        ndupes++;
        continue;
      }
      nsols++;
