diff --git a/src/ranap/RANAP_MBMSSessionUpdateResponse.c b/src/ranap/RANAP_MBMSSessionUpdateResponse.c
index 5c30885..f24c3fc 100644
--- a/src/ranap/RANAP_MBMSSessionUpdateResponse.c
+++ b/src/ranap/RANAP_MBMSSessionUpdateResponse.c
@@ -7,7 +7,7 @@
 #include "RANAP_MBMSSessionUpdateResponse.h"
 
 static int
-memb_mBMSSessionUpdateResponse_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_mbmsSessionUpdateResponse_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_mBMSSessionUpdateResponse_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_mbmsSessionUpdateResponse_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_mBMSSessionUpdateResponse_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_mbmsSessionUpdateResponse_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_mBMSSessionUpdateResponse_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_mbmsSessionUpdateResponse_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_mBMSSessionUpdateResponse_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_mbmsSessionUpdateResponse_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_mBMSSessionUpdateResponse_ies_specs_2 = {
-	sizeof(struct mBMSSessionUpdateResponse_ies),
-	offsetof(struct mBMSSessionUpdateResponse_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionUpdateResponse_ies_specs_2 = {
+	sizeof(struct mbmsSessionUpdateResponse_ies),
+	offsetof(struct mbmsSessionUpdateResponse_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_mBMSSessionUpdateResponse_ies_2 = {
-	"mBMSSessionUpdateResponse-ies",
-	"mBMSSessionUpdateResponse-ies",
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionUpdateResponse_ies_2 = {
+	"mbmsSessionUpdateResponse-ies",
+	"mbmsSessionUpdateResponse-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_mBMSSessionUpdateResponse_ies_tags_2,
-	sizeof(asn_DEF_mBMSSessionUpdateResponse_ies_tags_2)
-		/sizeof(asn_DEF_mBMSSessionUpdateResponse_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_mBMSSessionUpdateResponse_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_mBMSSessionUpdateResponse_ies_tags_2)
-		/sizeof(asn_DEF_mBMSSessionUpdateResponse_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_mBMSSessionUpdateResponse_ies_constr_2,
-	asn_MBR_mBMSSessionUpdateResponse_ies_2,
+	asn_DEF_mbmsSessionUpdateResponse_ies_tags_2,
+	sizeof(asn_DEF_mbmsSessionUpdateResponse_ies_tags_2)
+		/sizeof(asn_DEF_mbmsSessionUpdateResponse_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_mbmsSessionUpdateResponse_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_mbmsSessionUpdateResponse_ies_tags_2)
+		/sizeof(asn_DEF_mbmsSessionUpdateResponse_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_mbmsSessionUpdateResponse_ies_constr_2,
+	asn_MBR_mbmsSessionUpdateResponse_ies_2,
 	1,	/* Single element */
-	&asn_SPC_mBMSSessionUpdateResponse_ies_specs_2	/* Additional specs */
+	&asn_SPC_mbmsSessionUpdateResponse_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionUpdateResponse_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionUpdateResponse, mBMSSessionUpdateResponse_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionUpdateResponse, mbmsSessionUpdateResponse_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_mBMSSessionUpdateResponse_ies_2,
-		memb_mBMSSessionUpdateResponse_ies_constraint_1,
-		&asn_PER_memb_mBMSSessionUpdateResponse_ies_constr_2,
+		&asn_DEF_mbmsSessionUpdateResponse_ies_2,
+		memb_mbmsSessionUpdateResponse_ies_constraint_1,
+		&asn_PER_memb_mbmsSessionUpdateResponse_ies_constr_2,
 		0,
-		"mBMSSessionUpdateResponse-ies"
+		"mbmsSessionUpdateResponse-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionUpdateResponse_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionUpdateResponse_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mBMSSessionUpdateResponse-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionUpdateResponse-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionUpdateResponse_specs_1 = {
 	sizeof(struct RANAP_MBMSSessionUpdateResponse),
