Program: 21339
Project: 21339
Buggy source:
@Override public PluginStep doStep(PluginStep step,String parameter){
switch (step.getStep()) {
case PluginStep.STEP_DECRYPT:
    Vector<DownloadLink> decryptedLinks=new Vector<DownloadLink>();
  if (parameter.matches("String_Node_Str")) {
    boolean isP=parameter.contains("String_Node_Str");
    int catst=getSerienJunkiesCat(isP);
    scatChecked=false;
    int cat=Integer.parseInt(parameter.replaceFirst("String_Node_Str","String_Node_Str").replaceFirst("String_Node_Str","String_Node_Str"));
    if (sCatNewestDownload == catst) {
      request.withHtmlCode=false;
      request.redirect=false;
      request.getRequest("String_Node_Str");
      request.withHtmlCode=true;
      request.getRequest("String_Node_Str");
      Pattern pattern=Pattern.compile("String_Node_Str",Pattern.CASE_INSENSITIVE);
      Matcher matcher=pattern.matcher(request.getHtmlCode());
      String name=null;
      while (matcher.find()) {
        if (Integer.parseInt(matcher.group(1)) == cat) {
          name=matcher.group(2).toLowerCase();
          break;
        }
      }
      if (name == null)       return null;
      request.getRequest(parameter);
      name+="String_Node_Str";
      String[] bet=null;
      while (bet == null) {
        name=name.substring(0,name.length() - 1);
        if (name.length() == 0)         return null;
        try {
          bet=request.getRegexp("String_Node_Str" + name + "String_Node_Str").getMatches()[0];
        }
 catch (        Exception e) {
        }
      }
      lastHtmlCode=request.getHtmlCode();
      String[] links=getHttpLinks(bet[1],request.urlToString());
      for (int i=0; i < links.length; i++) {
        decryptedLinks.add(this.createDownloadlink(links[i]));
      }
      step.setParameter(decryptedLinks);
      return null;
    }
 else     if (catst == sCatGrabb) {
      String htmlcode="String_Node_Str";
      if (isP) {
        request.getRequest(parameter);
        htmlcode=request.getHtmlCode();
      }
 else {
        request.getRequest("String_Node_Str" + cat);
        htmlcode=request.getHtmlCode();
        try {
          int pages=Integer.parseInt(request.getRegexp("String_Node_Str").getFirstMatch());
          for (int i=2; i < pages + 1; i++) {
            htmlcode+="String_Node_Str" + request.getRequest("String_Node_Str" + cat + "String_Node_Str"+ i);
          }
        }
 catch (        Exception e) {
        }
      }
      String[] titles=htmlcode.replaceFirst("String_Node_Str","String_Node_Str").split("String_Node_Str");
      for (int g=0; g < titles.length; g++) {
        String title=new Regexp(titles[g],"String_Node_Str").getFirstMatch();
        String[] sp=titles[g].split("String_Node_Str");
        for (int d=0; d < sp.length; d++) {
          String size=new Regexp(sp[d],"String_Node_Str").getFirstMatch();
          String[][] links=new Regexp(sp[d],"String_Node_Str").getMatches();
          for (int i=0; i < links.length; i++) {
            String[] links2=getHttpLinks(links[i][1],parameter);
            for (int j=0; j < links2.length; j++) {
              if (canHandle(links2[j])) {
                if (this.getProperties().getBooleanProperty("String_Node_Str",false)) {
                  decryptedLinks.addAll((new jd.plugins.host.Serienjunkies()).getDLinks(links2[j]));
                }
 else {
                  decryptedLinks.add(createdl(links2[j],new String[]{size,links[i][0],links[i][1],title}));
                }
              }
            }
          }
        }
      }
      step.setParameter(decryptedLinks);
      return null;
    }
 else {
      return null;
    }
  }
if (this.getProperties().getBooleanProperty("String_Node_Str",false)) {
  step.setParameter((new jd.plugins.host.Serienjunkies()).getDLinks(parameter));
}
 else {
  String[] info=getLinkName(parameter);
  if (info == null) {
    request.getRequest("String_Node_Str" + parameter.replaceFirst("String_Node_Str","String_Node_Str").replaceFirst("String_Node_Str","String_Node_Str") + "String_Node_Str");
    lastHtmlCode=request.getHtmlCode();
    info=getLinkName(parameter);
  }
  decryptedLinks.add(createdl(parameter,info));
  step.setParameter(decryptedLinks);
}
}
return null;
}

