// Pieces moves
mlist = generate_piece_checks<PAWN>(pos, mlist, us, dc, ksq);
// Pieces moves
mlist = generate_piece_checks<PAWN>(pos, mlist, us, dc, ksq);
// The move is pseudo-legal, check if it is also legal
return pos.pl_move_is_legal(m, pinned);
// The move is pseudo-legal, check if it is also legal
return pos.pl_move_is_legal(m, pinned);
Square g1 = relative_square(us, SQ_G1);
Square f1 = relative_square(us, SQ_F1);
Square g1 = relative_square(us, SQ_G1);
Square f1 = relative_square(us, SQ_F1);
Square c1 = relative_square(us, SQ_C1);
Square d1 = relative_square(us, SQ_D1);
Square c1 = relative_square(us, SQ_C1);
Square d1 = relative_square(us, SQ_D1);
Square rsq = (Side == KING_SIDE ? pos.initial_kr_square(us) : pos.initial_qr_square(us));
Square s1 = relative_square(us, Side == KING_SIDE ? SQ_G1 : SQ_C1);
Square rsq = (Side == KING_SIDE ? pos.initial_kr_square(us) : pos.initial_qr_square(us));
Square s1 = relative_square(us, Side == KING_SIDE ? SQ_G1 : SQ_C1);
// It is a bit complicated to correctly handle Chess960
for (s = Min(ksq, s1); s <= Max(ksq, s1); s++)
// It is a bit complicated to correctly handle Chess960
for (s = Min(ksq, s1); s <= Max(ksq, s1); s++)