diff --git a/src/ranap/RANAP_RAB-ModifyList.c b/src/ranap/RANAP_RAB-ModifyList.c
index 8e86394..1515e0e 100644
--- a/src/ranap/RANAP_RAB-ModifyList.c
+++ b/src/ranap/RANAP_RAB-ModifyList.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-ModifyList.h"
 
 static int
-memb_rabModifyList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_ModifyList_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_rabModifyList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_ModifyList_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_rabModifyList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_ModifyList_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_rabModifyList_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_ModifyList_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rabModifyList_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_ModifyList_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rabModifyList_ies_specs_2 = {
-	sizeof(struct rabModifyList_ies),
-	offsetof(struct rabModifyList_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_ModifyList_ies_specs_2 = {
+	sizeof(struct raB_ModifyList_ies),
+	offsetof(struct raB_ModifyList_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rabModifyList_ies_2 = {
-	"rabModifyList-ies",
-	"rabModifyList-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_ModifyList_ies_2 = {
+	"raB-ModifyList-ies",
+	"raB-ModifyList-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_rabModifyList_ies_tags_2,
-	sizeof(asn_DEF_rabModifyList_ies_tags_2)
-		/sizeof(asn_DEF_rabModifyList_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rabModifyList_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rabModifyList_ies_tags_2)
-		/sizeof(asn_DEF_rabModifyList_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rabModifyList_ies_constr_2,
-	asn_MBR_rabModifyList_ies_2,
+	asn_DEF_raB_ModifyList_ies_tags_2,
+	sizeof(asn_DEF_raB_ModifyList_ies_tags_2)
+		/sizeof(asn_DEF_raB_ModifyList_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_ModifyList_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_ModifyList_ies_tags_2)
+		/sizeof(asn_DEF_raB_ModifyList_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_ModifyList_ies_constr_2,
+	asn_MBR_raB_ModifyList_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rabModifyList_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_ModifyList_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_ModifyList_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ModifyList, rabModifyList_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_ModifyList, raB_ModifyList_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rabModifyList_ies_2,
-		memb_rabModifyList_ies_constraint_1,
-		&asn_PER_memb_rabModifyList_ies_constr_2,
+		&asn_DEF_raB_ModifyList_ies_2,
+		memb_raB_ModifyList_ies_constraint_1,
+		&asn_PER_memb_raB_ModifyList_ies_constr_2,
 		0,
-		"rabModifyList-ies"
+		"raB-ModifyList-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_ModifyList_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_ModifyList_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rabModifyList-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-ModifyList-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_ModifyList_specs_1 = {
 	sizeof(struct RANAP_RAB_ModifyList),
