rem: int cc;
add: int cc = 0;
context: char *decode_base64(char *dest, 			     char *src,			     size_t *size){    int cc;    char buf[4] = {0,0,0,0};      int p = 0;    int valid_data = 0;    size_t size_out=0;        while (*src && p<(int)*size && (cc!=  -1)) {		/* convert a character into the Base64 alphabet */	cc = *src++;		if	((cc >= 'A') && (cc <= 'Z')) cc = cc - 'A';	else if ((cc >= 'a') && (cc <= 'z')) cc = cc - 'a' + 26;	else if ((cc >= '0') && (cc <= '9')) cc = cc - '0' + 52;	else if  (cc == '/')		     cc = 63;	else if  (cc == '+')		     cc = 62;	else                                 cc = -1;		assert(cc<64);	/* If we've reached the end, fill the remaining slots in	   the bucket and do a final conversion */	if(cc== -1){	    if(valid_data == 0){		return 0;	    }	    while(p%4!=3){		p++;		buf[p%4] = 0;	    }	} else {	    buf[p%4] = cc;	    size_out++;	    valid_data = 1;	}		/* When we have 4 base64 letters, convert them into three	   bytes */	if (p%4 == 3) {	    *dest++ =(buf[0]<< 2)|((buf[1] & 0x30) >> 4);	    *dest++ =((buf[1] & 0x0F) << 4)|((buf[2] & 0x3C) >> 2);	    *dest++ =((buf[2] & 0x03) << 6)|(buf[3] & 0x3F);	    memset(buf,0,4);	}	p++;    }    /* Calculate the size of the converted data*/   *size = ((int)(size_out/4))*3;    if(size_out%4 == 2) *size+=1;    if(size_out%4 == 3) *size+=2;    return(dest);}