diff --git a/src/ranap/RANAP_RAB-SetupList-RelocReq.c b/src/ranap/RANAP_RAB-SetupList-RelocReq.c
index ac4b3a6..bb31b4f 100644
--- a/src/ranap/RANAP_RAB-SetupList-RelocReq.c
+++ b/src/ranap/RANAP_RAB-SetupList-RelocReq.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-SetupList-RelocReq.h"
 
 static int
-memb_rabSetupListRelocReq_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_SetupList_RelocReq_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_rabSetupListRelocReq_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_SetupList_RelocReq_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_rabSetupListRelocReq_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_SetupList_RelocReq_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_rabSetupListRelocReq_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_SetupList_RelocReq_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rabSetupListRelocReq_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_SetupList_RelocReq_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rabSetupListRelocReq_ies_specs_2 = {
-	sizeof(struct rabSetupListRelocReq_ies),
-	offsetof(struct rabSetupListRelocReq_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupList_RelocReq_ies_specs_2 = {
+	sizeof(struct raB_SetupList_RelocReq_ies),
+	offsetof(struct raB_SetupList_RelocReq_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rabSetupListRelocReq_ies_2 = {
-	"rabSetupListRelocReq-ies",
-	"rabSetupListRelocReq-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_SetupList_RelocReq_ies_2 = {
+	"raB-SetupList-RelocReq-ies",
+	"raB-SetupList-RelocReq-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_rabSetupListRelocReq_ies_tags_2,
-	sizeof(asn_DEF_rabSetupListRelocReq_ies_tags_2)
-		/sizeof(asn_DEF_rabSetupListRelocReq_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rabSetupListRelocReq_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rabSetupListRelocReq_ies_tags_2)
-		/sizeof(asn_DEF_rabSetupListRelocReq_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rabSetupListRelocReq_ies_constr_2,
-	asn_MBR_rabSetupListRelocReq_ies_2,
+	asn_DEF_raB_SetupList_RelocReq_ies_tags_2,
+	sizeof(asn_DEF_raB_SetupList_RelocReq_ies_tags_2)
+		/sizeof(asn_DEF_raB_SetupList_RelocReq_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_SetupList_RelocReq_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_SetupList_RelocReq_ies_tags_2)
+		/sizeof(asn_DEF_raB_SetupList_RelocReq_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_SetupList_RelocReq_ies_constr_2,
+	asn_MBR_raB_SetupList_RelocReq_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rabSetupListRelocReq_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_SetupList_RelocReq_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupList_RelocReq_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_RelocReq, rabSetupListRelocReq_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_RelocReq, raB_SetupList_RelocReq_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rabSetupListRelocReq_ies_2,
-		memb_rabSetupListRelocReq_ies_constraint_1,
-		&asn_PER_memb_rabSetupListRelocReq_ies_constr_2,
+		&asn_DEF_raB_SetupList_RelocReq_ies_2,
+		memb_raB_SetupList_RelocReq_ies_constraint_1,
+		&asn_PER_memb_raB_SetupList_RelocReq_ies_constr_2,
 		0,
-		"rabSetupListRelocReq-ies"
+		"raB-SetupList-RelocReq-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupList_RelocReq_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupList_RelocReq_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rabSetupListRelocReq-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupList-RelocReq-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupList_RelocReq_specs_1 = {
 	sizeof(struct RANAP_RAB_SetupList_RelocReq),
