diff --git a/src/ranap/RANAP_RAB-AssignmentRequest.c b/src/ranap/RANAP_RAB-AssignmentRequest.c
index 6d5c90e..640f619 100644
--- a/src/ranap/RANAP_RAB-AssignmentRequest.c
+++ b/src/ranap/RANAP_RAB-AssignmentRequest.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-AssignmentRequest.h"
 
 static int
-memb_rAB_AssignmentRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_AssignmentRequest_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_rAB_AssignmentRequest_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_AssignmentRequest_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_rAB_AssignmentRequest_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_AssignmentRequest_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_rAB_AssignmentRequest_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_AssignmentRequest_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rAB_AssignmentRequest_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_AssignmentRequest_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rAB_AssignmentRequest_ies_specs_2 = {
-	sizeof(struct rAB_AssignmentRequest_ies),
-	offsetof(struct rAB_AssignmentRequest_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_AssignmentRequest_ies_specs_2 = {
+	sizeof(struct raB_AssignmentRequest_ies),
+	offsetof(struct raB_AssignmentRequest_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rAB_AssignmentRequest_ies_2 = {
-	"rAB-AssignmentRequest-ies",
-	"rAB-AssignmentRequest-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_AssignmentRequest_ies_2 = {
+	"raB-AssignmentRequest-ies",
+	"raB-AssignmentRequest-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_rAB_AssignmentRequest_ies_tags_2,
-	sizeof(asn_DEF_rAB_AssignmentRequest_ies_tags_2)
-		/sizeof(asn_DEF_rAB_AssignmentRequest_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rAB_AssignmentRequest_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rAB_AssignmentRequest_ies_tags_2)
-		/sizeof(asn_DEF_rAB_AssignmentRequest_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rAB_AssignmentRequest_ies_constr_2,
-	asn_MBR_rAB_AssignmentRequest_ies_2,
+	asn_DEF_raB_AssignmentRequest_ies_tags_2,
+	sizeof(asn_DEF_raB_AssignmentRequest_ies_tags_2)
+		/sizeof(asn_DEF_raB_AssignmentRequest_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_AssignmentRequest_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_AssignmentRequest_ies_tags_2)
+		/sizeof(asn_DEF_raB_AssignmentRequest_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_AssignmentRequest_ies_constr_2,
+	asn_MBR_raB_AssignmentRequest_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rAB_AssignmentRequest_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_AssignmentRequest_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_AssignmentRequest_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_AssignmentRequest, rAB_AssignmentRequest_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_AssignmentRequest, raB_AssignmentRequest_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rAB_AssignmentRequest_ies_2,
-		memb_rAB_AssignmentRequest_ies_constraint_1,
-		&asn_PER_memb_rAB_AssignmentRequest_ies_constr_2,
+		&asn_DEF_raB_AssignmentRequest_ies_2,
+		memb_raB_AssignmentRequest_ies_constraint_1,
+		&asn_PER_memb_raB_AssignmentRequest_ies_constr_2,
 		0,
-		"rAB-AssignmentRequest-ies"
+		"raB-AssignmentRequest-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_AssignmentRequest_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_AssignmentRequest_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rAB-AssignmentRequest-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-AssignmentRequest-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_AssignmentRequest_specs_1 = {
 	sizeof(struct RANAP_RAB_AssignmentRequest),
