static void select(ge_precomp t,int pos,byte b)
{
ge_precomp base[][] = (pos <= 7 ? ge_precomp_base_0_7.base :
(pos <= 15 ? ge_precomp_base_8_15.base :
(pos <= 23 ? ge_precomp_base_16_23.base : ge_precomp_base_24_31.base)));
ge_precomp minust = new ge_precomp();
int bnegative = negative(b);
int babs = b - (((-bnegative) & b) << 1);
ge_precomp_0.ge_precomp_0(t);
cmov(t,base[pos][0],equal((byte)babs,(byte)1));
cmov(t,base[pos][1],equal((byte)babs,(byte)2));
cmov(t,base[pos][2],equal((byte)babs,(byte)3));
cmov(t,base[pos][3],equal((byte)babs,(byte)4));
cmov(t,base[pos][4],equal((byte)babs,(byte)5));
cmov(t,base[pos][5],equal((byte)babs,(byte)6));
cmov(t,base[pos][6],equal((byte)babs,(byte)7));
cmov(t,base[pos][7],equal((byte)babs,(byte)8));
fe_copy.fe_copy(minust.yplusx,t.yminusx);
fe_copy.fe_copy(minust.yminusx,t.yplusx);
fe_neg.fe_neg(minust.xy2d,t.xy2d);
cmov(t,minust,bnegative);
}