Program: 76878
Project: 76878
Buggy source:
private final int jjMoveNfa_2(int startState,int curPos){
  int[] nextStates;
  int startsAt=0;
  jjnewStateCnt=7;
  int i=1;
  jjstateSet[0]=startState;
  int j, kind=0x7fffffff;
  for (; ; ) {
    if (++jjround == 0x7fffffff)     ReInitRounds();
    if (curChar < 64) {
      long l=1L << curChar;
      MatchLoop:       do {
switch (jjstateSet[--i]) {
case 0:
          if ((0xbfffff7affffd9ffL & l) != 0L) {
            if (kind > 17)             kind=17;
            jjCheckNAdd(6);
          }
 else           if (curChar == 34)           jjCheckNAddTwoStates(4,5);
 else           if (curChar == 39)           jjCheckNAddTwoStates(1,2);
        break;
case 1:
      if ((0xffffff7fffffffffL & l) != 0L)       jjCheckNAddTwoStates(1,2);
    break;
case 2:
  if (curChar == 39 && kind > 17)   kind=17;
break;
case 3:
if (curChar == 34) jjCheckNAddTwoStates(4,5);
break;
case 4:
if ((0xfffffffbffffffffL & l) != 0L) jjCheckNAddTwoStates(4,5);
break;
case 5:
if (curChar == 34 && kind > 17) kind=17;
break;
case 6:
if ((0xbfffff7affffd9ffL & l) == 0L) break;
if (kind > 17) kind=17;
jjCheckNAdd(6);
break;
default :
break;
}
}
 while (i != startsAt);
}
 else if (curChar < 128) {
long l=1L << (curChar & 077);
MatchLoop: do {
switch (jjstateSet[--i]) {
case 0:
case 6:
if (kind > 17) kind=17;
jjCheckNAdd(6);
break;
case 1:
jjAddStates(2,3);
break;
case 4:
jjAddStates(4,5);
break;
default :
break;
}
}
 while (i != startsAt);
}
 else {
int hiByte=(int)(curChar >> 8);
int i1=hiByte >> 6;
long l1=1L << (hiByte & 077);
int i2=(curChar & 0xff) >> 6;
long l2=1L << (curChar & 077);
MatchLoop: do {
switch (jjstateSet[--i]) {
case 0:
case 6:
if (!jjCanMove_0(hiByte,i1,i2,l1,l2)) break;
if (kind > 17) kind=17;
jjCheckNAdd(6);
break;
case 1:
if (jjCanMove_0(hiByte,i1,i2,l1,l2)) jjAddStates(2,3);
break;
case 4:
if (jjCanMove_0(hiByte,i1,i2,l1,l2)) jjAddStates(4,5);
break;
default :
break;
}
}
 while (i != startsAt);
}
if (kind != 0x7fffffff) {
jjmatchedKind=kind;
jjmatchedPos=curPos;
kind=0x7fffffff;
}
++curPos;
if ((i=jjnewStateCnt) == (startsAt=7 - (jjnewStateCnt=startsAt))) return curPos;
try {
curChar=input_stream.readChar();
}
 catch (java.io.IOException e) {
return curPos;
}
}
}

Fixed version (ground truth):
private final int jjMoveNfa_2(int startState,int curPos){
  int startsAt=0;
  jjnewStateCnt=7;
  int i=1;
  jjstateSet[0]=startState;
  int kind=0x7fffffff;
  for (; ; ) {
    if (++jjround == 0x7fffffff)     ReInitRounds();
    if (curChar < 64) {
      long l=1L << curChar;
      do {
switch (jjstateSet[--i]) {
case 0:
          if ((0xbfffff7affffd9ffL & l) != 0L) {
            if (kind > 17)             kind=17;
            jjCheckNAdd(6);
          }
 else           if (curChar == 34)           jjCheckNAddTwoStates(4,5);
 else           if (curChar == 39)           jjCheckNAddTwoStates(1,2);
        break;
case 1:
      if ((0xffffff7fffffffffL & l) != 0L)       jjCheckNAddTwoStates(1,2);
    break;
case 2:
  if (curChar == 39 && kind > 17)   kind=17;
break;
case 3:
if (curChar == 34) jjCheckNAddTwoStates(4,5);
break;
case 4:
if ((0xfffffffbffffffffL & l) != 0L) jjCheckNAddTwoStates(4,5);
break;
case 5:
if (curChar == 34 && kind > 17) kind=17;
break;
case 6:
if ((0xbfffff7affffd9ffL & l) == 0L) break;
if (kind > 17) kind=17;
jjCheckNAdd(6);
break;
default :
break;
}
}
 while (i != startsAt);
}
 else if (curChar < 128) {
do {
switch (jjstateSet[--i]) {
case 0:
case 6:
if (kind > 17) kind=17;
jjCheckNAdd(6);
break;
case 1:
jjAddStates(2,3);
break;
case 4:
jjAddStates(4,5);
break;
default :
break;
}
}
 while (i != startsAt);
}
 else {
int hiByte=(int)(curChar >> 8);
int i1=hiByte >> 6;
long l1=1L << (hiByte & 077);
int i2=(curChar & 0xff) >> 6;
long l2=1L << (curChar & 077);
do {
switch (jjstateSet[--i]) {
case 0:
case 6:
if (!jjCanMove_0(hiByte,i1,i2,l1,l2)) break;
if (kind > 17) kind=17;
jjCheckNAdd(6);
break;
case 1:
if (jjCanMove_0(hiByte,i1,i2,l1,l2)) jjAddStates(2,3);
break;
case 4:
if (jjCanMove_0(hiByte,i1,i2,l1,l2)) jjAddStates(4,5);
break;
default :
break;
}
}
 while (i != startsAt);
}
if (kind != 0x7fffffff) {
jjmatchedKind=kind;
jjmatchedPos=curPos;
kind=0x7fffffff;
}
++curPos;
if ((i=jjnewStateCnt) == (startsAt=7 - (jjnewStateCnt=startsAt))) return curPos;
try {
curChar=input_stream.readChar();
}
 catch (java.io.IOException e) {
return curPos;
}
}
}