public static Move algebraicHelper(long possorig, int orow, int ocol, int drow, int dcol)
	{
		//by default, go from 0 to 63 and check
		int count = 0;
		int start = 0;
		int end = 64;
		int inc = 1;
		if (orow != -1) //if we know the origin row
		{
			start = (7 - orow)*8;
			end = start + 8;
		}
		else if (ocol != -1) //if we know the origin column
		{
			start = 7 - ocol;
			inc = 8;
		}
		
		for (int i = start; i < end; i = i + inc)
		{
			if (((possorig >>> i) & 1L) == 1)
			{
				orow = i / 8;
				ocol = i % 8;
				count++;
			}
		}
		
		if (count > 1 || count == 0)
			return null; //not specific enough or no choices
		return new Move(7 - orow, 7 - ocol, drow, dcol);
	}