M_ASN1_D2I_get_EXP_opt (ret->relativename, d2i_X509_NAME, 1);
M_ASN1_D2I_get_IMP_set_opt_type (X509_NAME_ENTRY, ret->relativename, d2i_X509_NAME_ENTRY, X509_NAME_ENTRY_free, 1);
DIST_POINT_NAME *d2i_DIST_POINT_NAME(DIST_POINT_NAME **a, unsigned char **pp,	     long length){        unsigned char _tmp, tag;        M_ASN1_D2I_vars(a,DIST_POINT_NAME *,DIST_POINT_NAME_new);        M_ASN1_D2I_Init();        c.slen = length;        _tmp = M_ASN1_next;        tag = _tmp & ~V_ASN1_CONSTRUCTED;		if(tag == (0|V_ASN1_CONTEXT_SPECIFIC)) {		M_ASN1_D2I_get_imp(ret->fullname, d2i_GENERAL_NAMES,							V_ASN1_SEQUENCE);	} else if (tag == (1|V_ASN1_CONTEXT_SPECIFIC)) {		M_ASN1_D2I_get_EXP_opt (ret->relativename, d2i_X509_NAME, 1);	} else {		c.error = ASN1_R_BAD_TAG;		goto err;	}	M_ASN1_D2I_Finish(a, DIST_POINT_NAME_free, ASN1_F_D2I_DIST_POINT_NAME);}