code: private int trPivot(int ISAd, int first, int last) {
          int middle;
          int t;
  
          t = last - first;
          middle = first + t / 2;
  
          if (t <= 512) {
              if (t <= 32) {
                  return trMedian3(ISAd, first, middle, last - 1);
              } else {
                  t >>= 2;
                  return trMedian5(ISAd, first, first + t, middle, last - 1 - t, last - 1);
              }
          }
          t >>= 3;
          first = trMedian3(ISAd, first, first + t, first + (t << 1));
          middle = trMedian3(ISAd, middle - t, middle, middle + t);
          last = trMedian3(ISAd, last - 1 - (t << 1), last - 1 - t, last - 1);
          return trMedian3(ISAd, first, middle, last);
      }
docs: Returns the pivot element.