diff --git a/src/ranap/RANAP_RAB-SetupList-RelocReqAck.c b/src/ranap/RANAP_RAB-SetupList-RelocReqAck.c
index 0c95d4d..347cb01 100644
--- a/src/ranap/RANAP_RAB-SetupList-RelocReqAck.c
+++ b/src/ranap/RANAP_RAB-SetupList-RelocReqAck.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-SetupList-RelocReqAck.h"
 
 static int
-memb_rabSetupListRelocReqAck_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_SetupList_RelocReqAck_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_rabSetupListRelocReqAck_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_SetupList_RelocReqAck_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_rabSetupListRelocReqAck_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_SetupList_RelocReqAck_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_rabSetupListRelocReqAck_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_SetupList_RelocReqAck_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rabSetupListRelocReqAck_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rabSetupListRelocReqAck_ies_specs_2 = {
-	sizeof(struct rabSetupListRelocReqAck_ies),
-	offsetof(struct rabSetupListRelocReqAck_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_SetupList_RelocReqAck_ies_specs_2 = {
+	sizeof(struct raB_SetupList_RelocReqAck_ies),
+	offsetof(struct raB_SetupList_RelocReqAck_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rabSetupListRelocReqAck_ies_2 = {
-	"rabSetupListRelocReqAck-ies",
-	"rabSetupListRelocReqAck-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_SetupList_RelocReqAck_ies_2 = {
+	"raB-SetupList-RelocReqAck-ies",
+	"raB-SetupList-RelocReqAck-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_rabSetupListRelocReqAck_ies_tags_2,
-	sizeof(asn_DEF_rabSetupListRelocReqAck_ies_tags_2)
-		/sizeof(asn_DEF_rabSetupListRelocReqAck_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rabSetupListRelocReqAck_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rabSetupListRelocReqAck_ies_tags_2)
-		/sizeof(asn_DEF_rabSetupListRelocReqAck_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rabSetupListRelocReqAck_ies_constr_2,
-	asn_MBR_rabSetupListRelocReqAck_ies_2,
+	asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2,
+	sizeof(asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2)
+		/sizeof(asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2)
+		/sizeof(asn_DEF_raB_SetupList_RelocReqAck_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_SetupList_RelocReqAck_ies_constr_2,
+	asn_MBR_raB_SetupList_RelocReqAck_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rabSetupListRelocReqAck_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_SetupList_RelocReqAck_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_SetupList_RelocReqAck_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_RelocReqAck, rabSetupListRelocReqAck_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_SetupList_RelocReqAck, raB_SetupList_RelocReqAck_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rabSetupListRelocReqAck_ies_2,
-		memb_rabSetupListRelocReqAck_ies_constraint_1,
-		&asn_PER_memb_rabSetupListRelocReqAck_ies_constr_2,
+		&asn_DEF_raB_SetupList_RelocReqAck_ies_2,
+		memb_raB_SetupList_RelocReqAck_ies_constraint_1,
+		&asn_PER_memb_raB_SetupList_RelocReqAck_ies_constr_2,
 		0,
-		"rabSetupListRelocReqAck-ies"
+		"raB-SetupList-RelocReqAck-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_SetupList_RelocReqAck_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_SetupList_RelocReqAck_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rabSetupListRelocReqAck-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-SetupList-RelocReqAck-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_SetupList_RelocReqAck_specs_1 = {
 	sizeof(struct RANAP_RAB_SetupList_RelocReqAck),
