code: private static function getInt4d($data, $pos)
      {
          if (trim($data) == '') {
              // No data provided
              throw new ReaderException('Parameter data is empty.');
          } elseif ($pos < 0) {
              // Invalid position
              throw new ReaderException('Parameter pos=' . $pos . ' is invalid.');
          }
  
          $len = strlen($data);
          if ($len < $pos + 4) {
              $data .= str_repeat("\0", $pos + 4 - $len);
          }
  
          // FIX: represent numbers correctly on 64-bit system
          // http://sourceforge.net/tracker/index.php?func=detail&aid=1487372&group_id=99160&atid=623334
          // Changed by Andreas Rehm 2006 to ensure correct result of the <<24 block on 32 and 64bit systems
          $_or_24 = ord($data[$pos + 3]);
          if ($_or_24 >= 128) {
              // negative number
              $_ord_24 = -abs((256 - $_or_24) << 24);
          } else {
              $_ord_24 = ($_or_24 & 127) << 24;
          }
  
          return ord($data[$pos]) | (ord($data[$pos + 1]) << 8) | (ord($data[$pos + 2]) << 16) | $_ord_24;
      }
docs: Read 4 bytes of data at specified position.
  
  @param string $data
  @param int $pos
  
  @return int