rem: soap_revert(soap);
context: SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_in_xsd__base64Binary(struct soap *soap, const char *tag, xsd__base64Binary *a, const char *type){	if (soap_element_begin_in(soap, tag))		return NULL;	if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, "SOAP-ENC:base64") && soap_match_tag(soap, soap->type, "SOAP-ENC:base64Binary"))	{	soap->error = SOAP_TYPE;		soap_revert(soap);		return NULL;	}	if (soap->null)	{	if ((a = (xsd__base64Binary *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_xsd__base64Binary, sizeof(xsd__base64Binary), soap->type, soap->arrayType)))			a->soap_default(soap);			if (soap->body && soap_element_end_in(soap, tag))				return NULL;	}	else if (!*soap->href)	{	if (!(a = (xsd__base64Binary *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_xsd__base64Binary, sizeof(xsd__base64Binary), soap->type, soap->arrayType)))			return NULL;		if (soap->alloced)			a->soap_default(soap);		if (soap->body)		{		a->__ptr = soap_getbase64(soap, &a->__size, 0);		if ((!a->__ptr && soap->error) || soap_element_end_in(soap, tag))			return NULL;		}	}	else	{	a = (xsd__base64Binary *)soap_id_forward(soap, soap->href, (void**)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_xsd__base64Binary, sizeof(xsd__base64Binary), soap->type, soap->arrayType), SOAP_TYPE_xsd__base64Binary, sizeof(xsd__base64Binary));		if (a && soap->alloced)			a->soap_default(soap);		if (soap->body && soap_element_end_in(soap, tag))		return NULL;	}	return a;}