in pachi_py/goutil.cpp [23:33]
void GetLegalMoves(PachiBoardPtr b, stone color, bool filter_suicides, std::vector<coord_t>* out) {
out->clear(); out->push_back(pass);
board* pb = b->pachiboard();
foreach_free_point(pb) {
assert(board_at(pb, c) == S_NONE);
bool valid = filter_suicides ? board_is_valid_play_no_suicide(pb, color, c) : board_is_valid_play(pb, color, c);
if (valid) {
out->push_back(c);
}
} foreach_free_point_end;
}