public int getGameResult() {
    assert (isGameOver() == true);

    // Test if there are no rabbits left
    // Rare case possible no rabbits could win!
    if (!use_no_rabbits_is_a_loss) {
      if ((piece_bb[0] | piece_bb[1]) == 0) {
        return SCORE_DRAW;
      }
    }

    // Test for rabbit goal / all rabbit capture
    int gold_goal, silver_goal;
    if (use_no_rabbits_is_a_loss) {
      gold_goal = (((piece_bb[0] & RANK_8) != 0) || (piece_bb[1] == 0)) ? 1 : 0;
      silver_goal = (((piece_bb[1] & RANK_1) != 0) || (piece_bb[0] == 0)) ? 1 :
        0;
    } else {
      gold_goal = ((piece_bb[0] & RANK_8) != 0) ? 1 : 0;
      silver_goal = ((piece_bb[1] & RANK_1) != 0) ? 1 : 0;
    }
    int steps = total_steps & 0x07;
    int index = steps + (gold_goal << 4) + (silver_goal << 3);

    assert (table_get_game_result[index] != NA);
    return table_get_game_result[index];

  }