-while (p[0]) { -p[-1]+=1; -p[0]+=255; -p[1]+=p[113]; -p[8]=p[113]; -p[113]=p[1]; +if (p[0]) { +p[-1]=p[0]; p[1]=0; -p[8]+=1; -p[9]=1; -p[113]=p[8]; p[8]=0; +p[9]=1; +p[113]+=p[0]; +p[0]=0; } Note that it also figured out through other code that p[-1] must be 0 at entry. This happened several hundred lines before. if (p[0]) { while (p[0]) { p[-1]=p[0]; p[-1]+=1; p[1]=0; p[0]+=255; p[8]=0; p[1]+=p[113]; p[9]=1; p[8]=p[113]; p[113]+=p[0]; p[113]=p[1]; p[0]=0; p[1]=0; } p[8]+=1; p[9]=1; p[113]=p[8]; p[8]=0; }