diff --git a/src/ranap/RANAP_RAB-FailedList.c b/src/ranap/RANAP_RAB-FailedList.c
index 3dc8d53..d1599c3 100644
--- a/src/ranap/RANAP_RAB-FailedList.c
+++ b/src/ranap/RANAP_RAB-FailedList.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-FailedList.h"
 
 static int
-memb_rabFailedList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_FailedList_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_rabFailedList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_FailedList_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_rabFailedList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_FailedList_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_rabFailedList_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_FailedList_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rabFailedList_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_FailedList_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rabFailedList_ies_specs_2 = {
-	sizeof(struct rabFailedList_ies),
-	offsetof(struct rabFailedList_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_FailedList_ies_specs_2 = {
+	sizeof(struct raB_FailedList_ies),
+	offsetof(struct raB_FailedList_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rabFailedList_ies_2 = {
-	"rabFailedList-ies",
-	"rabFailedList-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_FailedList_ies_2 = {
+	"raB-FailedList-ies",
+	"raB-FailedList-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_rabFailedList_ies_tags_2,
-	sizeof(asn_DEF_rabFailedList_ies_tags_2)
-		/sizeof(asn_DEF_rabFailedList_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rabFailedList_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rabFailedList_ies_tags_2)
-		/sizeof(asn_DEF_rabFailedList_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rabFailedList_ies_constr_2,
-	asn_MBR_rabFailedList_ies_2,
+	asn_DEF_raB_FailedList_ies_tags_2,
+	sizeof(asn_DEF_raB_FailedList_ies_tags_2)
+		/sizeof(asn_DEF_raB_FailedList_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_FailedList_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_FailedList_ies_tags_2)
+		/sizeof(asn_DEF_raB_FailedList_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_FailedList_ies_constr_2,
+	asn_MBR_raB_FailedList_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rabFailedList_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_FailedList_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_FailedList_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedList, rabFailedList_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_FailedList, raB_FailedList_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rabFailedList_ies_2,
-		memb_rabFailedList_ies_constraint_1,
-		&asn_PER_memb_rabFailedList_ies_constr_2,
+		&asn_DEF_raB_FailedList_ies_2,
+		memb_raB_FailedList_ies_constraint_1,
+		&asn_PER_memb_raB_FailedList_ies_constr_2,
 		0,
-		"rabFailedList-ies"
+		"raB-FailedList-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_FailedList_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_FailedList_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rabFailedList-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-FailedList-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_FailedList_specs_1 = {
 	sizeof(struct RANAP_RAB_FailedList),
