diff --git a/src/ranap/RANAP_SRNS-ContextRequest.c b/src/ranap/RANAP_SRNS-ContextRequest.c
index 9531323..4a8acad 100644
--- a/src/ranap/RANAP_SRNS-ContextRequest.c
+++ b/src/ranap/RANAP_SRNS-ContextRequest.c
@@ -7,7 +7,7 @@
 #include "RANAP_SRNS-ContextRequest.h"
 
 static int
-memb_sRNS_ContextRequest_ies_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_srnS_ContextRequest_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_sRNS_ContextRequest_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_type_srnS_ContextRequest_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_sRNS_ContextRequest_ies_constr_2 GCC_NOTUSED = {
+static asn_per_constraints_t asn_PER_memb_srnS_ContextRequest_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_sRNS_ContextRequest_ies_2[] = {
+static asn_TYPE_member_t asn_MBR_srnS_ContextRequest_ies_2[] = {
 	{ ATF_POINTER, 0, 0,
 		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
@@ -53,19 +53,19 @@
 		""
 		},
 };
-static const ber_tlv_tag_t asn_DEF_sRNS_ContextRequest_ies_tags_2[] = {
+static const ber_tlv_tag_t asn_DEF_srnS_ContextRequest_ies_tags_2[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_sRNS_ContextRequest_ies_specs_2 = {
-	sizeof(struct sRNS_ContextRequest_ies),
-	offsetof(struct sRNS_ContextRequest_ies, _asn_ctx),
+static asn_SET_OF_specifics_t asn_SPC_srnS_ContextRequest_ies_specs_2 = {
+	sizeof(struct srnS_ContextRequest_ies),
+	offsetof(struct srnS_ContextRequest_ies, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sRNS_ContextRequest_ies_2 = {
-	"sRNS-ContextRequest-ies",
-	"sRNS-ContextRequest-ies",
+asn_TYPE_descriptor_t asn_DEF_srnS_ContextRequest_ies_2 = {
+	"srnS-ContextRequest-ies",
+	"srnS-ContextRequest-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_sRNS_ContextRequest_ies_tags_2,
-	sizeof(asn_DEF_sRNS_ContextRequest_ies_tags_2)
-		/sizeof(asn_DEF_sRNS_ContextRequest_ies_tags_2[0]) - 1, /* 1 */
-	asn_DEF_sRNS_ContextRequest_ies_tags_2,	/* Same as above */
-	sizeof(asn_DEF_sRNS_ContextRequest_ies_tags_2)
-		/sizeof(asn_DEF_sRNS_ContextRequest_ies_tags_2[0]), /* 2 */
-	&asn_PER_type_sRNS_ContextRequest_ies_constr_2,
-	asn_MBR_sRNS_ContextRequest_ies_2,
+	asn_DEF_srnS_ContextRequest_ies_tags_2,
+	sizeof(asn_DEF_srnS_ContextRequest_ies_tags_2)
+		/sizeof(asn_DEF_srnS_ContextRequest_ies_tags_2[0]) - 1, /* 1 */
+	asn_DEF_srnS_ContextRequest_ies_tags_2,	/* Same as above */
+	sizeof(asn_DEF_srnS_ContextRequest_ies_tags_2)
+		/sizeof(asn_DEF_srnS_ContextRequest_ies_tags_2[0]), /* 2 */
+	&asn_PER_type_srnS_ContextRequest_ies_constr_2,
+	asn_MBR_srnS_ContextRequest_ies_2,
 	1,	/* Single element */
-	&asn_SPC_sRNS_ContextRequest_ies_specs_2	/* Additional specs */
+	&asn_SPC_srnS_ContextRequest_ies_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_RANAP_SRNS_ContextRequest_1[] = {
-	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_SRNS_ContextRequest, sRNS_ContextRequest_ies),
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_SRNS_ContextRequest, srnS_ContextRequest_ies),
 		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		0,
-		&asn_DEF_sRNS_ContextRequest_ies_2,
-		memb_sRNS_ContextRequest_ies_constraint_1,
-		&asn_PER_memb_sRNS_ContextRequest_ies_constr_2,
+		&asn_DEF_srnS_ContextRequest_ies_2,
+		memb_srnS_ContextRequest_ies_constraint_1,
+		&asn_PER_memb_srnS_ContextRequest_ies_constr_2,
 		0,
-		"sRNS-ContextRequest-ies"
+		"srnS-ContextRequest-ies"
 		},
 };
 static const ber_tlv_tag_t asn_DEF_RANAP_SRNS_ContextRequest_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static const asn_TYPE_tag2member_t asn_MAP_RANAP_SRNS_ContextRequest_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* sRNS-ContextRequest-ies */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* srnS-ContextRequest-ies */
 };
 static asn_SEQUENCE_specifics_t asn_SPC_RANAP_SRNS_ContextRequest_specs_1 = {
 	sizeof(struct RANAP_SRNS_ContextRequest),
