int inverse2(Block vb, Object i, Object memo, float[] out){
    LookFloor1 look=(LookFloor1)i;
    InfoFloor1 info=look.vi;
    int n=vb.vd.vi.blocksizes[vb.mode]/2;

    if(memo!=null){
      /* render the lines */
      int[] fit_value=(int[])memo;
      int hx=0;
      int lx=0;
      int ly=fit_value[0]*info.mult;
      for(int j=1; j<look.posts; j++){
        int current=look.forward_index[j];
        int hy=fit_value[current]&0x7fff;
        if(hy==fit_value[current]){
          hy*=info.mult;
          hx=info.postlist[current];

          render_line(lx, hx, ly, hy, out);

          lx=hx;
          ly=hy;
        }
      }
      for(int j=hx; j<n; j++){
        out[j]*=out[j-1]; /* be certain */
      }
      return (1);
    }
    for(int j=0; j<n; j++){
      out[j]=0.f;
    }
    return (0);
  }