code: public static FDBigInteger valueOfPow52(int p5, int p2) {
          if (p5 != 0) {
              if (p2 == 0) {
                  return big5pow(p5);
              } else if (p5 < SMALL_5_POW.length) {
                  int pow5 = SMALL_5_POW[p5];
                  int wordcount = p2 >> 5;
                  int bitcount = p2 & 0x1f;
                  if (bitcount == 0) {
                      return new FDBigInteger(new int[]{pow5}, wordcount);
                  } else {
                      return new FDBigInteger(new int[]{
                              pow5 << bitcount,
                              pow5 >>> (32 - bitcount)
                      }, wordcount);
                  }
              } else {
                  return big5pow(p5).leftShift(p2);
              }
          } else {
              return valueOfPow2(p2);
          }
      }
docs: /*@
  @ requires p5 >= 0 && p2 >= 0;
  @ assignable \nothing;
  @ ensures \result.value() == \old(pow52(p5, p2));
  @