Object look(DspState vd, InfoMode vm, Object vr){
    InfoResidue0 info=(InfoResidue0)vr;
    LookResidue0 look=new LookResidue0();
    int acc=0;
    int dim;
    int maxstage=0;
    look.info=info;
    look.map=vm.mapping;

    look.parts=info.partitions;
    look.fullbooks=vd.fullbooks;
    look.phrasebook=vd.fullbooks[info.groupbook];

    dim=look.phrasebook.dim;

    look.partbooks=new int[look.parts][];

    for(int j=0; j<look.parts; j++){
      int i=info.secondstages[j];
      int stages=Util.ilog(i);
      if(stages!=0){
        if(stages>maxstage)
          maxstage=stages;
        look.partbooks[j]=new int[stages];
        for(int k=0; k<stages; k++){
          if((i&(1<<k))!=0){
            look.partbooks[j][k]=info.booklist[acc++];
          }
        }
      }
    }

    look.partvals=(int)Math.rint(Math.pow(look.parts, dim));
    look.stages=maxstage;
    look.decodemap=new int[look.partvals][];
    for(int j=0; j<look.partvals; j++){
      int val=j;
      int mult=look.partvals/look.parts;
      look.decodemap[j]=new int[dim];

      for(int k=0; k<dim; k++){
        int deco=val/mult;
        val-=deco*mult;
        mult/=look.parts;
        look.decodemap[j][k]=deco;
      }
    }
    return (look);
  }