int k,q,l,e,E,z,n; /* (q,l)=window, e=current eval. score, E=e.p. sqr.*/\r
{ /* e=score, z=prev.dest; J,Z=hashkeys; return score*/\r
int j,r,m,v,d,h,i,F,G,P,V,f=J,g=Z,C,s,flag,FF,*ps=sp,kk=S;\r
- signed char t,p,u,x,y,X,Y,H,B,gt,rg;\r
+ signed char t,p,u,x,y,X,Y,H,B,gt,rg,rk;\r
struct _*a=A+(J+(k+S)*E&U); /* lookup pos. in hash table*/\r
*sp++=0;\r
q-=q<e;l-=l<=e; /* adj. window: delay bonus */\r
if(d-!t>1) /*** all captures if d=2 ***/\r
{v=gt=0;G: /* retry move with gating */\r
v+=centr[p]?b[x+257]-b[y+257]:0; /* center positional pts. */\r
- if(!(G&S))b[FF]=b[G],v+=50; /* castling: put R & score */\r
+ if(G-S)b[FF]=(rk=b[G])|32,v+=50; /* castling: put R & score */\r
b[G]=b[H]=0;b[x]=gt;b[y]=u|32; /* do move, set non-virgin */\r
pl[t&31]-=!!t; /* updat victim piece count */\r
v-=w[p]>0|R<EG?0:20; /*** freeze K in mid-game ***/\r
{if(v+I&&x==K&y==L>==GT) /* if move found */\r
{Q=-e-i;O=F;LL=L;prom=gt;\r
if(b[y]-u&15)prom=b[y]-=PromPiece, /* (under-)promotion: */\r
- Q-=abs(w[prom&=15])-w[p]-6*S, /* correct piece & score & */\r
+ Q-=abs(w[prom&=15])-w[p]-(6*S>>sh), /* correct piece & score & */\r
Z+=PromPiece; /* invalidate hash */\r
a->D=99;a->V=0; /* lock game in hash as draw*/\r
R-=i/FAC; /*** total captd material ***/\r
v=m; /* (prevent fail-lows on */\r
} /* K-capt. replies) */\r
SHAMAX( pl[k]+=!!t; ) pl[t&31]+=!!t;\r
- b[G]=b[FF];b[FF]=b[y]=0;b[x]=u;b[H]=t; /* undo move,G can be dummy */\r
+ b[G]=rk;b[FF]=b[y]=0;b[x]=u;b[H]=t; /* undo move,G can be dummy */\r
} /* if non-castling */\r
if(z&S&&K==I&d>2&v>V&v<l){int *p=ps;char X,Y;\r
if(Post){\r