diff --git a/src/ranap/RANAP_RAB-SetupOrModifiedList.c b/src/ranap/RANAP_RAB-SetupOrModifiedList.c
index 499b8b7..46e5fba 100644
--- a/src/ranap/RANAP_RAB-SetupOrModifiedList.c
+++ b/src/ranap/RANAP_RAB-SetupOrModifiedList.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-SetupOrModifiedList.h"
 
 static int
-memb_rabSetupOrModifiedList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_SetupOrModifiedList_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_rabSetupOrModifiedList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_SetupOrModifiedList_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_rabSetupOrModifiedList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_SetupOrModifiedList_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_rabSetupOrModifiedList_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_SetupOrModifiedList_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rabSetupOrModifiedList_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_SetupOrModifiedList_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rabSetupOrModifiedList_ies_specs_2 = {
-	sizeof(struct rabSetupOrModifiedList_ies),
-	offsetof(struct rabSetupOrModifiedList_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupOrModifiedList_ies_specs_2 = {
+	sizeof(struct raB_SetupOrModifiedList_ies),
+	offsetof(struct raB_SetupOrModifiedList_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rabSetupOrModifiedList_ies_2 = {
-	"rabSetupOrModifiedList-ies",
-	"rabSetupOrModifiedList-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_SetupOrModifiedList_ies_2 = {
+	"raB-SetupOrModifiedList-ies",
+	"raB-SetupOrModifiedList-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_rabSetupOrModifiedList_ies_tags_2,
-	sizeof(asn_DEF_rabSetupOrModifiedList_ies_tags_2)
-		/sizeof(asn_DEF_rabSetupOrModifiedList_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rabSetupOrModifiedList_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rabSetupOrModifiedList_ies_tags_2)
-		/sizeof(asn_DEF_rabSetupOrModifiedList_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rabSetupOrModifiedList_ies_constr_2,
-	asn_MBR_rabSetupOrModifiedList_ies_2,
+	asn_DEF_raB_SetupOrModifiedList_ies_tags_2,
+	sizeof(asn_DEF_raB_SetupOrModifiedList_ies_tags_2)
+		/sizeof(asn_DEF_raB_SetupOrModifiedList_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_SetupOrModifiedList_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_SetupOrModifiedList_ies_tags_2)
+		/sizeof(asn_DEF_raB_SetupOrModifiedList_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_SetupOrModifiedList_ies_constr_2,
+	asn_MBR_raB_SetupOrModifiedList_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rabSetupOrModifiedList_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_SetupOrModifiedList_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupOrModifiedList_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupOrModifiedList, rabSetupOrModifiedList_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupOrModifiedList, raB_SetupOrModifiedList_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rabSetupOrModifiedList_ies_2,
-		memb_rabSetupOrModifiedList_ies_constraint_1,
-		&asn_PER_memb_rabSetupOrModifiedList_ies_constr_2,
+		&asn_DEF_raB_SetupOrModifiedList_ies_2,
+		memb_raB_SetupOrModifiedList_ies_constraint_1,
+		&asn_PER_memb_raB_SetupOrModifiedList_ies_constr_2,
 		0,
-		"rabSetupOrModifiedList-ies"
+		"raB-SetupOrModifiedList-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupOrModifiedList_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupOrModifiedList_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rabSetupOrModifiedList-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupOrModifiedList-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupOrModifiedList_specs_1 = {
 	sizeof(struct RANAP_RAB_SetupOrModifiedList),
