Program: 62217
Project: 62217
Buggy source:
/** 
 * Reads list of actions from the stream. Reading ends with ActionEndFlag(=0) or end of the stream.
 * @return List of actions
 * @throws IOException
 */
public static List<Action> readActionList(ReReadableInputStream rri,int version,int ip) throws IOException {
  List<Action> retdups=new ArrayList<Action>();
  ConstantPool cpool=new ConstantPool();
  Stack<GraphTargetItem> stack=new Stack<GraphTargetItem>();
  List localData=Helper.toList(new HashMap<Integer,String>(),new HashMap<String,GraphTargetItem>(),new HashMap<String,GraphTargetItem>());
  SWFInputStream sis=new SWFInputStream(rri,version);
  boolean goesPrev=false;
  int method=1;
  try {
    goesPrev=readActionListAtPos(false,localData,stack,cpool,sis,rri,ip,retdups,ip);
  }
 catch (  Exception ex) {
    method=2;
    goesPrev=readActionListAtPos(true,localData,stack,cpool,sis,rri,ip,retdups,ip);
  }
  if (goesPrev) {
  }
 else {
    for (int i=0; i < ip; i++) {
      retdups.remove(0);
    }
  }
  List<Action> ret=new ArrayList<Action>();
  Action last=null;
  for (  Action a : retdups) {
    if (a != last) {
      ret.add(a);
    }
    last=a;
  }
  List<ConstantPool> pools=new ArrayList<ConstantPool>();
  pools=getConstantPool(new ActionGraphSource(ret,version,new HashMap<Integer,String>(),new HashMap<String,GraphTargetItem>(),new HashMap<String,GraphTargetItem>()),ip);
  if (pools.size() == 1) {
    Action.setConstantPool(ret,pools.get(0));
  }
  if (goesPrev && (!DEOBFUSCATION_ALL_CODE_IN_PREVIOUS_TAG)) {
    ActionJump aj=new ActionJump(ip);
    int skip=aj.getBytes(version).length;
    for (    Action a : ret) {
      a.setAddress(a.getAddress() + skip,version);
    }
    ret.add(0,aj);
  }
  String s=null;
  try {
    s=Highlighting.stripHilights(Action.actionsToString(ret,null,version,false));
    ret=ASMParser.parse(false,new ByteArrayInputStream(s.getBytes()),SWF.DEFAULT_VERSION);
  }
 catch (  ParseException ex) {
    Logger.getLogger(SWFInputStream.class.getName()).log(Level.SEVERE,"String_Node_Str",ex);
  }
  return ret;
}

Fixed version (ground truth):
/** 
 * Reads list of actions from the stream. Reading ends with ActionEndFlag(=0) or end of the stream.
 * @return List of actions
 * @throws IOException
 */
public static List<Action> readActionList(ReReadableInputStream rri,int version,int ip) throws IOException {
  List<Action> retdups=new ArrayList<Action>();
  ConstantPool cpool=new ConstantPool();
  Stack<GraphTargetItem> stack=new Stack<GraphTargetItem>();
  List localData=Helper.toList(new HashMap<Integer,String>(),new HashMap<String,GraphTargetItem>(),new HashMap<String,GraphTargetItem>());
  SWFInputStream sis=new SWFInputStream(rri,version);
  boolean goesPrev=false;
  int method=1;
  try {
    goesPrev=readActionListAtPos(false,localData,stack,cpool,sis,rri,ip,retdups,ip);
  }
 catch (  Exception ex) {
    method=2;
    goesPrev=readActionListAtPos(true,localData,stack,cpool,sis,rri,ip,retdups,ip);
  }
  if (goesPrev) {
  }
 else {
    if (!retdups.isEmpty()) {
      for (int i=0; i < ip; i++) {
        retdups.remove(0);
      }
    }
  }
  List<Action> ret=new ArrayList<Action>();
  Action last=null;
  for (  Action a : retdups) {
    if (a != last) {
      ret.add(a);
    }
    last=a;
  }
  List<ConstantPool> pools=new ArrayList<ConstantPool>();
  pools=getConstantPool(new ActionGraphSource(ret,version,new HashMap<Integer,String>(),new HashMap<String,GraphTargetItem>(),new HashMap<String,GraphTargetItem>()),ip);
  if (pools.size() == 1) {
    Action.setConstantPool(ret,pools.get(0));
  }
  if (goesPrev && (!DEOBFUSCATION_ALL_CODE_IN_PREVIOUS_TAG)) {
    ActionJump aj=new ActionJump(ip);
    int skip=aj.getBytes(version).length;
    for (    Action a : ret) {
      a.setAddress(a.getAddress() + skip,version);
    }
    ret.add(0,aj);
  }
  String s=null;
  try {
    s=Highlighting.stripHilights(Action.actionsToString(ret,null,version,false));
    ret=ASMParser.parse(false,new ByteArrayInputStream(s.getBytes()),SWF.DEFAULT_VERSION);
  }
 catch (  ParseException ex) {
    Logger.getLogger(SWFInputStream.class.getName()).log(Level.SEVERE,"String_Node_Str",ex);
  }
  return ret;
}