rem: *da |= *sa;
add: *da++ |= *sa;
context: RCombineImages(RImage *image, RImage *src){    register int i;    unsigned char *dr, *dg, *db, *da;    unsigned char *sr, *sg, *sb, *sa;    int alpha, calpha;    assert(image->width == src->width);    assert(image->height == src->height);    dr = image->data[0];    dg = image->data[1];    db = image->data[2];    da = image->data[3];    sr = src->data[0];    sg = src->data[1];    sb = src->data[2];    sa = src->data[3];    if (!sa) {	memcpy(dr, sr, image->height*image->width);	memcpy(dg, sg, image->height*image->width);	memcpy(db, sb, image->height*image->width);    } else {	for (i=0; i<image->height*image->width; i++) {	    alpha = *sa;	    calpha = 255 - *sa;	    *dr = (((int)*dr * calpha) + ((int)*sr * alpha))/256;	    *dg = (((int)*dg * calpha) + ((int)*sg * alpha))/256;	    *db = (((int)*db * calpha) + ((int)*sb * alpha))/256;	    if (image->data[3])		*da |= *sa;	    dr++;    dg++;    db++;    	    sr++;    sg++;    sb++;	    sa++;	    da++;	}    }}