diff --git a/src/ranap/RANAP_RAB-RelocationReleaseList.c b/src/ranap/RANAP_RAB-RelocationReleaseList.c
index b836c55..cd7f6fd 100644
--- a/src/ranap/RANAP_RAB-RelocationReleaseList.c
+++ b/src/ranap/RANAP_RAB-RelocationReleaseList.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-RelocationReleaseList.h"
 
 static int
-memb_rabRelocationReleaseList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_RelocationReleaseList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_constraint_failed_f *ctfailcb, void *app_key) {
 	size_t size;
 	
@@ -32,17 +32,17 @@
 	}
 }
 
-static asn_per_constraints_t asn_PER_type_rabRelocationReleaseList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_RelocationReleaseList_ies_constr_2 GCC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
 	0, 0	/* No PER value map */
 };
-static asn_per_constraints_t asn_PER_memb_rabRelocationReleaseList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_RelocationReleaseList_ies_constr_2 GCC_NOTUSED = {
 	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
 	{ APC_CONSTRAINED,	 16,  16,  0l,  65535l }	/* (SIZE(0..65535)) */,
 	0, 0	/* No PER value map */
 };
-static asn_TYPE_member_t asn_MBR_rabRelocationReleaseList_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_RelocationReleaseList_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rabRelocationReleaseList_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_RelocationReleaseList_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rabRelocationReleaseList_ies_specs_2 = {
-	sizeof(struct rabRelocationReleaseList_ies),
-	offsetof(struct rabRelocationReleaseList_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_RelocationReleaseList_ies_specs_2 = {
+	sizeof(struct raB_RelocationReleaseList_ies),
+	offsetof(struct raB_RelocationReleaseList_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rabRelocationReleaseList_ies_2 = {
-	"rabRelocationReleaseList-ies",
-	"rabRelocationReleaseList-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_RelocationReleaseList_ies_2 = {
+	"raB-RelocationReleaseList-ies",
+	"raB-RelocationReleaseList-ies",
 	SEQUENCE_OF_free,
 	SEQUENCE_OF_print,
 	SEQUENCE_OF_constraint,
@@ -78,34 +78,34 @@
 	SEQUENCE_OF_decode_aper,
 	SEQUENCE_OF_encode_aper,
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_rabRelocationReleaseList_ies_tags_2,
-	sizeof(asn_DEF_rabRelocationReleaseList_ies_tags_2)
-		/sizeof(asn_DEF_rabRelocationReleaseList_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rabRelocationReleaseList_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rabRelocationReleaseList_ies_tags_2)
-		/sizeof(asn_DEF_rabRelocationReleaseList_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rabRelocationReleaseList_ies_constr_2,
-	asn_MBR_rabRelocationReleaseList_ies_2,
+	asn_DEF_raB_RelocationReleaseList_ies_tags_2,
+	sizeof(asn_DEF_raB_RelocationReleaseList_ies_tags_2)
+		/sizeof(asn_DEF_raB_RelocationReleaseList_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_RelocationReleaseList_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_RelocationReleaseList_ies_tags_2)
+		/sizeof(asn_DEF_raB_RelocationReleaseList_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_RelocationReleaseList_ies_constr_2,
+	asn_MBR_raB_RelocationReleaseList_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rabRelocationReleaseList_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_RelocationReleaseList_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_RelocationReleaseList_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_RelocationReleaseList, rabRelocationReleaseList_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_RelocationReleaseList, raB_RelocationReleaseList_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rabRelocationReleaseList_ies_2,
-		memb_rabRelocationReleaseList_ies_constraint_1,
-		&asn_PER_memb_rabRelocationReleaseList_ies_constr_2,
+		&asn_DEF_raB_RelocationReleaseList_ies_2,
+		memb_raB_RelocationReleaseList_ies_constraint_1,
+		&asn_PER_memb_raB_RelocationReleaseList_ies_constr_2,
 		0,
-		"rabRelocationReleaseList-ies"
+		"raB-RelocationReleaseList-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_RelocationReleaseList_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_RelocationReleaseList_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rabRelocationReleaseList-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-RelocationReleaseList-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_RelocationReleaseList_specs_1 = {
 	sizeof(struct RANAP_RAB_RelocationReleaseList),
