Program: 62005
Project: 62005
Buggy source:
/** 
 * Converts list of actions to ASM source
 * @param listeners
 * @param address
 * @param list List of actions
 * @param importantOffsets List of important offsets to mark as labels
 * @param constantPool Constant pool
 * @param version SWF version
 * @param hex Add hexadecimal?
 * @param swfPos
 * @param path
 * @return ASM source as String
 */
private static String actionsToString(List<DisassemblyListener> listeners,long address,List<Action> list,List<Long> importantOffsets,List<String> constantPool,int version,boolean hex,boolean highlight,long swfPos,String path){
  long offset;
  if (importantOffsets == null) {
    importantOffsets=getActionsAllRefs(list,version);
  }
  List<ConstantPool> cps=SWFInputStream.getConstantPool(new ArrayList<DisassemblyListener>(),new ActionGraphSource(list,version,new HashMap<Integer,String>(),new HashMap<String,GraphTargetItem>(),new HashMap<String,GraphTargetItem>()),0,version,path);
  if (!cps.isEmpty()) {
    setConstantPool(list,cps.get(cps.size() - 1));
  }
  HashMap<Long,List<GraphSourceItemContainer>> containers=new HashMap<>();
  HashMap<GraphSourceItemContainer,Integer> containersPos=new HashMap<>();
  offset=address;
  int pos=-1;
  boolean lastPush=false;
  StringBuilder ret=new StringBuilder();
  for (  GraphSourceItem s : list) {
    for (int i=0; i < listeners.size(); i++) {
      listeners.get(i).progress("String_Node_Str",pos + 2,list.size());
    }
    Action a=null;
    if (s instanceof Action) {
      a=(Action)s;
    }
    pos++;
    if (hex) {
      if (lastPush) {
        ret.append("String_Node_Str");
        lastPush=false;
      }
      ret.append("String_Node_Str");
      ;
      ret.append(Helper.bytesToHexString(a.getBytes(version)));
      ret.append("String_Node_Str");
    }
    offset=a.getAddress();
    if ((!(a.isIgnored())) && (a instanceof GraphSourceItemContainer)) {
      GraphSourceItemContainer cnt=(GraphSourceItemContainer)a;
      containersPos.put(cnt,0);
      List<Long> sizes=cnt.getContainerSizes();
      long addr=((Action)cnt).getAddress() + cnt.getHeaderSize();
      for (      Long size : sizes) {
        addr+=size;
        if (size == 0) {
          continue;
        }
        if (!containers.containsKey(addr)) {
          containers.put(addr,new ArrayList<GraphSourceItemContainer>());
        }
        containers.get(addr).add(cnt);
      }
    }
    if (containers.containsKey(offset)) {
      for (int i=0; i < containers.get(offset).size(); i++) {
        ret.append("String_Node_Str");
        GraphSourceItemContainer cnt=containers.get(offset).get(i);
        int cntPos=containersPos.get(cnt);
        ret.append(cnt.getASMSourceBetween(cntPos));
        cntPos++;
        containersPos.put(cnt,cntPos);
      }
    }
    if (importantOffsets.contains(offset)) {
      if (lastPush) {
        ret.append("String_Node_Str");
        lastPush=false;
      }
      ret.append("String_Node_Str");
      ret.append(Helper.formatAddress(offset));
      ret.append("String_Node_Str");
    }
    if (a.replaceWith != null) {
      if (lastPush) {
        ret.append("String_Node_Str");
        lastPush=false;
      }
      ret.append(highlight ? Highlighting.hilighOffset("String_Node_Str",offset) : "String_Node_Str");
      ret.append(a.replaceWith.getASMSource(list,importantOffsets,constantPool,version,hex));
      ret.append("String_Node_Str");
    }
 else     if (a.isIgnored()) {
      if (lastPush) {
        ret.append("String_Node_Str");
        lastPush=false;
      }
      int len=0;
      if (pos + 1 < list.size()) {
        len=(int)(((Action)(list.get(pos + 1))).getAddress() - a.getAddress());
      }
 else {
        len=a.getBytes(version).length;
      }
      if (!(a instanceof ActionEnd)) {
        for (int i=0; i < len; i++) {
          ret.append("String_Node_Str");
        }
      }
    }
 else {
      if (a.beforeInsert != null) {
        if (lastPush) {
          ret.append("String_Node_Str");
          lastPush=false;
        }
        ret.append(a.beforeInsert.getASMSource(list,importantOffsets,constantPool,version,hex));
        ret.append("String_Node_Str");
      }
      String add="String_Node_Str";
      if (a instanceof ActionIf) {
        add="String_Node_Str" + ((ActionIf)a).getJumpOffset();
      }
      if (a instanceof ActionJump) {
        add="String_Node_Str" + ((ActionJump)a).getJumpOffset();
      }
      add="String_Node_Str" + Helper.formatAddress(offset) + add;
      add="String_Node_Str";
      if ((a instanceof ActionPush) && lastPush) {
        ret.append("String_Node_Str");
        ret.append(((ActionPush)a).paramsToStringReplaced(list,importantOffsets,constantPool,version,hex,highlight));
      }
 else {
        if (lastPush) {
          ret.append("String_Node_Str");
          lastPush=false;
        }
        ret.append(highlight ? Highlighting.hilighOffset("String_Node_Str",offset) : "String_Node_Str");
        if (a instanceof ActionIf) {
          ActionIf aif=(ActionIf)a;
          if (aif.jumpUsed && !aif.ignoreUsed) {
            aif.setFixBranch(0);
          }
          if (!aif.jumpUsed && aif.ignoreUsed) {
            aif.setFixBranch(1);
          }
        }
        int fixBranch=a.getFixBranch();
        if (fixBranch > -1) {
          if (a instanceof ActionIf) {
            ret.append("String_Node_Str");
            if (fixBranch == 0) {
              ret.append("String_Node_Str");
              ret.append(Helper.formatAddress(a.getAddress() + a.getBytes(version).length + ((ActionIf)a).getJumpOffset()));
            }
 else {
            }
          }
        }
 else {
          ret.append(a.getASMSourceReplaced(list,importantOffsets,constantPool,version,hex,highlight));
        }
        ret.append(a.isIgnored() ? "String_Node_Str" : "String_Node_Str");
        ret.append(add);
        ret.append((a instanceof ActionPush) ? "String_Node_Str" : "String_Node_Str");
      }
      if (a instanceof ActionPush) {
        lastPush=true;
      }
 else {
        lastPush=false;
      }
      if (a.afterInsert != null) {
        if (lastPush) {
          ret.append("String_Node_Str");
          lastPush=false;
        }
        ret.append(a.afterInsert.getASMSource(list,importantOffsets,constantPool,version,hex));
        ret.append("String_Node_Str");
      }
    }
    offset+=a.getBytes(version).length;
  }
  if (lastPush) {
    ret.append("String_Node_Str");
  }
  if (containers.containsKey(offset)) {
    for (int i=0; i < containers.get(offset).size(); i++) {
      ret.append("String_Node_Str");
      GraphSourceItemContainer cnt=containers.get(offset).get(i);
      int cntPos=containersPos.get(cnt);
      ret.append(cnt.getASMSourceBetween(cntPos));
      cntPos++;
      containersPos.put(cnt,cntPos);
    }
  }
  if (importantOffsets.contains(offset)) {
    ret.append("String_Node_Str");
    ret.append(Helper.formatAddress(offset));
    ret.append("String_Node_Str");
  }
  return ret.toString();
}

