// for each legal hand card combo
// ------------------------------------------------------------
byte[] boardCards = new byte[5];
byte[] holeArray;
Combinations boardCardsIterator = new Combinations(Card.ALLCARDSINDEX, 5);
int handScore;
int opponentScore;
double timer1 = System.currentTimeMillis();
double progressCounter = 0;
while (boardCardsIterator.hasMoreElements()) {
progressCounter++;
if (progressCounter % 12995 == 0) {
System.out.println ((System.currentTimeMillis() - timer1) + ": " + (progressCounter / 2598960) + "% done");
}
// get 5 board cards
boardCards = boardCardsIterator.nextElement();
// figure out possible hole cards
Combinations holeCards = new Combinations(
Helper.getRemainingCards(boardCards), 2);
int scores[][] = new int[Card.NUM_CARDS][Card.NUM_CARDS];
short winCount[][] = new short[Card.NUM_CARDS][Card.NUM_CARDS];
short tieCount[][] = new short[Card.NUM_CARDS][Card.NUM_CARDS];
short loseCount[][] = new short[Card.NUM_CARDS][Card.NUM_CARDS];
byte doneCard1[] = new byte[NUM_HOLE_HANDS];
byte doneCard2[] = new byte[NUM_HOLE_HANDS];
byte b1[] = new byte[NUM_HOLE_HANDS];
byte b2[] = new byte[NUM_HOLE_HANDS];
byte b3[] = new byte[NUM_HOLE_HANDS];
byte b4[] = new byte[NUM_HOLE_HANDS];
byte b5[] = new byte[NUM_HOLE_HANDS];
int doneCardPointer = 0;
// iterate over each possible hole card combo,
// assign score, winCount, tieCount, and loseCount
while(holeCards.hasMoreElements()) {
holeArray = holeCards.nextElement();
handScore = HandEvaluator.rankHand_Java(Helper.mergeByteArrays(boardCards, holeArray));
for(int i = 0; i < doneCardPointer; i++) {
if(
(doneCard1[i] != holeArray[0]) &&