Program: 5681
Project: 5681
Buggy source:
public void triggerInterrupts(long cycles){
  boolean trigger=false;
  int tIndex=0;
  for (int i=0, n=noCompare; i < n; i++) {
    boolean newTrigger=(tcctl[i] & CC_TRIGGER_INT) == CC_TRIGGER_INT;
    trigger=trigger | newTrigger;
    if (i == 0) {
      if (DEBUG) {
        System.out.println(getName() + "String_Node_Str" + tccr[0]+ "String_Node_Str"+ counter+ "String_Node_Str"+ cycles+ "String_Node_Str"+ expCaptureTime[0]);
      }
      if (counter != tccr[0]) {
        System.out.print("String_Node_Str");
        System.out.println(getName() + "String_Node_Str" + tccr[0]+ "String_Node_Str"+ counter+ "String_Node_Str"+ cycles+ "String_Node_Str"+ expCaptureTime[0]);
      }
      core.flagInterrupt(ccr0Vector,this,trigger);
      if (trigger) {
        lastTIV=0;
        triggerTime=cycles;
        return;
      }
    }
 else {
      if (newTrigger) {
        if (DEBUG) {
          System.out.println(getName() + "String_Node_Str" + i+ "String_Node_Str"+ cycles+ "String_Node_Str"+ i+ "String_Node_Str"+ tccr[i]+ "String_Node_Str"+ counter);
        }
        tIndex=i;
      }
    }
  }
  if (trigger) {
    lastTIV=memory[tiv]=tIndex * 2;
    triggerTime=cycles;
    if (DEBUG)     System.out.println(getName() + "String_Node_Str" + tIndex+ "String_Node_Str"+ cycles+ "String_Node_Str"+ tIndex+ "String_Node_Str"+ tccr[tIndex]+ "String_Node_Str"+ counter);
    if (counter != tccr[tIndex]) {
      System.out.print("String_Node_Str");
      System.out.println(getName() + "String_Node_Str" + tIndex+ "String_Node_Str"+ cycles+ "String_Node_Str"+ tIndex+ "String_Node_Str"+ tccr[tIndex]+ "String_Node_Str"+ counter);
    }
  }
  if (!trigger) {
    if (interruptEnable && interruptPending) {
      trigger=true;
      lastTIV=memory[tiv]=timerOverflow;
    }
  }
  core.flagInterrupt(ccr1Vector,this,trigger);
}

Fixed version (ground truth):
public void triggerInterrupts(long cycles){
  boolean trigger=false;
  int tIndex=0;
  for (int i=0, n=noCompare; i < n; i++) {
    boolean newTrigger=(tcctl[i] & CC_TRIGGER_INT) == CC_TRIGGER_INT;
    trigger=trigger | newTrigger;
    if (i == 0) {
      if (DEBUG) {
        System.out.println(getName() + "String_Node_Str" + tccr[0]+ "String_Node_Str"+ counter+ "String_Node_Str"+ cycles+ "String_Node_Str"+ expCaptureTime[0]);
      }
      if (counter != tccr[0] && trigger) {
        System.out.print("String_Node_Str");
        System.out.println(getName() + "String_Node_Str" + tccr[0]+ "String_Node_Str"+ counter+ "String_Node_Str"+ cycles+ "String_Node_Str"+ expCaptureTime[0]);
      }
      core.flagInterrupt(ccr0Vector,this,trigger);
      if (trigger) {
        lastTIV=0;
        triggerTime=cycles;
        return;
      }
    }
 else {
      if (newTrigger) {
        if (DEBUG) {
          System.out.println(getName() + "String_Node_Str" + i+ "String_Node_Str"+ cycles+ "String_Node_Str"+ i+ "String_Node_Str"+ tccr[i]+ "String_Node_Str"+ counter);
        }
        tIndex=i;
        break;
      }
    }
  }
  if (trigger) {
    lastTIV=memory[tiv]=tIndex * 2;
    triggerTime=cycles;
    if (DEBUG)     System.out.println(getName() + "String_Node_Str" + tIndex+ "String_Node_Str"+ cycles+ "String_Node_Str"+ tIndex+ "String_Node_Str"+ tccr[tIndex]+ "String_Node_Str"+ counter);
    if (counter != tccr[tIndex]) {
      System.out.print("String_Node_Str");
      System.out.println(getName() + "String_Node_Str" + tIndex+ "String_Node_Str"+ cycles+ "String_Node_Str"+ tIndex+ "String_Node_Str"+ tccr[tIndex]+ "String_Node_Str"+ counter+ "String_Node_Str"+ expCaptureTime[tIndex]);
    }
  }
  if (!trigger) {
    if (interruptEnable && interruptPending) {
      trigger=true;
      lastTIV=memory[tiv]=timerOverflow;
    }
  }
  core.flagInterrupt(ccr1Vector,this,trigger);
}