code: private static function getHash($H, $X)
      {
          $Y = [];
          $Y[0] = str_pad('', 16, "\0");
          $num_blocks = (int) (mb_strlen($X, '8bit') / 16);
          for ($i = 1; $i <= $num_blocks; $i++) {
              $Y[$i] = self::getProduct(self::getBitXor($Y[$i - 1], mb_substr($X, ($i - 1) * 16, 16, '8bit')), $H);
          }
  
          return $Y[$num_blocks];
      }
docs: @param string $H
  @param string $X
  
  @return mixed