diff --git a/src/ranap/RANAP_UESpecificInformationIndication.c b/src/ranap/RANAP_UESpecificInformationIndication.c
index 89d1e16..bebc30d 100644
--- a/src/ranap/RANAP_UESpecificInformationIndication.c
+++ b/src/ranap/RANAP_UESpecificInformationIndication.c
@@ -7,7 +7,7 @@
 #include "RANAP_UESpecificInformationIndication.h"
 
 static int
-memb_uESpecificInformationIndication_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_ueSpecificInformationIndication_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_uESpecificInformationIndication_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_ueSpecificInformationIndication_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_uESpecificInformationIndication_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_ueSpecificInformationIndication_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_uESpecificInformationIndication_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_ueSpecificInformationIndication_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_uESpecificInformationIndication_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_ueSpecificInformationIndication_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_uESpecificInformationIndication_ies_specs_2 = {
-	sizeof(struct uESpecificInformationIndication_ies),
-	offsetof(struct uESpecificInformationIndication_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_ueSpecificInformationIndication_ies_specs_2 = {
+	sizeof(struct ueSpecificInformationIndication_ies),
+	offsetof(struct ueSpecificInformationIndication_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_uESpecificInformationIndication_ies_2 = {
-	"uESpecificInformationIndication-ies",
-	"uESpecificInformationIndication-ies",
+asn_TYPE_descriptor_t asn_DEF_ueSpecificInformationIndication_ies_2 = {
+	"ueSpecificInformationIndication-ies",
+	"ueSpecificInformationIndication-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_uESpecificInformationIndication_ies_tags_2,
-	sizeof(asn_DEF_uESpecificInformationIndication_ies_tags_2)
-		/sizeof(asn_DEF_uESpecificInformationIndication_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_uESpecificInformationIndication_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_uESpecificInformationIndication_ies_tags_2)
-		/sizeof(asn_DEF_uESpecificInformationIndication_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_uESpecificInformationIndication_ies_constr_2,
-	asn_MBR_uESpecificInformationIndication_ies_2,
+	asn_DEF_ueSpecificInformationIndication_ies_tags_2,
+	sizeof(asn_DEF_ueSpecificInformationIndication_ies_tags_2)
+		/sizeof(asn_DEF_ueSpecificInformationIndication_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_ueSpecificInformationIndication_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_ueSpecificInformationIndication_ies_tags_2)
+		/sizeof(asn_DEF_ueSpecificInformationIndication_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_ueSpecificInformationIndication_ies_constr_2,
+	asn_MBR_ueSpecificInformationIndication_ies_2,
 	1,	/* Single element */
-	&asn_SPC_uESpecificInformationIndication_ies_specs_2	/* Additional specs */
+	&asn_SPC_ueSpecificInformationIndication_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_UESpecificInformationIndication_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_UESpecificInformationIndication, uESpecificInformationIndication_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_UESpecificInformationIndication, ueSpecificInformationIndication_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_uESpecificInformationIndication_ies_2,
-		memb_uESpecificInformationIndication_ies_constraint_1,
-		&asn_PER_memb_uESpecificInformationIndication_ies_constr_2,
+		&asn_DEF_ueSpecificInformationIndication_ies_2,
+		memb_ueSpecificInformationIndication_ies_constraint_1,
+		&asn_PER_memb_ueSpecificInformationIndication_ies_constr_2,
 		0,
-		"uESpecificInformationIndication-ies"
+		"ueSpecificInformationIndication-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_UESpecificInformationIndication_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_UESpecificInformationIndication_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* uESpecificInformationIndication-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueSpecificInformationIndication-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UESpecificInformationIndication_specs_1 = {
 	sizeof(struct RANAP_UESpecificInformationIndication),
