diff --git a/src/ranap/RANAP_RAB-QueuedList.c b/src/ranap/RANAP_RAB-QueuedList.c
index d8bf291..eac724b 100644
--- a/src/ranap/RANAP_RAB-QueuedList.c
+++ b/src/ranap/RANAP_RAB-QueuedList.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-QueuedList.h"
 
 static int
-memb_rabQueuedList_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_QueuedList_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_rabQueuedList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_QueuedList_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_rabQueuedList_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_QueuedList_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_rabQueuedList_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_QueuedList_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rabQueuedList_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_QueuedList_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rabQueuedList_ies_specs_2 = {
-	sizeof(struct rabQueuedList_ies),
-	offsetof(struct rabQueuedList_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_QueuedList_ies_specs_2 = {
+	sizeof(struct raB_QueuedList_ies),
+	offsetof(struct raB_QueuedList_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rabQueuedList_ies_2 = {
-	"rabQueuedList-ies",
-	"rabQueuedList-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_QueuedList_ies_2 = {
+	"raB-QueuedList-ies",
+	"raB-QueuedList-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_rabQueuedList_ies_tags_2,
-	sizeof(asn_DEF_rabQueuedList_ies_tags_2)
-		/sizeof(asn_DEF_rabQueuedList_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rabQueuedList_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rabQueuedList_ies_tags_2)
-		/sizeof(asn_DEF_rabQueuedList_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rabQueuedList_ies_constr_2,
-	asn_MBR_rabQueuedList_ies_2,
+	asn_DEF_raB_QueuedList_ies_tags_2,
+	sizeof(asn_DEF_raB_QueuedList_ies_tags_2)
+		/sizeof(asn_DEF_raB_QueuedList_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_QueuedList_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_QueuedList_ies_tags_2)
+		/sizeof(asn_DEF_raB_QueuedList_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_QueuedList_ies_constr_2,
+	asn_MBR_raB_QueuedList_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rabQueuedList_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_QueuedList_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_QueuedList_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_QueuedList, rabQueuedList_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_QueuedList, raB_QueuedList_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rabQueuedList_ies_2,
-		memb_rabQueuedList_ies_constraint_1,
-		&asn_PER_memb_rabQueuedList_ies_constr_2,
+		&asn_DEF_raB_QueuedList_ies_2,
+		memb_raB_QueuedList_ies_constraint_1,
+		&asn_PER_memb_raB_QueuedList_ies_constr_2,
 		0,
-		"rabQueuedList-ies"
+		"raB-QueuedList-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_QueuedList_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_QueuedList_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rabQueuedList-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-QueuedList-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_QueuedList_specs_1 = {
 	sizeof(struct RANAP_RAB_QueuedList),
