rem: { m = ((unsigned long)((unsigned char*)s)[0] << 16) | ((unsigned long)((unsigned char*)s)[1] << 8) | (unsigned long)((unsigned char*)s)[2];
add: { m = s[0]; m = (m << 8) | s[1]; m = (m << 8) | s[2];
context: soap_putbase64(struct soap *soap, const unsigned char *s, int n){ register int i;  register unsigned long m;  char d[4];#ifdef WITH_DOM  if ((soap->mode & SOAP_XML_DOM) && soap->dom)  { soap->dom->data = (char*)soap_malloc(soap, (n + 2) / 3 * 4 + 1);    return soap_s2base64(soap, s, soap->dom->data, n);  }#endif  if (!s)    return SOAP_OK;  for (; n > 2; n -= 3, s += 3)  { m = ((unsigned long)((unsigned char*)s)[0] << 16) | ((unsigned long)((unsigned char*)s)[1] << 8) | (unsigned long)((unsigned char*)s)[2];    for (i = 4; i > 0; m >>= 6)      d[--i] = soap_base64o[m & 0x3F];    if (soap_send_raw(soap, d, 4))      return soap->error;  }  if (n > 0)  { m = 0;    for (i = 0; i < n; i++)      m = (m << 8) | *s++;    for (; i < 3; i++)      m <<= 8;    for (i++; i > 0; m >>= 6)      d[--i] = soap_base64o[m & 0x3F];    for (i = 3; i > n; i--)      d[i] = '=';    if (soap_send_raw(soap, d, 4))      return soap->error;  }  return SOAP_OK;}