Object unpack(Info vi, Buffer opb){
    InfoFloor0 info=new InfoFloor0();
    info.order=opb.read(8);
    info.rate=opb.read(16);
    info.barkmap=opb.read(16);
    info.ampbits=opb.read(6);
    info.ampdB=opb.read(8);
    info.numbooks=opb.read(4)+1;

    if((info.order<1)||(info.rate<1)||(info.barkmap<1)||(info.numbooks<1)){
      return (null);
    }

    for(int j=0; j<info.numbooks; j++){
      info.books[j]=opb.read(8);
      if(info.books[j]<0||info.books[j]>=vi.books){
        return (null);
      }
    }
    return (info);
  }