diff --git a/src/ranap/RANAP_MBMSSessionUpdateFailure.c b/src/ranap/RANAP_MBMSSessionUpdateFailure.c
index 392de3a..c1a3f1a 100644
--- a/src/ranap/RANAP_MBMSSessionUpdateFailure.c
+++ b/src/ranap/RANAP_MBMSSessionUpdateFailure.c
@@ -7,7 +7,7 @@
 #include "RANAP_MBMSSessionUpdateFailure.h"
 
 static int
-memb_mBMSSessionUpdateFailure_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_mbmsSessionUpdateFailure_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_mBMSSessionUpdateFailure_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_mbmsSessionUpdateFailure_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_mBMSSessionUpdateFailure_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_mbmsSessionUpdateFailure_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_mBMSSessionUpdateFailure_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_mbmsSessionUpdateFailure_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_mBMSSessionUpdateFailure_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_mbmsSessionUpdateFailure_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_mBMSSessionUpdateFailure_ies_specs_2 = {
-	sizeof(struct mBMSSessionUpdateFailure_ies),
-	offsetof(struct mBMSSessionUpdateFailure_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_mbmsSessionUpdateFailure_ies_specs_2 = {
+	sizeof(struct mbmsSessionUpdateFailure_ies),
+	offsetof(struct mbmsSessionUpdateFailure_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_mBMSSessionUpdateFailure_ies_2 = {
-	"mBMSSessionUpdateFailure-ies",
-	"mBMSSessionUpdateFailure-ies",
+asn_TYPE_descriptor_t asn_DEF_mbmsSessionUpdateFailure_ies_2 = {
+	"mbmsSessionUpdateFailure-ies",
+	"mbmsSessionUpdateFailure-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_mBMSSessionUpdateFailure_ies_tags_2,
-	sizeof(asn_DEF_mBMSSessionUpdateFailure_ies_tags_2)
-		/sizeof(asn_DEF_mBMSSessionUpdateFailure_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_mBMSSessionUpdateFailure_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_mBMSSessionUpdateFailure_ies_tags_2)
-		/sizeof(asn_DEF_mBMSSessionUpdateFailure_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_mBMSSessionUpdateFailure_ies_constr_2,
-	asn_MBR_mBMSSessionUpdateFailure_ies_2,
+	asn_DEF_mbmsSessionUpdateFailure_ies_tags_2,
+	sizeof(asn_DEF_mbmsSessionUpdateFailure_ies_tags_2)
+		/sizeof(asn_DEF_mbmsSessionUpdateFailure_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_mbmsSessionUpdateFailure_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_mbmsSessionUpdateFailure_ies_tags_2)
+		/sizeof(asn_DEF_mbmsSessionUpdateFailure_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_mbmsSessionUpdateFailure_ies_constr_2,
+	asn_MBR_mbmsSessionUpdateFailure_ies_2,
 	1,	/* Single element */
-	&asn_SPC_mBMSSessionUpdateFailure_ies_specs_2	/* Additional specs */
+	&asn_SPC_mbmsSessionUpdateFailure_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_MBMSSessionUpdateFailure_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionUpdateFailure, mBMSSessionUpdateFailure_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSSessionUpdateFailure, mbmsSessionUpdateFailure_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_mBMSSessionUpdateFailure_ies_2,
-		memb_mBMSSessionUpdateFailure_ies_constraint_1,
-		&asn_PER_memb_mBMSSessionUpdateFailure_ies_constr_2,
+		&asn_DEF_mbmsSessionUpdateFailure_ies_2,
+		memb_mbmsSessionUpdateFailure_ies_constraint_1,
+		&asn_PER_memb_mbmsSessionUpdateFailure_ies_constr_2,
 		0,
-		"mBMSSessionUpdateFailure-ies"
+		"mbmsSessionUpdateFailure-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_MBMSSessionUpdateFailure_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSSessionUpdateFailure_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mBMSSessionUpdateFailure-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mbmsSessionUpdateFailure-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSSessionUpdateFailure_specs_1 = {
 	sizeof(struct RANAP_MBMSSessionUpdateFailure),
