Program: 169716
Project: 169716
Buggy source:
protected void doDamageEntities(float radius,float power,boolean destroyItem){
  radius*=2.0F;
  Vector3 minCoord=position.clone();
  minCoord.add(-radius - 1);
  Vector3 maxCoord=position.clone();
  maxCoord.add(radius + 1);
  List<Entity> allEntities=world().getEntitiesWithinAABB(Entity.class,AxisAlignedBB.getBoundingBox(minCoord.intX(),minCoord.intY(),minCoord.intZ(),maxCoord.intX(),maxCoord.intY(),maxCoord.intZ()));
  Vec3 var31=Vec3.createVectorHelper(position.x,position.y,position.z);
  for (int i=0; i < allEntities.size(); ++i) {
    Entity entity=allEntities.get(i);
    if (this.onDamageEntity(entity)) {
      continue;
    }
    if (entity instanceof EntityMissile) {
      ((EntityMissile)entity).setExplode();
      continue;
    }
    if (entity instanceof EntityItem && !destroyItem)     continue;
    double distance=entity.getDistance(position.x,position.y,position.z) / radius;
    if (distance <= 1.0D) {
      double xDifference=entity.posX - position.x;
      double yDifference=entity.posY - position.y;
      double zDifference=entity.posZ - position.z;
      double var35=MathHelper.sqrt_double(xDifference * xDifference + yDifference * yDifference + zDifference * zDifference);
      xDifference/=var35;
      yDifference/=var35;
      zDifference/=var35;
      double var34=world().getBlockDensity(var31,entity.boundingBox);
      double var36=(1.0D - distance) * var34;
      int damage=0;
      damage=(int)((var36 * var36 + var36) / 2.0D * 8.0D * power + 1.0D);
      entity.attackEntityFrom(DamageSource.setExplosionSource(this),damage);
      entity.motionX+=xDifference * var36;
      entity.motionY+=yDifference * var36;
      entity.motionZ+=zDifference * var36;
    }
  }
}

Fixed version (ground truth):
protected void doDamageEntities(float radius,float power,boolean destroyItem){
  radius*=2.0F;
  Vector3 minCoord=position.clone();
  minCoord.add(-radius - 1);
  Vector3 maxCoord=position.clone();
  maxCoord.add(radius + 1);
  List<Entity> allEntities=world().getEntitiesWithinAABB(Entity.class,AxisAlignedBB.getBoundingBox(minCoord.xi(),minCoord.yi(),minCoord.zi(),maxCoord.xi(),maxCoord.yi(),maxCoord.zi()));
  Vec3 var31=Vec3.createVectorHelper(position.x(),position.y(),position.z());
  for (int i=0; i < allEntities.size(); ++i) {
    Entity entity=allEntities.get(i);
    if (this.onDamageEntity(entity)) {
      continue;
    }
    if (entity instanceof EntityMissile) {
      ((EntityMissile)entity).setExplode();
      continue;
    }
    if (entity instanceof EntityItem && !destroyItem)     continue;
    double distance=entity.getDistance(position.x(),position.y(),position.z()) / radius;
    if (distance <= 1.0D) {
      double xDifference=entity.posX - position.x();
      double yDifference=entity.posY - position.y();
      double zDifference=entity.posZ - position.z();
      double var35=MathHelper.sqrt_double(xDifference * xDifference + yDifference * yDifference + zDifference * zDifference);
      xDifference/=var35;
      yDifference/=var35;
      zDifference/=var35;
      double var34=world().getBlockDensity(var31,entity.boundingBox);
      double var36=(1.0D - distance) * var34;
      int damage=0;
      damage=(int)((var36 * var36 + var36) / 2.0D * 8.0D * power + 1.0D);
      entity.attackEntityFrom(DamageSource.setExplosionSource(this),damage);
      entity.motionX+=xDifference * var36;
      entity.motionY+=yDifference * var36;
      entity.motionZ+=zDifference * var36;
    }
  }
}