code: private void readFile(InputStream is) throws IOException
     {
        StreamHelper.skip(is, 64);
        int index = 64;
  
        ArrayList<Integer> offsetList = new ArrayList<Integer>();
        List<String> nameList = new ArrayList<String>();
  
        while (true)
        {
           byte[] table = new byte[32];
           is.read(table);
           index += 32;
  
           int offset = PEPUtility.getInt(table, 0);
           offsetList.add(Integer.valueOf(offset));
           if (offset == 0)
           {
              break;
           }
  
           nameList.add(PEPUtility.getString(table, 5).toUpperCase());
        }
  
        StreamHelper.skip(is, offsetList.get(0).intValue() - index);
  
        for (int offsetIndex = 1; offsetIndex < offsetList.size() - 1; offsetIndex++)
        {
           String name = nameList.get(offsetIndex - 1);
           Class<? extends Table> tableClass = TABLE_CLASSES.get(name);
           if (tableClass == null)
           {
              tableClass = Table.class;
           }
  
           Table table;
           try
           {
              table = tableClass.newInstance();
           }
  
           catch (Exception ex)
           {
              throw new RuntimeException(ex);
           }
  
           m_tables.put(name, table);
           table.read(is);
        }
     }
docs: Reads a PEP file from the input stream.
  
  @param is input stream representing a PEP file