Fixed version (ground truth):
/** 
 * Converts list of actions to ASM source
 * @param listeners
 * @param address
 * @param list List of actions
 * @param importantOffsets List of important offsets to mark as labels
 * @param constantPool Constant pool
 * @param version SWF version
 * @param hex Add hexadecimal?
 * @param swfPos
 * @param path
 * @return ASM source as String
 */
private static String actionsToString(List<DisassemblyListener> listeners,long address,List<Action> list,List<Long> importantOffsets,List<String> constantPool,int version,boolean hex,boolean highlight,long swfPos,String path){
  long offset;
  if (importantOffsets == null) {
    importantOffsets=getActionsAllRefs(list,version);
  }
  HashMap<Long,List<GraphSourceItemContainer>> containers=new HashMap<>();
  HashMap<GraphSourceItemContainer,Integer> containersPos=new HashMap<>();
  offset=address;
  int pos=-1;
  boolean lastPush=false;
  StringBuilder ret=new StringBuilder();
  for (  GraphSourceItem s : list) {
    for (int i=0; i < listeners.size(); i++) {
      listeners.get(i).progress("String_Node_Str",pos + 2,list.size());
    }
    Action a=null;
    if (s instanceof Action) {
      a=(Action)s;
    }
    pos++;
    if (hex) {
      if (lastPush) {
        ret.append("String_Node_Str");
        lastPush=false;
      }
      ret.append("String_Node_Str");
      ;
      ret.append(Helper.bytesToHexString(a.getBytes(version)));
      ret.append("String_Node_Str");
    }
    offset=a.getAddress();
    if ((!(a.isIgnored())) && (a instanceof GraphSourceItemContainer)) {
      GraphSourceItemContainer cnt=(GraphSourceItemContainer)a;
      containersPos.put(cnt,0);
      List<Long> sizes=cnt.getContainerSizes();
      long addr=((Action)cnt).getAddress() + cnt.getHeaderSize();
      for (      Long size : sizes) {
        addr+=size;
        if (size == 0) {
          continue;
        }
        if (!containers.containsKey(addr)) {
          containers.put(addr,new ArrayList<GraphSourceItemContainer>());
        }
        containers.get(addr).add(cnt);
      }
    }
    if (containers.containsKey(offset)) {
      for (int i=0; i < containers.get(offset).size(); i++) {
        ret.append("String_Node_Str");
        GraphSourceItemContainer cnt=containers.get(offset).get(i);
        int cntPos=containersPos.get(cnt);
        ret.append(cnt.getASMSourceBetween(cntPos));
        cntPos++;
        containersPos.put(cnt,cntPos);
      }
    }
    if (importantOffsets.contains(offset)) {
      if (lastPush) {
        ret.append("String_Node_Str");
        lastPush=false;
      }
      ret.append("String_Node_Str");
      ret.append(Helper.formatAddress(offset));
      ret.append("String_Node_Str");
    }
    if (a.replaceWith != null) {
      if (lastPush) {
        ret.append("String_Node_Str");
        lastPush=false;
      }
      ret.append(highlight ? Highlighting.hilighOffset("String_Node_Str",offset) : "String_Node_Str");
      ret.append(a.replaceWith.getASMSource(list,importantOffsets,constantPool,version,hex));
      ret.append("String_Node_Str");
    }
 else     if (a.isIgnored()) {
      if (lastPush) {
        ret.append("String_Node_Str");
        lastPush=false;
      }
      int len=0;
      if (pos + 1 < list.size()) {
        len=(int)(((Action)(list.get(pos + 1))).getAddress() - a.getAddress());
      }
 else {
        len=a.getBytes(version).length;
      }
      if (!(a instanceof ActionEnd)) {
        for (int i=0; i < len; i++) {
          ret.append("String_Node_Str");
        }
      }
    }
 else {
      if (a.beforeInsert != null) {
        if (lastPush) {
          ret.append("String_Node_Str");
          lastPush=false;
        }
        ret.append(a.beforeInsert.getASMSource(list,importantOffsets,constantPool,version,hex));
        ret.append("String_Node_Str");
      }
      String add="String_Node_Str";
      if (a instanceof ActionIf) {
        add="String_Node_Str" + ((ActionIf)a).getJumpOffset();
      }
      if (a instanceof ActionJump) {
        add="String_Node_Str" + ((ActionJump)a).getJumpOffset();
      }
      add="String_Node_Str" + Helper.formatAddress(offset) + add;
      add="String_Node_Str";
      if ((a instanceof ActionPush) && lastPush) {
        ret.append("String_Node_Str");
        ret.append(((ActionPush)a).paramsToStringReplaced(list,importantOffsets,constantPool,version,hex,highlight));
      }
 else {
        if (lastPush) {
          ret.append("String_Node_Str");
          lastPush=false;
        }
        ret.append(highlight ? Highlighting.hilighOffset("String_Node_Str",offset) : "String_Node_Str");
        if (a instanceof ActionIf) {
          ActionIf aif=(ActionIf)a;
          if (aif.jumpUsed && !aif.ignoreUsed) {
            aif.setFixBranch(0);
          }
          if (!aif.jumpUsed && aif.ignoreUsed) {
            aif.setFixBranch(1);
          }
        }
        int fixBranch=a.getFixBranch();
        if (fixBranch > -1) {
          if (a instanceof ActionIf) {
            ret.append("String_Node_Str");
            if (fixBranch == 0) {
              ret.append("String_Node_Str");
              ret.append(Helper.formatAddress(a.getAddress() + a.getBytes(version).length + ((ActionIf)a).getJumpOffset()));
            }
 else {
            }
          }
        }
 else {
          ret.append(a.getASMSourceReplaced(list,importantOffsets,constantPool,version,hex,highlight));
        }
        ret.append(a.isIgnored() ? "String_Node_Str" : "String_Node_Str");
        ret.append(add);
        ret.append((a instanceof ActionPush) ? "String_Node_Str" : "String_Node_Str");
      }
      if (a instanceof ActionPush) {
        lastPush=true;
      }
 else {
        lastPush=false;
      }
      if (a.afterInsert != null) {
        if (lastPush) {
          ret.append("String_Node_Str");
          lastPush=false;
        }
        ret.append(a.afterInsert.getASMSource(list,importantOffsets,constantPool,version,hex));
        ret.append("String_Node_Str");
      }
    }
    offset+=a.getBytes(version).length;
  }
  if (lastPush) {
    ret.append("String_Node_Str");
  }
  if (containers.containsKey(offset)) {
    for (int i=0; i < containers.get(offset).size(); i++) {
      ret.append("String_Node_Str");
      GraphSourceItemContainer cnt=containers.get(offset).get(i);
      int cntPos=containersPos.get(cnt);
      ret.append(cnt.getASMSourceBetween(cntPos));
      cntPos++;
      containersPos.put(cnt,cntPos);
    }
  }
  if (importantOffsets.contains(offset)) {
    ret.append("String_Node_Str");
    ret.append(Helper.formatAddress(offset));
    ret.append("String_Node_Str");
  }
  return ret.toString();
}