diff --git a/src/ranap/RANAP_UE-AggregateMaximumBitRate.c b/src/ranap/RANAP_UE-AggregateMaximumBitRate.c
new file mode 100644
index 0000000..8c41b8f
--- /dev/null
+++ b/src/ranap/RANAP_UE-AggregateMaximumBitRate.c
@@ -0,0 +1,73 @@
+/*
+ * 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_UE-AggregateMaximumBitRate.h"
+
+static asn_TYPE_member_t asn_MBR_RANAP_UE_AggregateMaximumBitRate_1[] = {
+	{ ATF_POINTER, 2, offsetof(struct RANAP_UE_AggregateMaximumBitRate, uE_AggregateMaximumBitRateDownlink),
+		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_UE_AggregateMaximumBitRateDownlink,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"uE-AggregateMaximumBitRateDownlink"
+		},
+	{ ATF_POINTER, 1, offsetof(struct RANAP_UE_AggregateMaximumBitRate, uE_AggregateMaximumBitRateUplink),
+		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		-1,	/* IMPLICIT tag at current level */
+		&asn_DEF_RANAP_UE_AggregateMaximumBitRateUplink,
+		0,	/* Defer constraints checking to the member type */
+		0,	/* No PER visible constraints */
+		0,
+		"uE-AggregateMaximumBitRateUplink"
+		},
+};
+static const int asn_MAP_RANAP_UE_AggregateMaximumBitRate_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANAP_UE_AggregateMaximumBitRate_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uE-AggregateMaximumBitRateDownlink */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uE-AggregateMaximumBitRateUplink */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_RANAP_UE_AggregateMaximumBitRate_specs_1 = {
+	sizeof(struct RANAP_UE_AggregateMaximumBitRate),
+	offsetof(struct RANAP_UE_AggregateMaximumBitRate, _asn_ctx),
+	asn_MAP_RANAP_UE_AggregateMaximumBitRate_tag2el_1,
+	2,	/* Count of tags in the map */
+	asn_MAP_RANAP_UE_AggregateMaximumBitRate_oms_1,	/* Optional members */
+	2, 0,	/* Root/Additions */
+	1,	/* Start extensions */
+	3	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_RANAP_UE_AggregateMaximumBitRate = {
+	"RANAP_UE-AggregateMaximumBitRate",
+	"RANAP_UE-AggregateMaximumBitRate",
+	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_UE_AggregateMaximumBitRate_tags_1,
+	sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1)
+		/sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1[0]), /* 1 */
+	asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1,	/* Same as above */
+	sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1)
+		/sizeof(asn_DEF_RANAP_UE_AggregateMaximumBitRate_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
+	asn_MBR_RANAP_UE_AggregateMaximumBitRate_1,
+	2,	/* Elements count */
+	&asn_SPC_RANAP_UE_AggregateMaximumBitRate_specs_1	/* Additional specs */
+};
+
