entry = hashTable + (f.hashKey + (stm + 9849 + f.rights)*(m.epSqr + 51451) & hashMask);
if(entry->lock == hashKeyH || (++entry)->lock == hashKeyH || (++entry)->lock == hashKeyH || (++entry)->lock == hashKeyH) { // 4 possible entries
int score = entry->score, d = entry->depth;
+ signed char p;
+
f.checker = entry->checker; f.checkDist = 0;
if(f.checker != CK_NONE) { // in check; restore info needed in evasion test
if(sqr2file[f.checker] != 12) f.checkDir = 0; else { // off-board represents on-board distant check
hashMove = entry->move;
if(hashMove && board[hashMove>>8&255] == 0) {char s[100];sprintf(s,"bad hash move %16llx: %s\n", f.hashKey, MoveToText(hashMove)); Dump(s); }
hit = 1;
+ p = board[hashMove>>8&255];
+ if(hashMove && ((p & stm) == 0 || p == -1)) {
+ hashMove = 0; f.checker = CK_UNKNOWN;
+ }
} else hit = hashMove = 0, f.checker = CK_UNKNOWN;
moveSP += 48; // create space for non-captures