Program: 164609
Project: 164609
Buggy source:
private void readBytecodeInstructionsInCodeBlock(@Nonnegative int codeStart,@Nonnegative int codeEnd){
  char[] c=buf;
  byte[] b=code;
  int u=codeStart;
  while (u < codeEnd) {
    int offset=u - codeStart;
    readLabelAndLineNumber(offset);
    int opcode=b[u] & 0xFF;
switch (TYPE[opcode]) {
case NOARG:
      mv.visitInsn(opcode);
    u++;
  break;
case IMPLVAR:
readImplicitVarInstruction(opcode);
u++;
break;
case LABEL:
Label targetLabel=labels[offset + readShort(u + 1)];
mv.visitJumpInsn(opcode,targetLabel);
u+=3;
break;
case LABELW:
Label targetLabelW=labels[offset + readInt(u + 1)];
mv.visitJumpInsn(opcode - 33,targetLabelW);
u+=5;
break;
case InstructionType.WIDE:
u=readWideInstruction(u);
break;
case TABL:
u=readTableSwitchInstruction(u,offset);
break;
case LOOK:
u=readLookupSwitchInstruction(u,offset);
break;
case VAR:
int var=b[u + 1] & 0xFF;
mv.visitVarInsn(opcode,var);
u+=2;
break;
case SBYTE:
byte byteOperand=b[u + 1];
mv.visitIntInsn(opcode,byteOperand);
u+=2;
break;
case SHORT:
int shortOperand=readShort(u + 1);
mv.visitIntInsn(opcode,shortOperand);
u+=3;
break;
case InstructionType.LDC:
Object cst=readConst(b[u + 1] & 0xFF,c);
mv.visitLdcInsn(cst);
u+=2;
break;
case LDCW:
Object cstWide=readConst(readUnsignedShort(u + 1),c);
mv.visitLdcInsn(cstWide);
u+=3;
break;
case FIELDORMETH:
case ITFMETH:
readFieldOrInvokeInstruction(u,opcode);
u+=opcode == INVOKEINTERFACE ? 5 : 3;
break;
case INDYMETH:
u=readInvokeDynamicInstruction(u);
break;
case InstructionType.TYPE:
String typeDesc=readClass(u + 1);
mv.visitTypeInsn(opcode,typeDesc);
u+=3;
break;
case IINC:
int incCar=b[u + 1] & 0xFF;
byte increment=b[u + 2];
mv.visitIincInsn(incCar,increment);
u+=3;
break;
default :
String arrayTypeDesc=readClass(u + 1);
int dims=b[u + 3] & 0xFF;
mv.visitMultiANewArrayInsn(arrayTypeDesc,dims);
u+=4;
break;
}
}
}

Fixed version (ground truth):
private void readBytecodeInstructionsInCodeBlock(@Nonnegative int codeStart,@Nonnegative int codeEnd){
  char[] c=buf;
  byte[] b=code;
  int u=codeStart;
  while (u < codeEnd) {
    int offset=u - codeStart;
    readLabelAndLineNumber(offset);
    int opcode=b[u] & 0xFF;
switch (TYPE[opcode]) {
case NOARG:
      mv.visitInsn(opcode);
    u++;
  break;
case IMPLVAR:
readImplicitVarInstruction(opcode);
u++;
break;
case LABEL:
Label targetLabel=labels[offset + readShort(u + 1)];
mv.visitJumpInsn(opcode,targetLabel);
u+=3;
break;
case LABELW:
Label targetLabelW=labels[offset + readInt(u + 1)];
mv.visitJumpInsn(opcode - 33,targetLabelW);
u+=5;
break;
case WIDE_INSN:
u=readWideInstruction(u);
break;
case TABL_INSN:
u=readTableSwitchInstruction(u,offset);
break;
case LOOK_INSN:
u=readLookupSwitchInstruction(u,offset);
break;
case VAR:
int var=b[u + 1] & 0xFF;
mv.visitVarInsn(opcode,var);
u+=2;
break;
case SBYTE:
byte byteOperand=b[u + 1];
mv.visitIntInsn(opcode,byteOperand);
u+=2;
break;
case SHORT:
int shortOperand=readShort(u + 1);
mv.visitIntInsn(opcode,shortOperand);
u+=3;
break;
case LDC_INSN:
Object cst=readConst(b[u + 1] & 0xFF,c);
mv.visitLdcInsn(cst);
u+=2;
break;
case LDCW_INSN:
Object cstWide=readConst(readUnsignedShort(u + 1),c);
mv.visitLdcInsn(cstWide);
u+=3;
break;
case FIELDORMETH:
case ITFMETH:
readFieldOrInvokeInstruction(u,opcode);
u+=opcode == INVOKEINTERFACE ? 5 : 3;
break;
case INDYMETH:
u=readInvokeDynamicInstruction(u);
break;
case TYPE_INSN:
String typeDesc=readClass(u + 1);
mv.visitTypeInsn(opcode,typeDesc);
u+=3;
break;
case IINC_INSN:
int incCar=b[u + 1] & 0xFF;
byte increment=b[u + 2];
mv.visitIincInsn(incCar,increment);
u+=3;
break;
case MANA_INSN:
default :
String arrayTypeDesc=readClass(u + 1);
int dims=b[u + 3] & 0xFF;
mv.visitMultiANewArrayInsn(arrayTypeDesc,dims);
u+=4;
break;
}
}
}