diff --git a/src/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.c b/src/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.c
new file mode 100644
index 0000000..c84c547
--- /dev/null
+++ b/src/ranap/RANAP_MBMSIPMulticastAddressandAPNlist.c
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RANAP-IEs"
+ * 	found in "../../asn1/ranap/RANAP-IEs.asn"
+ */
+
+#include "RANAP_MBMSIPMulticastAddressandAPNlist.h"
+
+static asn_TYPE_member_t asn_MBR_RANAP_MBMSIPMulticastAddressandAPNlist_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, tMGI),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_TMGI,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"tMGI"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, iPMulticastAddress),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_IPMulticastAddress,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iPMulticastAddress"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, aPN),
+		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_APN,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"aPN"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, iE_Extensions),
+		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_IE_Extensions,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"iE-Extensions"
+		},
+};
+static const int asn_MAP_RANAP_MBMSIPMulticastAddressandAPNlist_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_MBMSIPMulticastAddressandAPNlist_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tMGI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iPMulticastAddress */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aPN */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_MBMSIPMulticastAddressandAPNlist_specs_1 = {
+	sizeof(struct RANAP_MBMSIPMulticastAddressandAPNlist),
+	offsetof(struct RANAP_MBMSIPMulticastAddressandAPNlist, _asn_ctx),
+	asn_MAP_RANAP_MBMSIPMulticastAddressandAPNlist_tag2el_1,
+	4,	/* Count of tags in the map */
+	asn_MAP_RANAP_MBMSIPMulticastAddressandAPNlist_oms_1,	/* Optional members */
+	1, 0,	/* Root/Additions */
+	3,	/* Start extensions */
+	5	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist = {
+	"RANAP_MBMSIPMulticastAddressandAPNlist",
+	"RANAP_MBMSIPMulticastAddressandAPNlist",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	SEQUENCE_decode_uper,
+	SEQUENCE_encode_uper,
+	SEQUENCE_decode_aper,
+	SEQUENCE_encode_aper,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1,
+	sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1)
+		/sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1)
+		/sizeof(asn_DEF_RANAP_MBMSIPMulticastAddressandAPNlist_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RANAP_MBMSIPMulticastAddressandAPNlist_1,
+	4,	/* Elements count */
+	&asn_SPC_RANAP_MBMSIPMulticastAddressandAPNlist_specs_1	/* Additional specs */
+};
+