Fixed version (ground truth):
@Override public PluginStep doStep(PluginStep step,String parameter){
switch (step.getStep()) {
case PluginStep.STEP_DECRYPT:
    request.withHtmlCode=false;
  request.redirect=false;
request.getRequest("String_Node_Str");
request.withHtmlCode=true;
Vector<DownloadLink> decryptedLinks=new Vector<DownloadLink>();
if (parameter.matches("String_Node_Str")) {
boolean isP=parameter.contains("String_Node_Str");
int catst=getSerienJunkiesCat(isP);
scatChecked=false;
int cat=Integer.parseInt(parameter.replaceFirst("String_Node_Str","String_Node_Str").replaceFirst("String_Node_Str","String_Node_Str"));
if (sCatNewestDownload == catst) {
request.getRequest("String_Node_Str");
Pattern pattern=Pattern.compile("String_Node_Str",Pattern.CASE_INSENSITIVE);
Matcher matcher=pattern.matcher(request.getHtmlCode());
String name=null;
while (matcher.find()) {
if (Integer.parseInt(matcher.group(1)) == cat) {
  name=matcher.group(2).toLowerCase();
  break;
}
}
if (name == null) return null;
request.getRequest(parameter);
name+="String_Node_Str";
String[] bet=null;
while (bet == null) {
name=name.substring(0,name.length() - 1);
if (name.length() == 0) return null;
try {
  bet=request.getRegexp("String_Node_Str" + name + "String_Node_Str").getMatches()[0];
}
 catch (Exception e) {
}
}
lastHtmlCode=request.getHtmlCode();
String[] links=getHttpLinks(bet[1],request.urlToString());
for (int i=0; i < links.length; i++) {
decryptedLinks.add(this.createDownloadlink(links[i]));
}
step.setParameter(decryptedLinks);
return null;
}
 else if (catst == sCatGrabb) {
String htmlcode="String_Node_Str";
if (isP) {
request.getRequest(parameter);
htmlcode=request.getHtmlCode();
}
 else {
request.getRequest("String_Node_Str" + cat);
htmlcode=request.getHtmlCode();
try {
  int pages=Integer.parseInt(request.getRegexp("String_Node_Str").getFirstMatch());
  for (int i=2; i < pages + 1; i++) {
    htmlcode+="String_Node_Str" + request.getRequest("String_Node_Str" + cat + "String_Node_Str"+ i);
  }
}
 catch (Exception e) {
}
}
String[] titles=htmlcode.replaceFirst("String_Node_Str","String_Node_Str").split("String_Node_Str");
for (int g=0; g < titles.length; g++) {
String title=new Regexp(titles[g],"String_Node_Str").getFirstMatch();
String[] sp=titles[g].split("String_Node_Str");
for (int d=0; d < sp.length; d++) {
  String size=new Regexp(sp[d],"String_Node_Str").getFirstMatch();
  String[][] links=new Regexp(sp[d],"String_Node_Str").getMatches();
  for (int i=0; i < links.length; i++) {
    String[] links2=getHttpLinks(links[i][1],parameter);
    for (int j=0; j < links2.length; j++) {
      if (canHandle(links2[j])) {
        if (this.getProperties().getBooleanProperty("String_Node_Str",false)) {
          decryptedLinks.addAll((new jd.plugins.host.Serienjunkies()).getDLinks(links2[j]));
        }
 else {
          decryptedLinks.add(createdl(links2[j],new String[]{size,links[i][0],links[i][1],title}));
        }
      }
    }
  }
}
}
step.setParameter(decryptedLinks);
return null;
}
 else {
return null;
}
}
if (this.getProperties().getBooleanProperty("String_Node_Str",false)) {
step.setParameter((new jd.plugins.host.Serienjunkies()).getDLinks(parameter));
}
 else {
String[] info=getLinkName(parameter);
if (info == null) {
request.getRequest("String_Node_Str" + parameter.replaceFirst("String_Node_Str","String_Node_Str").replaceFirst("String_Node_Str","String_Node_Str") + "String_Node_Str");
lastHtmlCode=request.getHtmlCode();
info=getLinkName(parameter);
}
decryptedLinks.add(createdl(parameter,info));
step.setParameter(decryptedLinks);
}
}
return null;
}