Program: 86609
Project: 86609
Buggy source:
/** 
 * @private Renders the particles. 
 */
@Override public void render(GL10 gl,Point point,Point camera){
  super.render(gl,point,camera);
  if (!getAtlas().isLoaded()) {
    return;
  }
  if (mParticle == null)   return;
  mPoint.x=(int)(point.x + x - camera.x * scrollX);
  mPoint.y=(int)(point.y + y - camera.y * scrollY);
  float t, td;
  Particle p=mParticle;
  ParticleType type;
  Rect rect;
  Paint paint=FP.paint;
  while (p != null) {
    t=p.mTime / p.mDuration;
    type=p.mType;
    rect=type.mFrame;
    td=(type.mEase == null) ? t : type.mEase.ease(t);
    mP.x=(int)(mPoint.x + p.mX + p.mMoveX * td);
    mP.y=(int)(mPoint.y + p.mY + p.mMoveY * td);
    gl.glPushMatrix();
{
      setGeometryBuffer(QUAD_FLOAT_BUFFER_1,mP.x,mP.y,rect.width(),rect.height());
      if (type.mFrames != null) {
        setTextureBuffer(QUAD_FLOAT_BUFFER_2,mSubTexture,type.mFrames[(int)(td * type.mFrameCount)],rect.width(),rect.height());
      }
 else {
        setTextureBuffer(QUAD_FLOAT_BUFFER_2,mSubTexture,0,rect.width(),rect.height());
      }
      setBuffers(gl,QUAD_FLOAT_BUFFER_1,QUAD_FLOAT_BUFFER_2);
      td=(type.mColorEase == null) ? t : type.mColorEase.ease(t);
      float red=(type.mRed + type.mRedRange * td) / 255.0f;
      float green=(type.mGreen + type.mGreenRange * td) / 255.0f;
      float blue=(type.mBlue + type.mBlueRange * td) / 255.0f;
      float alpha=(type.mAlpha + type.mAlphaRange * ((type.mAlphaEase == null) ? t : type.mAlphaEase.ease(t))) / 255.0f;
      gl.glColor4f(red,green,blue,alpha);
      gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,0,4);
    }
    gl.glPopMatrix();
    p=p.mNext;
  }
}

Fixed version (ground truth):
/** 
 * @private Renders the particles. 
 */
@Override public void render(GL10 gl,Point point,Point camera){
  super.render(gl,point,camera);
  if (!getAtlas().isLoaded()) {
    return;
  }
  if (mParticle == null)   return;
  mPoint.x=(int)(point.x + x - camera.x * scrollX);
  mPoint.y=(int)(point.y + y - camera.y * scrollY);
  float t, td;
  Particle p=mParticle;
  ParticleType type;
  Rect rect;
  while (p != null) {
    t=p.mTime / p.mDuration;
    type=p.mType;
    rect=type.mFrame;
    td=(type.mEase == null) ? t : type.mEase.ease(t);
    mP.x=(int)(mPoint.x + p.mX + p.mMoveX * td);
    mP.y=(int)(mPoint.y + p.mY + p.mMoveY * td);
    gl.glPushMatrix();
{
      setGeometryBuffer(QUAD_FLOAT_BUFFER_1,mP.x,mP.y,rect.width(),rect.height());
      if (type.mFrames != null) {
        setTextureBuffer(QUAD_FLOAT_BUFFER_2,mSubTexture,type.mFrames[(int)(td * type.mFrameCount)],rect.width(),rect.height());
      }
 else {
        setTextureBuffer(QUAD_FLOAT_BUFFER_2,mSubTexture,0,rect.width(),rect.height());
      }
      setBuffers(gl,QUAD_FLOAT_BUFFER_1,QUAD_FLOAT_BUFFER_2);
      td=(type.mColorEase == null) ? t : type.mColorEase.ease(t);
      float red=(type.mRed + type.mRedRange * td) / 255.0f;
      float green=(type.mGreen + type.mGreenRange * td) / 255.0f;
      float blue=(type.mBlue + type.mBlueRange * td) / 255.0f;
      float alpha=(type.mAlpha + type.mAlphaRange * ((type.mAlphaEase == null) ? t : type.mAlphaEase.ease(t))) / 255.0f;
      gl.glColor4f(red,green,blue,alpha);
      gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,0,4);
    }
    gl.glPopMatrix();
    p=p.mNext;
  }
}