diff --git a/src/ranap/RANAP_RAB-AssignmentResponse.c b/src/ranap/RANAP_RAB-AssignmentResponse.c
index a1565b1..b512579 100644
--- a/src/ranap/RANAP_RAB-AssignmentResponse.c
+++ b/src/ranap/RANAP_RAB-AssignmentResponse.c
@@ -7,7 +7,7 @@
 #include "RANAP_RAB-AssignmentResponse.h"
 
 static int
-memb_rAB_AssignmentResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_raB_AssignmentResponse_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_AssignmentResponse_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_raB_AssignmentResponse_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_AssignmentResponse_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_raB_AssignmentResponse_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_AssignmentResponse_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_raB_AssignmentResponse_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_rAB_AssignmentResponse_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_raB_AssignmentResponse_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_rAB_AssignmentResponse_ies_specs_2 = {
-	sizeof(struct rAB_AssignmentResponse_ies),
-	offsetof(struct rAB_AssignmentResponse_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_raB_AssignmentResponse_ies_specs_2 = {
+	sizeof(struct raB_AssignmentResponse_ies),
+	offsetof(struct raB_AssignmentResponse_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rAB_AssignmentResponse_ies_2 = {
-	"rAB-AssignmentResponse-ies",
-	"rAB-AssignmentResponse-ies",
+asn_TYPE_descriptor_t asn_DEF_raB_AssignmentResponse_ies_2 = {
+	"raB-AssignmentResponse-ies",
+	"raB-AssignmentResponse-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_AssignmentResponse_ies_tags_2,
-	sizeof(asn_DEF_rAB_AssignmentResponse_ies_tags_2)
-		/sizeof(asn_DEF_rAB_AssignmentResponse_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_rAB_AssignmentResponse_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_rAB_AssignmentResponse_ies_tags_2)
-		/sizeof(asn_DEF_rAB_AssignmentResponse_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_rAB_AssignmentResponse_ies_constr_2,
-	asn_MBR_rAB_AssignmentResponse_ies_2,
+	asn_DEF_raB_AssignmentResponse_ies_tags_2,
+	sizeof(asn_DEF_raB_AssignmentResponse_ies_tags_2)
+		/sizeof(asn_DEF_raB_AssignmentResponse_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_raB_AssignmentResponse_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_raB_AssignmentResponse_ies_tags_2)
+		/sizeof(asn_DEF_raB_AssignmentResponse_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_raB_AssignmentResponse_ies_constr_2,
+	asn_MBR_raB_AssignmentResponse_ies_2,
 	1,	/* Single element */
-	&asn_SPC_rAB_AssignmentResponse_ies_specs_2	/* Additional specs */
+	&asn_SPC_raB_AssignmentResponse_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_RAB_AssignmentResponse_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_AssignmentResponse, rAB_AssignmentResponse_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_RAB_AssignmentResponse, raB_AssignmentResponse_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_rAB_AssignmentResponse_ies_2,
-		memb_rAB_AssignmentResponse_ies_constraint_1,
-		&asn_PER_memb_rAB_AssignmentResponse_ies_constr_2,
+		&asn_DEF_raB_AssignmentResponse_ies_2,
+		memb_raB_AssignmentResponse_ies_constraint_1,
+		&asn_PER_memb_raB_AssignmentResponse_ies_constr_2,
 		0,
-		"rAB-AssignmentResponse-ies"
+		"raB-AssignmentResponse-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_RAB_AssignmentResponse_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_RAB_AssignmentResponse_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rAB-AssignmentResponse-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* raB-AssignmentResponse-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_RAB_AssignmentResponse_specs_1 = {
 	sizeof(struct RANAP_RAB_AssignmentResponse),
