#define PBYTE(p,i) (( ( unsigned char *) p)[i])
void BlendProc( char *src,char *dst,char *back,int ByteSize,int ra,int rb)
{  int H,L,i;
  int *s = (int*)src;
  int *d = (int*)dst;
  int *b = (int*)back;
  while(ByteSize >= 4){
    H = (( *s >> 8 ) & 0x00ff00ff) * ra;
    L = ( *s & 0x00ff00ff) * ra;
    s++;
    H+= (( *d >> 8) & 0x00ff00ff) * rb;
    L+= ( *d & 0x00ff00ff) * rb;
    d++;
    *b++ = (H & 0xff00ff00) | ((L >> 8) & 0x00ff00ff);
    ByteSize -= 4;
  }
  for(i = 0;i < ByteSize;i++)
     PBYTE(b,i) = ( PBYTE(s,i) * ra + PBYTE(d,i) * rb) >> 8;
}