- dissect_ber_object_identifier() returns value as tvb
[obnox/wireshark/wip.git] / epan / dissectors / packet-ftam.c
index f92ab1fc98142177ae4ee1c4bd4bdc7ae92e8dc7..c9097d8ec6d2ada27033eeb4db800f60892a0160 100644 (file)
@@ -1,6 +1,6 @@
 /* Do not modify this file.                                                   */
 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
-/* ./packet-ftam.c                                                            */
+/* .\packet-ftam.c                                                            */
 /* ../../tools/asn2eth.py -X -b -e -p ftam -c ftam.cnf -s packet-ftam-template ISO8571-FTAM.asn */
 
 /* Input file: packet-ftam-template.c */
 #include "packet-acse.h"
 #include "packet-ftam.h"
 
-#define PNAME  "FTAM"
+#define PNAME  "ISO 8571 FTAM"
 #define PSNAME "FTAM"
 #define PFNAME "ftam"
 
 /* Initialize the protocol and registered fields */
 int proto_ftam = -1;
 
-static char object_identifier_id[MAX_OID_STR_LEN];
+static const char *object_identifier_id;
+/* Declare the function to avoid a compiler warning */
+static int dissect_ftam_OR_Set(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_);
 
 
 /*--- Included file: packet-ftam-hf.c ---*/
@@ -66,6 +68,7 @@ static int hf_ftam_fTAM_Regime_PDU = -1;          /* FTAM_Regime_PDU */
 static int hf_ftam_file_PDU = -1;                 /* File_PDU */
 static int hf_ftam_bulk_Data_PDU = -1;            /* Bulk_Data_PDU */
 static int hf_ftam_fSM_PDU = -1;                  /* FSM_PDU */
+static int hf_ftam_nBS9 = -1;                     /* F_READ_ATTRIB_response */
 static int hf_ftam_f_initialize_request = -1;     /* F_INITIALIZE_request */
 static int hf_ftam_f_initialize_response = -1;    /* F_INITIALIZE_response */
 static int hf_ftam_f_terminate_request = -1;      /* F_TERMINATE_request */
@@ -381,7 +384,7 @@ static int hf_ftam_abstract_Syntax_Pattern = -1;  /* Object_Identifier_Pattern *
 static int hf_ftam_Attribute_Extensions_Pattern_item = -1;  /* Attribute_Extensions_Pattern_item */
 static int hf_ftam_extension_set_attribute_Patterns = -1;  /* T_extension_set_attribute_Patterns */
 static int hf_ftam_extension_set_attribute_Patterns_item = -1;  /* T_extension_set_attribute_Patterns_item */
-static int hf_ftam_attribute_extension_attribute_identifier = -1;  /* OBJECT_IDENTIFIER */
+static int hf_ftam_attribute_extension_attribute_identifier = -1;  /* T_extension_attribute_identifier1 */
 static int hf_ftam_extension_attribute_Pattern = -1;  /* T_extension_attribute_Pattern */
 static int hf_ftam_Objects_Attributes_List_item = -1;  /* Read_Attributes */
 static int hf_ftam_success_Object_count = -1;     /* INTEGER */
@@ -477,7 +480,7 @@ static int hf_ftam_Attribute_Names_read_Object_size = -1;
 static int hf_ftam_Attribute_Names_read_future_Object_size = -1;
 static int hf_ftam_Attribute_Names_read_access_control = -1;
 static int hf_ftam_Attribute_Names_read_path_access_control = -1;
-static int hf_ftam_Attribute_Names_read_l8gal_qualifiCatiOnS = -1;
+static int hf_ftam_Attribute_Names_read_legal_qualifiCatiOnS = -1;
 static int hf_ftam_Attribute_Names_read_private_use = -1;
 
 /*--- End of included file: packet-ftam-hf.c ---*/
@@ -666,6 +669,7 @@ static int dissect_actual_values4_impl(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_acse_EXTERNAL(TRUE, tvb, offset, pinfo, tree, hf_ftam_actual_values4);
 }
 
+
 static const asn_namedbit Protocol_Version_bits[] = {
   {  0, &hf_ftam_Protocol_Version_version_1, -1, -1, "version-1", NULL },
   {  1, &hf_ftam_Protocol_Version_version_2, -1, -1, "version-2", NULL },
@@ -677,14 +681,15 @@ dissect_ftam_Protocol_Version(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
                                  Protocol_Version_bits, hf_index, ett_ftam_Protocol_Version,
                                  NULL);
@@ -697,19 +702,21 @@ static int dissect_protocol_Version(packet_info *pinfo, proto_tree *tree, tvbuff
 }
 
 
+
 static int
 dissect_ftam_Implementation_Information(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_restricted_string(TRUE, 1,
                                          pinfo, tree, tvb, offset, hf_index,
                                          NULL);
@@ -722,6 +729,7 @@ static int dissect_implementation_information(packet_info *pinfo, proto_tree *tr
 }
 
 
+
 static int
 dissect_ftam_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
@@ -747,6 +755,7 @@ static int dissect_boolean_value_impl(packet_info *pinfo, proto_tree *tree, tvbu
   return dissect_ftam_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_ftam_boolean_value);
 }
 
+
 static const asn_namedbit Service_Class_bits[] = {
   {  0, &hf_ftam_Service_Class_unconstrained_class, -1, -1, "unconstrained-class", NULL },
   {  1, &hf_ftam_Service_Class_management_class, -1, -1, "management-class", NULL },
@@ -761,14 +770,15 @@ dissect_ftam_Service_Class(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
                                  Service_Class_bits, hf_index, ett_ftam_Service_Class,
                                  NULL);
@@ -780,6 +790,7 @@ static int dissect_service_class(packet_info *pinfo, proto_tree *tree, tvbuff_t
   return dissect_ftam_Service_Class(FALSE, tvb, offset, pinfo, tree, hf_ftam_service_class);
 }
 
+
 static const asn_namedbit Functional_Units_bits[] = {
   {  2, &hf_ftam_Functional_Units_read, -1, -1, "read", NULL },
   {  3, &hf_ftam_Functional_Units_write, -1, -1, "write", NULL },
@@ -804,14 +815,15 @@ dissect_ftam_Functional_Units(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
                                  Functional_Units_bits, hf_index, ett_ftam_Functional_Units,
                                  NULL);
@@ -824,6 +836,7 @@ static int dissect_functional_units(packet_info *pinfo, proto_tree *tree, tvbuff
   return dissect_ftam_Functional_Units(FALSE, tvb, offset, pinfo, tree, hf_ftam_functional_units);
 }
 
+
 static const asn_namedbit Attribute_Groups_bits[] = {
   {  0, &hf_ftam_Attribute_Groups_storage, -1, -1, "storage", NULL },
   {  1, &hf_ftam_Attribute_Groups_security, -1, -1, "security", NULL },
@@ -837,14 +850,15 @@ dissect_ftam_Attribute_Groups(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
                                  Attribute_Groups_bits, hf_index, ett_ftam_Attribute_Groups,
                                  NULL);
@@ -858,6 +872,7 @@ static int dissect_attribute_groups(packet_info *pinfo, proto_tree *tree, tvbuff
 }
 
 
+
 static int
 dissect_ftam_Shared_ASE_Information(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_acse_EXTERNAL(implicit_tag, tvb, offset, pinfo, tree, hf_index);
@@ -886,14 +901,15 @@ dissect_ftam_FTAM_Quality_of_Service(gboolean implicit_tag _U_, tvbuff_t *tvb, i
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
                                   NULL);
 
@@ -911,16 +927,17 @@ dissect_ftam_Document_Type_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int of
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
+ guint32 len1;
 
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
+  offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id);
 
-  offset = dissect_ber_object_identifier(TRUE, pinfo, tree, tvb, offset,
-                                         hf_index, object_identifier_id);
 
 
   return offset;
@@ -936,14 +953,15 @@ dissect_ftam_Abstract_Syntax_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_object_identifier(TRUE, pinfo, tree, tvb, offset, hf_index,
                                             NULL);
 
@@ -976,8 +994,9 @@ static const ber_choice_t Contents_Type_List_item_choice[] = {
 
 static int
 dissect_ftam_Contents_Type_List_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Contents_Type_List_item_choice, hf_index, ett_ftam_Contents_Type_List_item, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Contents_Type_List_item_choice, hf_index, ett_ftam_Contents_Type_List_item,
+                                 NULL);
 
   return offset;
 }
@@ -985,8 +1004,9 @@ static int dissect_Contents_Type_List_item(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_Contents_Type_List_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Contents_Type_List_item);
 }
 
+
 static const ber_sequence_t Contents_Type_List_sequence_of[1] = {
-  { BER_CLASS_APP, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Contents_Type_List_item },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_Contents_Type_List_item },
 };
 
 static int
@@ -994,14 +1014,15 @@ dissect_ftam_Contents_Type_List(gboolean implicit_tag _U_, tvbuff_t *tvb, int of
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
                                    Contents_Type_List_sequence_of, hf_index, ett_ftam_Contents_Type_List);
 
@@ -1014,19 +1035,21 @@ static int dissect_contents_type_list(packet_info *pinfo, proto_tree *tree, tvbu
 }
 
 
+
 static int
 dissect_ftam_User_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_restricted_string(TRUE, 22,
                                          pinfo, tree, tvb, offset, hf_index,
                                          NULL);
@@ -1044,19 +1067,21 @@ static int dissect_actual_values6(packet_info *pinfo, proto_tree *tree, tvbuff_t
 }
 
 
+
 static int
 dissect_ftam_Account(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_restricted_string(TRUE, 4,
                                          pinfo, tree, tvb, offset, hf_index,
                                          NULL);
@@ -1071,11 +1096,12 @@ static int dissect_actual_values2(packet_info *pinfo, proto_tree *tree, tvbuff_t
 }
 
 
+
 static int
 dissect_ftam_GraphicString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_restricted_string(implicit_tag, 0,
-                                         pinfo, tree, tvb, offset, hf_index,
-                                         NULL);
+  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
+                                            pinfo, tree, tvb, offset, hf_index,
+                                            NULL);
 
   return offset;
 }
@@ -1105,10 +1131,11 @@ static int dissect_Pathname_item(packet_info *pinfo, proto_tree *tree, tvbuff_t
 }
 
 
+
 static int
 dissect_ftam_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
-                                    NULL);
+                                       NULL);
 
   return offset;
 }
@@ -1134,15 +1161,16 @@ dissect_ftam_Password(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pack
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
                               Password_choice, hf_index, ett_ftam_Password, NULL);
 
 
@@ -1295,6 +1323,7 @@ static int dissect_success_Object_count_impl(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_ftam_success_Object_count);
 }
 
+
 static const ber_sequence_t F_INITIALIZE_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_protocol_Version },
   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_implementation_information },
@@ -1315,7 +1344,7 @@ static const ber_sequence_t F_INITIALIZE_request_sequence[] = {
 static int
 dissect_ftam_F_INITIALIZE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_INITIALIZE_request_sequence, hf_index, ett_ftam_F_INITIALIZE_request);
+                                   F_INITIALIZE_request_sequence, hf_index, ett_ftam_F_INITIALIZE_request);
 
   return offset;
 }
@@ -1336,14 +1365,15 @@ dissect_ftam_State_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
                                   NULL);
 
@@ -1368,14 +1398,15 @@ dissect_ftam_Action_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
                                   NULL);
 
@@ -1433,6 +1464,7 @@ static int dissect_error_Source_impl(packet_info *pinfo, proto_tree *tree, tvbuf
   return dissect_ftam_Entity_Reference(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_Source);
 }
 
+
 static const ber_sequence_t Diagnostic_item_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_diagnostic_type_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_identifier_impl },
@@ -1446,7 +1478,7 @@ static const ber_sequence_t Diagnostic_item_sequence[] = {
 static int
 dissect_ftam_Diagnostic_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Diagnostic_item_sequence, hf_index, ett_ftam_Diagnostic_item);
+                                   Diagnostic_item_sequence, hf_index, ett_ftam_Diagnostic_item);
 
   return offset;
 }
@@ -1454,6 +1486,7 @@ static int dissect_Diagnostic_item(packet_info *pinfo, proto_tree *tree, tvbuff_
   return dissect_ftam_Diagnostic_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Diagnostic_item);
 }
 
+
 static const ber_sequence_t Diagnostic_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Diagnostic_item },
 };
@@ -1463,14 +1496,15 @@ dissect_ftam_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pa
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
                                    Diagnostic_sequence_of, hf_index, ett_ftam_Diagnostic);
 
@@ -1482,6 +1516,7 @@ static int dissect_diagnostic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
   return dissect_ftam_Diagnostic(FALSE, tvb, offset, pinfo, tree, hf_ftam_diagnostic);
 }
 
+
 static const ber_sequence_t F_INITIALIZE_response_sequence[] = {
   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
@@ -1502,7 +1537,7 @@ static const ber_sequence_t F_INITIALIZE_response_sequence[] = {
 static int
 dissect_ftam_F_INITIALIZE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_INITIALIZE_response_sequence, hf_index, ett_ftam_F_INITIALIZE_response);
+                                   F_INITIALIZE_response_sequence, hf_index, ett_ftam_F_INITIALIZE_response);
 
   return offset;
 }
@@ -1510,6 +1545,7 @@ static int dissect_f_initialize_response_impl(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_F_INITIALIZE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_initialize_response);
 }
 
+
 static const ber_sequence_t F_TERMINATE_request_sequence[] = {
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
   { 0, 0, 0, NULL }
@@ -1518,7 +1554,7 @@ static const ber_sequence_t F_TERMINATE_request_sequence[] = {
 static int
 dissect_ftam_F_TERMINATE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_TERMINATE_request_sequence, hf_index, ett_ftam_F_TERMINATE_request);
+                                   F_TERMINATE_request_sequence, hf_index, ett_ftam_F_TERMINATE_request);
 
   return offset;
 }
@@ -1526,6 +1562,7 @@ static int dissect_f_terminate_request_impl(packet_info *pinfo, proto_tree *tree
   return dissect_ftam_F_TERMINATE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_terminate_request);
 }
 
+
 static const ber_sequence_t Charging_item_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_resource_identifier_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_unit_impl },
@@ -1536,7 +1573,7 @@ static const ber_sequence_t Charging_item_sequence[] = {
 static int
 dissect_ftam_Charging_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Charging_item_sequence, hf_index, ett_ftam_Charging_item);
+                                   Charging_item_sequence, hf_index, ett_ftam_Charging_item);
 
   return offset;
 }
@@ -1544,6 +1581,7 @@ static int dissect_Charging_item(packet_info *pinfo, proto_tree *tree, tvbuff_t
   return dissect_ftam_Charging_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Charging_item);
 }
 
+
 static const ber_sequence_t Charging_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Charging_item },
 };
@@ -1553,14 +1591,15 @@ dissect_ftam_Charging(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pack
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
                                    Charging_sequence_of, hf_index, ett_ftam_Charging);
 
@@ -1572,6 +1611,7 @@ static int dissect_charging(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
   return dissect_ftam_Charging(FALSE, tvb, offset, pinfo, tree, hf_ftam_charging);
 }
 
+
 static const ber_sequence_t F_TERMINATE_response_sequence[] = {
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
   { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
@@ -1581,7 +1621,7 @@ static const ber_sequence_t F_TERMINATE_response_sequence[] = {
 static int
 dissect_ftam_F_TERMINATE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_TERMINATE_response_sequence, hf_index, ett_ftam_F_TERMINATE_response);
+                                   F_TERMINATE_response_sequence, hf_index, ett_ftam_F_TERMINATE_response);
 
   return offset;
 }
@@ -1589,6 +1629,7 @@ static int dissect_f_terminate_response_impl(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_F_TERMINATE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_terminate_response);
 }
 
+
 static const ber_sequence_t F_U_ABORT_request_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
@@ -1598,7 +1639,7 @@ static const ber_sequence_t F_U_ABORT_request_sequence[] = {
 static int
 dissect_ftam_F_U_ABORT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_U_ABORT_request_sequence, hf_index, ett_ftam_F_U_ABORT_request);
+                                   F_U_ABORT_request_sequence, hf_index, ett_ftam_F_U_ABORT_request);
 
   return offset;
 }
@@ -1606,6 +1647,7 @@ static int dissect_f_u_abort_request_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_U_ABORT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_u_abort_request);
 }
 
+
 static const ber_sequence_t F_P_ABORT_request_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
@@ -1615,7 +1657,7 @@ static const ber_sequence_t F_P_ABORT_request_sequence[] = {
 static int
 dissect_ftam_F_P_ABORT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_P_ABORT_request_sequence, hf_index, ett_ftam_F_P_ABORT_request);
+                                   F_P_ABORT_request_sequence, hf_index, ett_ftam_F_P_ABORT_request);
 
   return offset;
 }
@@ -1648,8 +1690,10 @@ static int
 dissect_ftam_FTAM_Regime_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   gint branch_taken;
 
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              FTAM_Regime_PDU_choice, hf_index, ett_ftam_FTAM_Regime_PDU, &branch_taken);
+    offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 FTAM_Regime_PDU_choice, hf_index, ett_ftam_FTAM_Regime_PDU,
+                                 &branch_taken);
+
   
   if( (branch_taken!=-1) && ftam_FTAM_Regime_PDU_vals[branch_taken].strptr ){
        if (check_col(pinfo->cinfo, COL_INFO)) {
@@ -1664,14 +1708,15 @@ static int dissect_fTAM_Regime_PDU(packet_info *pinfo, proto_tree *tree, tvbuff_
   return dissect_ftam_FTAM_Regime_PDU(FALSE, tvb, offset, pinfo, tree, hf_ftam_fTAM_Regime_PDU);
 }
 
+
 static const ber_sequence_t Pathname_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_Pathname_item },
 };
 
-static int
+int
 dissect_ftam_Pathname(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   Pathname_sequence_of, hf_index, ett_ftam_Pathname);
+                                      Pathname_sequence_of, hf_index, ett_ftam_Pathname);
 
   return offset;
 }
@@ -1700,8 +1745,9 @@ static const ber_choice_t Pathname_Attribute_choice[] = {
 
 static int
 dissect_ftam_Pathname_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Pathname_Attribute_choice, hf_index, ett_ftam_Pathname_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Pathname_Attribute_choice, hf_index, ett_ftam_Pathname_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -1724,8 +1770,9 @@ static int dissect_root_directory(packet_info *pinfo, proto_tree *tree, tvbuff_t
   return dissect_ftam_Pathname_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_root_directory);
 }
 
+
 static const ber_sequence_t Select_Attributes_sequence[] = {
-  { -1/*choice*/ , -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
   { 0, 0, 0, NULL }
 };
 
@@ -1734,14 +1781,15 @@ dissect_ftam_Select_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
                                 Select_Attributes_sequence, hf_index, ett_ftam_Select_Attributes);
 
@@ -1752,6 +1800,7 @@ static int dissect_select_attributes(packet_info *pinfo, proto_tree *tree, tvbuf
   return dissect_ftam_Select_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_select_attributes);
 }
 
+
 static const asn_namedbit Access_Request_bits[] = {
   {  0, &hf_ftam_Access_Request_read, -1, -1, "read", NULL },
   {  1, &hf_ftam_Access_Request_insert, -1, -1, "insert", NULL },
@@ -1769,14 +1818,15 @@ dissect_ftam_Access_Request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+   if(!implicit_tag){
+     /* XXX  asn2eth can not yet handle tagged assignment yes so this
+      * XXX is some conformance file magic to work around that bug
+      */
+      offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+      offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+  }
   offset = dissect_ber_bitstring(TRUE, pinfo, tree, tvb, offset,
                                  Access_Request_bits, hf_index, ett_ftam_Access_Request,
                                  NULL);
@@ -1790,6 +1840,7 @@ static int dissect_action_list_impl(packet_info *pinfo, proto_tree *tree, tvbuff
   return dissect_ftam_Access_Request(TRUE, tvb, offset, pinfo, tree, hf_ftam_action_list);
 }
 
+
 static const ber_sequence_t Pass_Passwords_sequence_of[1] = {
   { BER_CLASS_APP, 17, BER_FLAGS_NOOWNTAG, dissect_Pass_Passwords_item },
 };
@@ -1797,7 +1848,7 @@ static const ber_sequence_t Pass_Passwords_sequence_of[1] = {
 static int
 dissect_ftam_Pass_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   Pass_Passwords_sequence_of, hf_index, ett_ftam_Pass_Passwords);
+                                      Pass_Passwords_sequence_of, hf_index, ett_ftam_Pass_Passwords);
 
   return offset;
 }
@@ -1805,6 +1856,7 @@ static int dissect_pass_passwords_impl(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_Pass_Passwords(TRUE, tvb, offset, pinfo, tree, hf_ftam_pass_passwords);
 }
 
+
 static const ber_sequence_t Access_Passwords_sequence[] = {
   { BER_CLASS_CON, 0, 0, dissect_read_password },
   { BER_CLASS_CON, 1, 0, dissect_insert_password },
@@ -1824,14 +1876,15 @@ dissect_ftam_Access_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
                                 Access_Passwords_sequence, hf_index, ett_ftam_Access_Passwords);
 
@@ -1845,6 +1898,7 @@ static int dissect_passwords_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t
   return dissect_ftam_Access_Passwords(TRUE, tvb, offset, pinfo, tree, hf_ftam_passwords);
 }
 
+
 static const ber_sequence_t Path_Access_Passwords_item_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_password_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_password_impl },
@@ -1862,7 +1916,7 @@ static const ber_sequence_t Path_Access_Passwords_item_sequence[] = {
 static int
 dissect_ftam_Path_Access_Passwords_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Path_Access_Passwords_item_sequence, hf_index, ett_ftam_Path_Access_Passwords_item);
+                                   Path_Access_Passwords_item_sequence, hf_index, ett_ftam_Path_Access_Passwords_item);
 
   return offset;
 }
@@ -1870,6 +1924,7 @@ static int dissect_Path_Access_Passwords_item(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_Path_Access_Passwords_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Path_Access_Passwords_item);
 }
 
+
 static const ber_sequence_t Path_Access_Passwords_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Path_Access_Passwords_item },
 };
@@ -1879,14 +1934,15 @@ dissect_ftam_Path_Access_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb, int
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
                                    Path_Access_Passwords_sequence_of, hf_index, ett_ftam_Path_Access_Passwords);
 
@@ -1939,6 +1995,7 @@ static int dissect_delete_Object_lock_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_Lock(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_Object_lock);
 }
 
+
 static const ber_sequence_t Concurrency_Control_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_lock_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_lock_impl },
@@ -1956,14 +2013,15 @@ dissect_ftam_Concurrency_Control(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
                                 Concurrency_Control_sequence, hf_index, ett_ftam_Concurrency_Control);
 
@@ -1975,6 +2033,7 @@ static int dissect_concurrency_control(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_Concurrency_Control(FALSE, tvb, offset, pinfo, tree, hf_ftam_concurrency_control);
 }
 
+
 static const ber_sequence_t F_SELECT_request_sequence[] = {
   { BER_CLASS_APP, 19, BER_FLAGS_NOOWNTAG, dissect_select_attributes },
   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
@@ -1989,7 +2048,7 @@ static const ber_sequence_t F_SELECT_request_sequence[] = {
 static int
 dissect_ftam_F_SELECT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_SELECT_request_sequence, hf_index, ett_ftam_F_SELECT_request);
+                                   F_SELECT_request_sequence, hf_index, ett_ftam_F_SELECT_request);
 
   return offset;
 }
@@ -1998,19 +2057,21 @@ static int dissect_f_select_request_impl(packet_info *pinfo, proto_tree *tree, t
 }
 
 
+
 static int
 dissect_ftam_Referent_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_boolean(TRUE, pinfo, tree, tvb, offset, hf_index);
 
 
@@ -2020,6 +2081,7 @@ static int dissect_referent_indicator(packet_info *pinfo, proto_tree *tree, tvbu
   return dissect_ftam_Referent_Indicator(FALSE, tvb, offset, pinfo, tree, hf_ftam_referent_indicator);
 }
 
+
 static const ber_sequence_t F_SELECT_response_sequence[] = {
   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
@@ -2033,7 +2095,7 @@ static const ber_sequence_t F_SELECT_response_sequence[] = {
 static int
 dissect_ftam_F_SELECT_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_SELECT_response_sequence, hf_index, ett_ftam_F_SELECT_response);
+                                   F_SELECT_response_sequence, hf_index, ett_ftam_F_SELECT_response);
 
   return offset;
 }
@@ -2041,6 +2103,7 @@ static int dissect_f_select_response_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_SELECT_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_response);
 }
 
+
 static const ber_sequence_t F_DESELECT_request_sequence[] = {
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
   { 0, 0, 0, NULL }
@@ -2049,7 +2112,7 @@ static const ber_sequence_t F_DESELECT_request_sequence[] = {
 static int
 dissect_ftam_F_DESELECT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_DESELECT_request_sequence, hf_index, ett_ftam_F_DESELECT_request);
+                                   F_DESELECT_request_sequence, hf_index, ett_ftam_F_DESELECT_request);
 
   return offset;
 }
@@ -2057,6 +2120,7 @@ static int dissect_f_deselect_request_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_DESELECT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_deselect_request);
 }
 
+
 static const ber_sequence_t F_DESELECT_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
@@ -2068,7 +2132,7 @@ static const ber_sequence_t F_DESELECT_response_sequence[] = {
 static int
 dissect_ftam_F_DESELECT_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_DESELECT_response_sequence, hf_index, ett_ftam_F_DESELECT_response);
+                                   F_DESELECT_response_sequence, hf_index, ett_ftam_F_DESELECT_response);
 
   return offset;
 }
@@ -2117,6 +2181,7 @@ static int dissect_object_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff
   return dissect_ftam_Object_Type_Attribute(TRUE, tvb, offset, pinfo, tree, hf_ftam_object_type);
 }
 
+
 static const asn_namedbit Permitted_Actions_Attribute_bits[] = {
   {  0, &hf_ftam_Permitted_Actions_Attribute_read, -1, -1, "read", NULL },
   {  1, &hf_ftam_Permitted_Actions_Attribute_insert, -1, -1, "insert", NULL },
@@ -2134,11 +2199,11 @@ static const asn_namedbit Permitted_Actions_Attribute_bits[] = {
   { 0, NULL, 0, 0, NULL, NULL }
 };
 
-static int
+int
 dissect_ftam_Permitted_Actions_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
-                                 Permitted_Actions_Attribute_bits, hf_index, ett_ftam_Permitted_Actions_Attribute,
-                                 NULL);
+                                    Permitted_Actions_Attribute_bits, hf_index, ett_ftam_Permitted_Actions_Attribute,
+                                    NULL);
 
   return offset;
 }
@@ -2159,6 +2224,7 @@ static int dissect_parameter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb
   return dissect_ftam_T_parameter(FALSE, tvb, offset, pinfo, tree, hf_ftam_parameter);
 }
 
+
 static const ber_sequence_t T_document_type_sequence[] = {
   { BER_CLASS_APP, 14, BER_FLAGS_NOOWNTAG, dissect_document_type_name },
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_parameter },
@@ -2168,7 +2234,7 @@ static const ber_sequence_t T_document_type_sequence[] = {
 static int
 dissect_ftam_T_document_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                T_document_type_sequence, hf_index, ett_ftam_T_document_type);
+                                   T_document_type_sequence, hf_index, ett_ftam_T_document_type);
 
   return offset;
 }
@@ -2183,14 +2249,15 @@ dissect_ftam_Constraint_Set_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_object_identifier(TRUE, pinfo, tree, tvb, offset, hf_index,
                                             NULL);
 
@@ -2201,6 +2268,7 @@ static int dissect_constraint_set_name(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_Constraint_Set_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_constraint_set_name);
 }
 
+
 static const ber_sequence_t T_constraint_set_and_abstract_Syntax_sequence[] = {
   { BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_constraint_set_name },
   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_abstract_Syntax_name },
@@ -2210,7 +2278,7 @@ static const ber_sequence_t T_constraint_set_and_abstract_Syntax_sequence[] = {
 static int
 dissect_ftam_T_constraint_set_and_abstract_Syntax(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                T_constraint_set_and_abstract_Syntax_sequence, hf_index, ett_ftam_T_constraint_set_and_abstract_Syntax);
+                                   T_constraint_set_and_abstract_Syntax_sequence, hf_index, ett_ftam_T_constraint_set_and_abstract_Syntax);
 
   return offset;
 }
@@ -2233,8 +2301,9 @@ static const ber_choice_t Contents_Type_Attribute_choice[] = {
 
 static int
 dissect_ftam_Contents_Type_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Contents_Type_Attribute_choice, hf_index, ett_ftam_Contents_Type_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Contents_Type_Attribute_choice, hf_index, ett_ftam_Contents_Type_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -2281,8 +2350,9 @@ static const ber_choice_t Account_Attribute_choice[] = {
 
 static int
 dissect_ftam_Account_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Account_Attribute_choice, hf_index, ett_ftam_Account_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Account_Attribute_choice, hf_index, ett_ftam_Account_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -2310,7 +2380,7 @@ static int dissect_actual_values8_impl(packet_info *pinfo, proto_tree *tree, tvb
 }
 
 
-static const value_string ftam_Object_Availability_Attribute_vals[] = {
+const value_string ftam_Object_Availability_Attribute_vals[] = {
   {   0, "no-value-available" },
   {   1, "actual-values" },
   { 0, NULL }
@@ -2322,10 +2392,11 @@ static const ber_choice_t Object_Availability_Attribute_choice[] = {
   { 0, 0, 0, 0, NULL }
 };
 
-static int
+int
 dissect_ftam_Object_Availability_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Object_Availability_Attribute_choice, hf_index, ett_ftam_Object_Availability_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Object_Availability_Attribute_choice, hf_index, ett_ftam_Object_Availability_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -2334,7 +2405,7 @@ static int dissect_object_availability(packet_info *pinfo, proto_tree *tree, tvb
 }
 
 
-static const value_string ftam_Object_Size_Attribute_vals[] = {
+const value_string ftam_Object_Size_Attribute_vals[] = {
   {   0, "no-value-available" },
   {   1, "actual-values" },
   { 0, NULL }
@@ -2346,10 +2417,11 @@ static const ber_choice_t Object_Size_Attribute_choice[] = {
   { 0, 0, 0, 0, NULL }
 };
 
-static int
+int
 dissect_ftam_Object_Size_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Object_Size_Attribute_choice, hf_index, ett_ftam_Object_Size_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Object_Size_Attribute_choice, hf_index, ett_ftam_Object_Size_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -2360,6 +2432,7 @@ static int dissect_object_size(packet_info *pinfo, proto_tree *tree, tvbuff_t *t
   return dissect_ftam_Object_Size_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_object_size);
 }
 
+
 static const asn_namedbit Concurrency_Key_bits[] = {
   {  0, &hf_ftam_Concurrency_Key_not_required, -1, -1, "not-required", NULL },
   {  1, &hf_ftam_Concurrency_Key_shared, -1, -1, "shared", NULL },
@@ -2371,8 +2444,8 @@ static const asn_namedbit Concurrency_Key_bits[] = {
 static int
 dissect_ftam_Concurrency_Key(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
-                                 Concurrency_Key_bits, hf_index, ett_ftam_Concurrency_Key,
-                                 NULL);
+                                    Concurrency_Key_bits, hf_index, ett_ftam_Concurrency_Key,
+                                    NULL);
 
   return offset;
 }
@@ -2401,6 +2474,7 @@ static int dissect_delete_Object_key_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_Concurrency_Key(TRUE, tvb, offset, pinfo, tree, hf_ftam_delete_Object_key);
 }
 
+
 static const ber_sequence_t Concurrency_Access_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_read_key_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_insert_key_impl },
@@ -2413,10 +2487,10 @@ static const ber_sequence_t Concurrency_Access_sequence[] = {
   { 0, 0, 0, NULL }
 };
 
-static int
+int
 dissect_ftam_Concurrency_Access(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Concurrency_Access_sequence, hf_index, ett_ftam_Concurrency_Access);
+                                   Concurrency_Access_sequence, hf_index, ett_ftam_Concurrency_Access);
 
   return offset;
 }
@@ -2449,6 +2523,7 @@ static int dissect_ae(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int o
   return dissect_ftam_AE_qualifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_ae);
 }
 
+
 static const ber_sequence_t AE_title_sequence[] = {
   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ap },
   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ae },
@@ -2458,12 +2533,13 @@ static const ber_sequence_t AE_title_sequence[] = {
 static int
 dissect_ftam_AE_title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                AE_title_sequence, hf_index, ett_ftam_AE_title);
+                                   AE_title_sequence, hf_index, ett_ftam_AE_title);
 
   return offset;
 }
 
 
+
 static int
 dissect_ftam_Application_Entity_Title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ftam_AE_title(implicit_tag, tvb, offset, pinfo, tree, hf_index);
@@ -2474,6 +2550,7 @@ static int dissect_location_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t
   return dissect_ftam_Application_Entity_Title(TRUE, tvb, offset, pinfo, tree, hf_ftam_location);
 }
 
+
 static const ber_sequence_t Access_Control_Element_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_action_list_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_concurrency_access_impl },
@@ -2486,7 +2563,7 @@ static const ber_sequence_t Access_Control_Element_sequence[] = {
 static int
 dissect_ftam_Access_Control_Element(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Access_Control_Element_sequence, hf_index, ett_ftam_Access_Control_Element);
+                                   Access_Control_Element_sequence, hf_index, ett_ftam_Access_Control_Element);
 
   return offset;
 }
@@ -2500,6 +2577,7 @@ static int dissect_delete_values_item(packet_info *pinfo, proto_tree *tree, tvbu
   return dissect_ftam_Access_Control_Element(FALSE, tvb, offset, pinfo, tree, hf_ftam_delete_values_item);
 }
 
+
 static const ber_sequence_t SET_OF_Access_Control_Element_set_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_actual_values_item },
 };
@@ -2507,7 +2585,7 @@ static const ber_sequence_t SET_OF_Access_Control_Element_set_of[1] = {
 static int
 dissect_ftam_SET_OF_Access_Control_Element(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
-                              SET_OF_Access_Control_Element_set_of, hf_index, ett_ftam_SET_OF_Access_Control_Element);
+                                 SET_OF_Access_Control_Element_set_of, hf_index, ett_ftam_SET_OF_Access_Control_Element);
 
   return offset;
 }
@@ -2536,8 +2614,9 @@ static const ber_choice_t Access_Control_Attribute_choice[] = {
 
 static int
 dissect_ftam_Access_Control_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Access_Control_Attribute_choice, hf_index, ett_ftam_Access_Control_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Access_Control_Attribute_choice, hf_index, ett_ftam_Access_Control_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -2552,7 +2631,7 @@ static int dissect_path_access_control(packet_info *pinfo, proto_tree *tree, tvb
 }
 
 
-static const value_string ftam_Legal_Qualification_Attribute_vals[] = {
+const value_string ftam_Legal_Qualification_Attribute_vals[] = {
   {   0, "no-value-available" },
   {   1, "actual-values" },
   { 0, NULL }
@@ -2564,10 +2643,11 @@ static const ber_choice_t Legal_Qualification_Attribute_choice[] = {
   { 0, 0, 0, 0, NULL }
 };
 
-static int
+int
 dissect_ftam_Legal_Qualification_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Legal_Qualification_Attribute_choice, hf_index, ett_ftam_Legal_Qualification_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Legal_Qualification_Attribute_choice, hf_index, ett_ftam_Legal_Qualification_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -2576,7 +2656,7 @@ static int dissect_legal_qualification(packet_info *pinfo, proto_tree *tree, tvb
 }
 
 
-static const value_string ftam_Private_Use_Attribute_vals[] = {
+const value_string ftam_Private_Use_Attribute_vals[] = {
   {   0, "no-value-available" },
   {   1, "abstract-Syntax-not-supported" },
   {   2, "actual-values" },
@@ -2590,10 +2670,11 @@ static const ber_choice_t Private_Use_Attribute_choice[] = {
   { 0, 0, 0, 0, NULL }
 };
 
-static int
+int
 dissect_ftam_Private_Use_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Private_Use_Attribute_choice, hf_index, ett_ftam_Private_Use_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Private_Use_Attribute_choice, hf_index, ett_ftam_Private_Use_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -2605,8 +2686,7 @@ static int dissect_private_use(packet_info *pinfo, proto_tree *tree, tvbuff_t *t
 
 static int
 dissect_ftam_Extension_Set_Identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index,
-                                            NULL);
+  offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
 
   return offset;
 }
@@ -2618,9 +2698,7 @@ static int dissect_extension_set_identifier_impl(packet_info *pinfo, proto_tree
 
 static int
 dissect_ftam_T_extension_attribute_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset,
-                                         hf_index, object_identifier_id);
-
+  offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id);
 
   return offset;
 }
@@ -2641,6 +2719,7 @@ static int dissect_extension_attribute(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_T_extension_attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute);
 }
 
+
 static const ber_sequence_t Extension_Attribute_sequence[] = {
   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extension_attribute_identifier },
   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_extension_attribute },
@@ -2650,7 +2729,7 @@ static const ber_sequence_t Extension_Attribute_sequence[] = {
 static int
 dissect_ftam_Extension_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Extension_Attribute_sequence, hf_index, ett_ftam_Extension_Attribute);
+                                   Extension_Attribute_sequence, hf_index, ett_ftam_Extension_Attribute);
 
   return offset;
 }
@@ -2658,6 +2737,7 @@ static int dissect_extension_set_attributes_item(packet_info *pinfo, proto_tree
   return dissect_ftam_Extension_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attributes_item);
 }
 
+
 static const ber_sequence_t SEQUENCE_OF_Extension_Attribute_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extension_set_attributes_item },
 };
@@ -2665,7 +2745,7 @@ static const ber_sequence_t SEQUENCE_OF_Extension_Attribute_sequence_of[1] = {
 static int
 dissect_ftam_SEQUENCE_OF_Extension_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   SEQUENCE_OF_Extension_Attribute_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Extension_Attribute);
+                                      SEQUENCE_OF_Extension_Attribute_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Extension_Attribute);
 
   return offset;
 }
@@ -2673,6 +2753,7 @@ static int dissect_extension_set_attributes(packet_info *pinfo, proto_tree *tree
   return dissect_ftam_SEQUENCE_OF_Extension_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attributes);
 }
 
+
 static const ber_sequence_t Attribute_Extension_Set_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_set_identifier_impl },
   { BER_CLASS_CON, 1, 0, dissect_extension_set_attributes },
@@ -2682,7 +2763,7 @@ static const ber_sequence_t Attribute_Extension_Set_sequence[] = {
 static int
 dissect_ftam_Attribute_Extension_Set(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Attribute_Extension_Set_sequence, hf_index, ett_ftam_Attribute_Extension_Set);
+                                   Attribute_Extension_Set_sequence, hf_index, ett_ftam_Attribute_Extension_Set);
 
   return offset;
 }
@@ -2690,14 +2771,15 @@ static int dissect_Attribute_Extensions_item(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_Attribute_Extension_Set(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Extensions_item);
 }
 
+
 static const ber_sequence_t Attribute_Extensions_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Extensions_item },
 };
 
-static int
+int
 dissect_ftam_Attribute_Extensions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   Attribute_Extensions_sequence_of, hf_index, ett_ftam_Attribute_Extensions);
+                                      Attribute_Extensions_sequence_of, hf_index, ett_ftam_Attribute_Extensions);
 
   return offset;
 }
@@ -2705,8 +2787,9 @@ static int dissect_attribute_extensions_impl(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_Attribute_Extensions(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_extensions);
 }
 
+
 static const ber_sequence_t Create_Attributes_sequence[] = {
-  { -1/*choice*/ , -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_object_type_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_permitted_actions_impl },
   { BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_contents_type },
@@ -2726,14 +2809,15 @@ dissect_ftam_Create_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
                                 Create_Attributes_sequence, hf_index, ett_ftam_Create_Attributes);
 
@@ -2744,6 +2828,7 @@ static int dissect_initial_attributes(packet_info *pinfo, proto_tree *tree, tvbu
   return dissect_ftam_Create_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_initial_attributes);
 }
 
+
 static const ber_sequence_t F_CREATE_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
   { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
@@ -2760,7 +2845,7 @@ static const ber_sequence_t F_CREATE_request_sequence[] = {
 static int
 dissect_ftam_F_CREATE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CREATE_request_sequence, hf_index, ett_ftam_F_CREATE_request);
+                                   F_CREATE_request_sequence, hf_index, ett_ftam_F_CREATE_request);
 
   return offset;
 }
@@ -2768,6 +2853,7 @@ static int dissect_f_create_request_impl(packet_info *pinfo, proto_tree *tree, t
   return dissect_ftam_F_CREATE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_request);
 }
 
+
 static const ber_sequence_t F_CREATE_response_sequence[] = {
   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
@@ -2780,7 +2866,7 @@ static const ber_sequence_t F_CREATE_response_sequence[] = {
 static int
 dissect_ftam_F_CREATE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CREATE_response_sequence, hf_index, ett_ftam_F_CREATE_response);
+                                   F_CREATE_response_sequence, hf_index, ett_ftam_F_CREATE_response);
 
   return offset;
 }
@@ -2788,6 +2874,7 @@ static int dissect_f_create_response_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_CREATE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_response);
 }
 
+
 static const ber_sequence_t F_DELETE_request_sequence[] = {
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
   { 0, 0, 0, NULL }
@@ -2796,7 +2883,7 @@ static const ber_sequence_t F_DELETE_request_sequence[] = {
 static int
 dissect_ftam_F_DELETE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_DELETE_request_sequence, hf_index, ett_ftam_F_DELETE_request);
+                                   F_DELETE_request_sequence, hf_index, ett_ftam_F_DELETE_request);
 
   return offset;
 }
@@ -2804,6 +2891,7 @@ static int dissect_f_delete_request_impl(packet_info *pinfo, proto_tree *tree, t
   return dissect_ftam_F_DELETE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_delete_request);
 }
 
+
 static const ber_sequence_t F_DELETE_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -2815,7 +2903,7 @@ static const ber_sequence_t F_DELETE_response_sequence[] = {
 static int
 dissect_ftam_F_DELETE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_DELETE_response_sequence, hf_index, ett_ftam_F_DELETE_response);
+                                   F_DELETE_response_sequence, hf_index, ett_ftam_F_DELETE_response);
 
   return offset;
 }
@@ -2823,6 +2911,7 @@ static int dissect_f_delete_response_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_DELETE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_delete_response);
 }
 
+
 static const asn_namedbit Attribute_Names_bits[] = {
   {  0, &hf_ftam_Attribute_Names_read_pathname, -1, -1, "read-pathname", NULL },
   { 18, &hf_ftam_Attribute_Names_read_Object_type, -1, -1, "read-Object-type", NULL },
@@ -2845,7 +2934,7 @@ static const asn_namedbit Attribute_Names_bits[] = {
   { 14, &hf_ftam_Attribute_Names_read_future_Object_size, -1, -1, "read-future-Object-size", NULL },
   { 15, &hf_ftam_Attribute_Names_read_access_control, -1, -1, "read-access-control", NULL },
   { 21, &hf_ftam_Attribute_Names_read_path_access_control, -1, -1, "read-path-access-control", NULL },
-  { 16, &hf_ftam_Attribute_Names_read_l8gal_qualifiCatiOnS, -1, -1, "read-l8gal-qualifiCatiOnS", NULL },
+  { 16, &hf_ftam_Attribute_Names_read_legal_qualifiCatiOnS, -1, -1, "read-legal-qualifiCatiOnS", NULL },
   { 17, &hf_ftam_Attribute_Names_read_private_use, -1, -1, "read-private-use", NULL },
   { 0, NULL, 0, 0, NULL, NULL }
 };
@@ -2853,8 +2942,8 @@ static const asn_namedbit Attribute_Names_bits[] = {
 static int
 dissect_ftam_Attribute_Names(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
-                                 Attribute_Names_bits, hf_index, ett_ftam_Attribute_Names,
-                                 NULL);
+                                    Attribute_Names_bits, hf_index, ett_ftam_Attribute_Names,
+                                    NULL);
 
   return offset;
 }
@@ -2866,8 +2955,7 @@ static int dissect_attribute_names_impl(packet_info *pinfo, proto_tree *tree, tv
 
 static int
 dissect_ftam_Extension_Attribute_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index,
-                                            NULL);
+  offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
 
   return offset;
 }
@@ -2875,6 +2963,7 @@ static int dissect_extension_attribute_names_item(packet_info *pinfo, proto_tree
   return dissect_ftam_Extension_Attribute_identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_names_item);
 }
 
+
 static const ber_sequence_t SEQUENCE_OF_Extension_Attribute_identifier_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extension_attribute_names_item },
 };
@@ -2882,7 +2971,7 @@ static const ber_sequence_t SEQUENCE_OF_Extension_Attribute_identifier_sequence_
 static int
 dissect_ftam_SEQUENCE_OF_Extension_Attribute_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   SEQUENCE_OF_Extension_Attribute_identifier_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Extension_Attribute_identifier);
+                                      SEQUENCE_OF_Extension_Attribute_identifier_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Extension_Attribute_identifier);
 
   return offset;
 }
@@ -2890,6 +2979,7 @@ static int dissect_extension_attribute_names(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_SEQUENCE_OF_Extension_Attribute_identifier(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_names);
 }
 
+
 static const ber_sequence_t Attribute_Extension_Set_Name_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_set_identifier_impl },
   { BER_CLASS_CON, 1, 0, dissect_extension_attribute_names },
@@ -2899,7 +2989,7 @@ static const ber_sequence_t Attribute_Extension_Set_Name_sequence[] = {
 static int
 dissect_ftam_Attribute_Extension_Set_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Attribute_Extension_Set_Name_sequence, hf_index, ett_ftam_Attribute_Extension_Set_Name);
+                                   Attribute_Extension_Set_Name_sequence, hf_index, ett_ftam_Attribute_Extension_Set_Name);
 
   return offset;
 }
@@ -2907,6 +2997,7 @@ static int dissect_Attribute_Extension_Names_item(packet_info *pinfo, proto_tree
   return dissect_ftam_Attribute_Extension_Set_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Extension_Names_item);
 }
 
+
 static const ber_sequence_t Attribute_Extension_Names_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Extension_Names_item },
 };
@@ -2914,7 +3005,7 @@ static const ber_sequence_t Attribute_Extension_Names_sequence_of[1] = {
 static int
 dissect_ftam_Attribute_Extension_Names(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   Attribute_Extension_Names_sequence_of, hf_index, ett_ftam_Attribute_Extension_Names);
+                                      Attribute_Extension_Names_sequence_of, hf_index, ett_ftam_Attribute_Extension_Names);
 
   return offset;
 }
@@ -2922,6 +3013,7 @@ static int dissect_attribute_extension_names_impl(packet_info *pinfo, proto_tree
   return dissect_ftam_Attribute_Extension_Names(TRUE, tvb, offset, pinfo, tree, hf_ftam_attribute_extension_names);
 }
 
+
 static const ber_sequence_t F_READ_ATTRIB_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attribute_names_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extension_names_impl },
@@ -2931,7 +3023,7 @@ static const ber_sequence_t F_READ_ATTRIB_request_sequence[] = {
 static int
 dissect_ftam_F_READ_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_READ_ATTRIB_request_sequence, hf_index, ett_ftam_F_READ_ATTRIB_request);
+                                   F_READ_ATTRIB_request_sequence, hf_index, ett_ftam_F_READ_ATTRIB_request);
 
   return offset;
 }
@@ -2939,6 +3031,7 @@ static int dissect_f_read_attrib_request_impl(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_F_READ_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_attrib_request);
 }
 
+
 static const ber_sequence_t Child_Objects_Attribute_set_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_Child_Objects_Attribute_item },
 };
@@ -2946,7 +3039,7 @@ static const ber_sequence_t Child_Objects_Attribute_set_of[1] = {
 static int
 dissect_ftam_Child_Objects_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
-                              Child_Objects_Attribute_set_of, hf_index, ett_ftam_Child_Objects_Attribute);
+                                 Child_Objects_Attribute_set_of, hf_index, ett_ftam_Child_Objects_Attribute);
 
   return offset;
 }
@@ -2955,6 +3048,7 @@ static int dissect_child_objects(packet_info *pinfo, proto_tree *tree, tvbuff_t
 }
 
 
+
 static int
 dissect_ftam_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
@@ -2969,7 +3063,7 @@ static int dissect_time_and_date_value_impl(packet_info *pinfo, proto_tree *tree
 }
 
 
-static const value_string ftam_Date_and_Time_Attribute_vals[] = {
+const value_string ftam_Date_and_Time_Attribute_vals[] = {
   {   0, "no-value-available" },
   {   1, "actual-values" },
   { 0, NULL }
@@ -2981,10 +3075,11 @@ static const ber_choice_t Date_and_Time_Attribute_choice[] = {
   { 0, 0, 0, 0, NULL }
 };
 
-static int
+int
 dissect_ftam_Date_and_Time_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Date_and_Time_Attribute_choice, hf_index, ett_ftam_Date_and_Time_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Date_and_Time_Attribute_choice, hf_index, ett_ftam_Date_and_Time_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -3016,8 +3111,9 @@ static const ber_choice_t User_Identity_Attribute_choice[] = {
 
 static int
 dissect_ftam_User_Identity_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              User_Identity_Attribute_choice, hf_index, ett_ftam_User_Identity_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 User_Identity_Attribute_choice, hf_index, ett_ftam_User_Identity_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -3034,8 +3130,9 @@ static int dissect_identity_last_attribute_modifier(packet_info *pinfo, proto_tr
   return dissect_ftam_User_Identity_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_identity_last_attribute_modifier);
 }
 
+
 static const ber_sequence_t Read_Attributes_sequence[] = {
-  { -1/*choice*/ , -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
   { BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_object_type_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permitted_actions_impl },
   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_contents_type },
@@ -3067,14 +3164,15 @@ dissect_ftam_Read_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
                                 Read_Attributes_sequence, hf_index, ett_ftam_Read_Attributes);
 
@@ -3091,6 +3189,7 @@ static int dissect_Objects_Attributes_List_item(packet_info *pinfo, proto_tree *
   return dissect_ftam_Read_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_Objects_Attributes_List_item);
 }
 
+
 static const ber_sequence_t F_READ_ATTRIB_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_read_attributes },
@@ -3101,14 +3200,18 @@ static const ber_sequence_t F_READ_ATTRIB_response_sequence[] = {
 static int
 dissect_ftam_F_READ_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_READ_ATTRIB_response_sequence, hf_index, ett_ftam_F_READ_ATTRIB_response);
+                                   F_READ_ATTRIB_response_sequence, hf_index, ett_ftam_F_READ_ATTRIB_response);
 
   return offset;
 }
+static int dissect_nBS9_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_ftam_F_READ_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_nBS9);
+}
 static int dissect_f_read_attrib_response_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_ftam_F_READ_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_attrib_response);
 }
 
+
 static const ber_sequence_t T_actual_values1_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_insert_values_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_delete_values_impl },
@@ -3118,7 +3221,7 @@ static const ber_sequence_t T_actual_values1_sequence[] = {
 static int
 dissect_ftam_T_actual_values1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                T_actual_values1_sequence, hf_index, ett_ftam_T_actual_values1);
+                                   T_actual_values1_sequence, hf_index, ett_ftam_T_actual_values1);
 
   return offset;
 }
@@ -3141,8 +3244,9 @@ static const ber_choice_t Access_Control_Change_Attribute_choice[] = {
 
 static int
 dissect_ftam_Access_Control_Change_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Access_Control_Change_Attribute_choice, hf_index, ett_ftam_Access_Control_Change_Attribute, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Access_Control_Change_Attribute_choice, hf_index, ett_ftam_Access_Control_Change_Attribute,
+                                 NULL);
 
   return offset;
 }
@@ -3153,8 +3257,9 @@ static int dissect_change_path_access_control(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_Access_Control_Change_Attribute(FALSE, tvb, offset, pinfo, tree, hf_ftam_change_path_access_control);
 }
 
+
 static const ber_sequence_t Change_Attributes_sequence[] = {
-  { -1/*choice*/ , -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname },
   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_storage_account },
   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_object_availability },
   { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_future_Object_size },
@@ -3171,14 +3276,15 @@ dissect_ftam_Change_Attributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
                                 Change_Attributes_sequence, hf_index, ett_ftam_Change_Attributes);
 
@@ -3190,6 +3296,7 @@ static int dissect_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
   return dissect_ftam_Change_Attributes(FALSE, tvb, offset, pinfo, tree, hf_ftam_attributes);
 }
 
+
 static const ber_sequence_t F_CHANGE_ATTRIB_request_sequence[] = {
   { BER_CLASS_APP, 8, BER_FLAGS_NOOWNTAG, dissect_attributes },
   { 0, 0, 0, NULL }
@@ -3198,7 +3305,7 @@ static const ber_sequence_t F_CHANGE_ATTRIB_request_sequence[] = {
 static int
 dissect_ftam_F_CHANGE_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CHANGE_ATTRIB_request_sequence, hf_index, ett_ftam_F_CHANGE_ATTRIB_request);
+                                   F_CHANGE_ATTRIB_request_sequence, hf_index, ett_ftam_F_CHANGE_ATTRIB_request);
 
   return offset;
 }
@@ -3206,6 +3313,7 @@ static int dissect_f_Change_attrib_reques_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_F_CHANGE_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_attrib_reques);
 }
 
+
 static const ber_sequence_t F_CHANGE_ATTRIB_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
@@ -3216,7 +3324,7 @@ static const ber_sequence_t F_CHANGE_ATTRIB_response_sequence[] = {
 static int
 dissect_ftam_F_CHANGE_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CHANGE_ATTRIB_response_sequence, hf_index, ett_ftam_F_CHANGE_ATTRIB_response);
+                                   F_CHANGE_ATTRIB_response_sequence, hf_index, ett_ftam_F_CHANGE_ATTRIB_response);
 
   return offset;
 }
@@ -3224,6 +3332,7 @@ static int dissect_f_Change_attrib_respon_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_F_CHANGE_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_attrib_respon);
 }
 
+
 static const asn_namedbit T_processing_mode_bits[] = {
   {  0, &hf_ftam_T_processing_mode_f_read, -1, -1, "f-read", NULL },
   {  1, &hf_ftam_T_processing_mode_f_insert, -1, -1, "f-insert", NULL },
@@ -3236,8 +3345,8 @@ static const asn_namedbit T_processing_mode_bits[] = {
 static int
 dissect_ftam_T_processing_mode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
-                                 T_processing_mode_bits, hf_index, ett_ftam_T_processing_mode,
-                                 NULL);
+                                    T_processing_mode_bits, hf_index, ett_ftam_T_processing_mode,
+                                    NULL);
 
   return offset;
 }
@@ -3260,8 +3369,9 @@ static const ber_choice_t T_contents_type_choice[] = {
 
 static int
 dissect_ftam_T_contents_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              T_contents_type_choice, hf_index, ett_ftam_T_contents_type, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 T_contents_type_choice, hf_index, ett_ftam_T_contents_type,
+                                 NULL);
 
   return offset;
 }
@@ -3276,19 +3386,19 @@ dissect_ftam_Activity_Identifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
                                   NULL);
 
 
-
   return offset;
 }
 static int dissect_activity_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
@@ -3315,6 +3425,7 @@ static int dissect_request_recovery_mode_impl(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_T_request_recovery_mode(TRUE, tvb, offset, pinfo, tree, hf_ftam_request_recovery_mode);
 }
 
+
 static const ber_sequence_t SET_OF_Abstract_Syntax_Name_set_of[1] = {
   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_remove_contexts_item },
 };
@@ -3322,7 +3433,7 @@ static const ber_sequence_t SET_OF_Abstract_Syntax_Name_set_of[1] = {
 static int
 dissect_ftam_SET_OF_Abstract_Syntax_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
-                              SET_OF_Abstract_Syntax_Name_set_of, hf_index, ett_ftam_SET_OF_Abstract_Syntax_Name);
+                                 SET_OF_Abstract_Syntax_Name_set_of, hf_index, ett_ftam_SET_OF_Abstract_Syntax_Name);
 
   return offset;
 }
@@ -3347,14 +3458,15 @@ dissect_ftam_Degree_Of_Overlap(gboolean implicit_tag _U_, tvbuff_t *tvb, int off
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
                                   NULL);
 
@@ -3365,6 +3477,7 @@ static int dissect_degree_of_overlap(packet_info *pinfo, proto_tree *tree, tvbuf
   return dissect_ftam_Degree_Of_Overlap(FALSE, tvb, offset, pinfo, tree, hf_ftam_degree_of_overlap);
 }
 
+
 static const ber_sequence_t F_OPEN_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_processing_mode_impl },
   { BER_CLASS_CON, 1, 0, dissect_open_contents_type },
@@ -3383,7 +3496,7 @@ static const ber_sequence_t F_OPEN_request_sequence[] = {
 static int
 dissect_ftam_F_OPEN_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_OPEN_request_sequence, hf_index, ett_ftam_F_OPEN_request);
+                                   F_OPEN_request_sequence, hf_index, ett_ftam_F_OPEN_request);
 
   return offset;
 }
@@ -3411,6 +3524,7 @@ static int dissect_response_recovery_mode_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_T_response_recovery_mode(TRUE, tvb, offset, pinfo, tree, hf_ftam_response_recovery_mode);
 }
 
+
 static const ber_sequence_t F_OPEN_response_sequence[] = {
   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
@@ -3428,7 +3542,7 @@ static const ber_sequence_t F_OPEN_response_sequence[] = {
 static int
 dissect_ftam_F_OPEN_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_OPEN_response_sequence, hf_index, ett_ftam_F_OPEN_response);
+                                   F_OPEN_response_sequence, hf_index, ett_ftam_F_OPEN_response);
 
   return offset;
 }
@@ -3436,6 +3550,7 @@ static int dissect_f_open_response_impl(packet_info *pinfo, proto_tree *tree, tv
   return dissect_ftam_F_OPEN_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_open_response);
 }
 
+
 static const ber_sequence_t F_CLOSE_request_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -3446,7 +3561,7 @@ static const ber_sequence_t F_CLOSE_request_sequence[] = {
 static int
 dissect_ftam_F_CLOSE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CLOSE_request_sequence, hf_index, ett_ftam_F_CLOSE_request);
+                                   F_CLOSE_request_sequence, hf_index, ett_ftam_F_CLOSE_request);
 
   return offset;
 }
@@ -3454,6 +3569,7 @@ static int dissect_f_close_request_impl(packet_info *pinfo, proto_tree *tree, tv
   return dissect_ftam_F_CLOSE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_close_request);
 }
 
+
 static const ber_sequence_t F_CLOSE_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -3464,7 +3580,7 @@ static const ber_sequence_t F_CLOSE_response_sequence[] = {
 static int
 dissect_ftam_F_CLOSE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CLOSE_response_sequence, hf_index, ett_ftam_F_CLOSE_response);
+                                   F_CLOSE_response_sequence, hf_index, ett_ftam_F_CLOSE_response);
 
   return offset;
 }
@@ -3472,6 +3588,7 @@ static int dissect_f_close_response_impl(packet_info *pinfo, proto_tree *tree, t
   return dissect_ftam_F_CLOSE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_close_response);
 }
 
+
 static const ber_sequence_t F_BEGIN_GROUP_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_threshold_impl },
   { 0, 0, 0, NULL }
@@ -3480,7 +3597,7 @@ static const ber_sequence_t F_BEGIN_GROUP_request_sequence[] = {
 static int
 dissect_ftam_F_BEGIN_GROUP_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_BEGIN_GROUP_request_sequence, hf_index, ett_ftam_F_BEGIN_GROUP_request);
+                                   F_BEGIN_GROUP_request_sequence, hf_index, ett_ftam_F_BEGIN_GROUP_request);
 
   return offset;
 }
@@ -3488,6 +3605,7 @@ static int dissect_f_begin_group_request_impl(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_F_BEGIN_GROUP_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_begin_group_request);
 }
 
+
 static const ber_sequence_t F_BEGIN_GROUP_response_sequence[] = {
   { 0, 0, 0, NULL }
 };
@@ -3495,7 +3613,7 @@ static const ber_sequence_t F_BEGIN_GROUP_response_sequence[] = {
 static int
 dissect_ftam_F_BEGIN_GROUP_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_BEGIN_GROUP_response_sequence, hf_index, ett_ftam_F_BEGIN_GROUP_response);
+                                   F_BEGIN_GROUP_response_sequence, hf_index, ett_ftam_F_BEGIN_GROUP_response);
 
   return offset;
 }
@@ -3503,6 +3621,7 @@ static int dissect_f_begin_group_response_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_F_BEGIN_GROUP_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_begin_group_response);
 }
 
+
 static const ber_sequence_t F_END_GROUP_request_sequence[] = {
   { 0, 0, 0, NULL }
 };
@@ -3510,7 +3629,7 @@ static const ber_sequence_t F_END_GROUP_request_sequence[] = {
 static int
 dissect_ftam_F_END_GROUP_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_END_GROUP_request_sequence, hf_index, ett_ftam_F_END_GROUP_request);
+                                   F_END_GROUP_request_sequence, hf_index, ett_ftam_F_END_GROUP_request);
 
   return offset;
 }
@@ -3518,6 +3637,7 @@ static int dissect_f_end_group_request_impl(packet_info *pinfo, proto_tree *tree
   return dissect_ftam_F_END_GROUP_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_end_group_request);
 }
 
+
 static const ber_sequence_t F_END_GROUP_response_sequence[] = {
   { 0, 0, 0, NULL }
 };
@@ -3525,7 +3645,7 @@ static const ber_sequence_t F_END_GROUP_response_sequence[] = {
 static int
 dissect_ftam_F_END_GROUP_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_END_GROUP_response_sequence, hf_index, ett_ftam_F_END_GROUP_response);
+                                   F_END_GROUP_response_sequence, hf_index, ett_ftam_F_END_GROUP_response);
 
   return offset;
 }
@@ -3533,6 +3653,7 @@ static int dissect_f_end_group_response_impl(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_F_END_GROUP_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_end_group_response);
 }
 
+
 static const ber_sequence_t F_RECOVER_request_sequence[] = {
   { BER_CLASS_APP, 6, BER_FLAGS_NOOWNTAG, dissect_activity_identifier },
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_bulk_transfer_number_impl },
@@ -3551,7 +3672,7 @@ static const ber_sequence_t F_RECOVER_request_sequence[] = {
 static int
 dissect_ftam_F_RECOVER_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_RECOVER_request_sequence, hf_index, ett_ftam_F_RECOVER_request);
+                                   F_RECOVER_request_sequence, hf_index, ett_ftam_F_RECOVER_request);
 
   return offset;
 }
@@ -3559,6 +3680,7 @@ static int dissect_f_recover_request_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_RECOVER_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_recover_request);
 }
 
+
 static const ber_sequence_t F_RECOVER_response_sequence[] = {
   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
@@ -3575,7 +3697,7 @@ static const ber_sequence_t F_RECOVER_response_sequence[] = {
 static int
 dissect_ftam_F_RECOVER_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_RECOVER_response_sequence, hf_index, ett_ftam_F_RECOVER_response);
+                                   F_RECOVER_response_sequence, hf_index, ett_ftam_F_RECOVER_response);
 
   return offset;
 }
@@ -3642,6 +3764,7 @@ static int dissect_begin_end_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t
 }
 
 
+
 static int
 dissect_ftam_Node_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_acse_EXTERNAL(implicit_tag, tvb, offset, pinfo, tree, hf_index);
@@ -3655,6 +3778,7 @@ static int dissect_name_list_item(packet_info *pinfo, proto_tree *tree, tvbuff_t
   return dissect_ftam_Node_Name(FALSE, tvb, offset, pinfo, tree, hf_ftam_name_list_item);
 }
 
+
 static const ber_sequence_t SEQUENCE_OF_Node_Name_sequence_of[1] = {
   { BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_name_list_item },
 };
@@ -3662,7 +3786,7 @@ static const ber_sequence_t SEQUENCE_OF_Node_Name_sequence_of[1] = {
 static int
 dissect_ftam_SEQUENCE_OF_Node_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   SEQUENCE_OF_Node_Name_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Node_Name);
+                                      SEQUENCE_OF_Node_Name_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Node_Name);
 
   return offset;
 }
@@ -3696,15 +3820,16 @@ dissect_ftam_FADU_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
                               FADU_Identity_choice, hf_index, ett_ftam_FADU_Identity, NULL);
 
 
@@ -3727,23 +3852,26 @@ dissect_ftam_FADU_Lock(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
                                   NULL);
 
+
   return offset;
 }
 static int dissect_fadu_lock(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_ftam_FADU_Lock(FALSE, tvb, offset, pinfo, tree, hf_ftam_fadu_lock);
 }
 
+
 static const ber_sequence_t F_LOCATE_request_sequence[] = {
   { BER_CLASS_APP, 15, BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
   { BER_CLASS_APP, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_fadu_lock },
@@ -3753,7 +3881,7 @@ static const ber_sequence_t F_LOCATE_request_sequence[] = {
 static int
 dissect_ftam_F_LOCATE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_LOCATE_request_sequence, hf_index, ett_ftam_F_LOCATE_request);
+                                   F_LOCATE_request_sequence, hf_index, ett_ftam_F_LOCATE_request);
 
   return offset;
 }
@@ -3761,6 +3889,7 @@ static int dissect_f_locate_request_impl(packet_info *pinfo, proto_tree *tree, t
   return dissect_ftam_F_LOCATE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_locate_request);
 }
 
+
 static const ber_sequence_t F_LOCATE_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
@@ -3771,7 +3900,7 @@ static const ber_sequence_t F_LOCATE_response_sequence[] = {
 static int
 dissect_ftam_F_LOCATE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_LOCATE_response_sequence, hf_index, ett_ftam_F_LOCATE_response);
+                                   F_LOCATE_response_sequence, hf_index, ett_ftam_F_LOCATE_response);
 
   return offset;
 }
@@ -3779,6 +3908,7 @@ static int dissect_f_locate_response_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_LOCATE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_locate_response);
 }
 
+
 static const ber_sequence_t F_ERASE_request_sequence[] = {
   { BER_CLASS_APP, 15, BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
   { 0, 0, 0, NULL }
@@ -3787,7 +3917,7 @@ static const ber_sequence_t F_ERASE_request_sequence[] = {
 static int
 dissect_ftam_F_ERASE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_ERASE_request_sequence, hf_index, ett_ftam_F_ERASE_request);
+                                   F_ERASE_request_sequence, hf_index, ett_ftam_F_ERASE_request);
 
   return offset;
 }
@@ -3795,6 +3925,7 @@ static int dissect_f_erase_request_impl(packet_info *pinfo, proto_tree *tree, tv
   return dissect_ftam_F_ERASE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_erase_request);
 }
 
+
 static const ber_sequence_t F_ERASE_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
@@ -3804,7 +3935,7 @@ static const ber_sequence_t F_ERASE_response_sequence[] = {
 static int
 dissect_ftam_F_ERASE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_ERASE_response_sequence, hf_index, ett_ftam_F_ERASE_response);
+                                   F_ERASE_response_sequence, hf_index, ett_ftam_F_ERASE_response);
 
   return offset;
 }
@@ -3877,8 +4008,10 @@ static int
 dissect_ftam_File_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   gint branch_taken;
 
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              File_PDU_choice, hf_index, ett_ftam_File_PDU, &branch_taken);
+    offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 File_PDU_choice, hf_index, ett_ftam_File_PDU,
+                                 &branch_taken);
+
 
   if( (branch_taken!=-1) && ftam_File_PDU_vals[branch_taken].strptr ){
        if (check_col(pinfo->cinfo, COL_INFO)) {
@@ -3917,6 +4050,7 @@ static int dissect_access_context_impl(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_T_access_context(TRUE, tvb, offset, pinfo, tree, hf_ftam_access_context);
 }
 
+
 static const ber_sequence_t Access_Context_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_access_context_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_level_number_impl },
@@ -3928,14 +4062,15 @@ dissect_ftam_Access_Context(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence(TRUE, pinfo, tree, tvb, offset,
                                 Access_Context_sequence, hf_index, ett_ftam_Access_Context);
 
@@ -3946,6 +4081,7 @@ static int dissect_read_access_context(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_Access_Context(FALSE, tvb, offset, pinfo, tree, hf_ftam_read_access_context);
 }
 
+
 static const ber_sequence_t F_READ_request_sequence[] = {
   { BER_CLASS_APP, 15, BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
   { BER_CLASS_APP, 1, BER_FLAGS_NOOWNTAG, dissect_read_access_context },
@@ -3957,7 +4093,7 @@ static const ber_sequence_t F_READ_request_sequence[] = {
 static int
 dissect_ftam_F_READ_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_READ_request_sequence, hf_index, ett_ftam_F_READ_request);
+                                   F_READ_request_sequence, hf_index, ett_ftam_F_READ_request);
 
   return offset;
 }
@@ -3985,6 +4121,7 @@ static int dissect_file_access_data_unit_Operation_impl(packet_info *pinfo, prot
   return dissect_ftam_T_file_access_data_unit_Operation(TRUE, tvb, offset, pinfo, tree, hf_ftam_file_access_data_unit_Operation);
 }
 
+
 static const ber_sequence_t F_WRITE_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_file_access_data_unit_Operation_impl },
   { BER_CLASS_APP, 15, BER_FLAGS_NOOWNTAG, dissect_file_access_data_unit_identity },
@@ -3996,7 +4133,7 @@ static const ber_sequence_t F_WRITE_request_sequence[] = {
 static int
 dissect_ftam_F_WRITE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_WRITE_request_sequence, hf_index, ett_ftam_F_WRITE_request);
+                                   F_WRITE_request_sequence, hf_index, ett_ftam_F_WRITE_request);
 
   return offset;
 }
@@ -4004,6 +4141,7 @@ static int dissect_f_write_request_impl(packet_info *pinfo, proto_tree *tree, tv
   return dissect_ftam_F_WRITE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_write_request);
 }
 
+
 static const ber_sequence_t F_DATA_END_request_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
@@ -4013,7 +4151,7 @@ static const ber_sequence_t F_DATA_END_request_sequence[] = {
 static int
 dissect_ftam_F_DATA_END_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_DATA_END_request_sequence, hf_index, ett_ftam_F_DATA_END_request);
+                                   F_DATA_END_request_sequence, hf_index, ett_ftam_F_DATA_END_request);
 
   return offset;
 }
@@ -4034,14 +4172,15 @@ dissect_ftam_Request_Type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset,
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
                                   NULL);
 
@@ -4052,6 +4191,7 @@ static int dissect_request_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *
   return dissect_ftam_Request_Type(FALSE, tvb, offset, pinfo, tree, hf_ftam_request_type);
 }
 
+
 static const ber_sequence_t F_TRANSFER_END_request_sequence[] = {
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
   { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_type },
@@ -4064,7 +4204,7 @@ static const ber_sequence_t F_TRANSFER_END_request_sequence[] = {
 static int
 dissect_ftam_F_TRANSFER_END_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_TRANSFER_END_request_sequence, hf_index, ett_ftam_F_TRANSFER_END_request);
+                                   F_TRANSFER_END_request_sequence, hf_index, ett_ftam_F_TRANSFER_END_request);
 
   return offset;
 }
@@ -4072,6 +4212,7 @@ static int dissect_f_transfer_end_request_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_F_TRANSFER_END_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_transfer_end_request);
 }
 
+
 static const ber_sequence_t F_TRANSFER_END_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -4084,7 +4225,7 @@ static const ber_sequence_t F_TRANSFER_END_response_sequence[] = {
 static int
 dissect_ftam_F_TRANSFER_END_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_TRANSFER_END_response_sequence, hf_index, ett_ftam_F_TRANSFER_END_response);
+                                   F_TRANSFER_END_response_sequence, hf_index, ett_ftam_F_TRANSFER_END_response);
 
   return offset;
 }
@@ -4092,6 +4233,7 @@ static int dissect_f_transfer_end_response_impl(packet_info *pinfo, proto_tree *
   return dissect_ftam_F_TRANSFER_END_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_transfer_end_response);
 }
 
+
 static const ber_sequence_t F_CANCEL_request_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -4108,7 +4250,7 @@ static const ber_sequence_t F_CANCEL_request_sequence[] = {
 static int
 dissect_ftam_F_CANCEL_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CANCEL_request_sequence, hf_index, ett_ftam_F_CANCEL_request);
+                                   F_CANCEL_request_sequence, hf_index, ett_ftam_F_CANCEL_request);
 
   return offset;
 }
@@ -4116,6 +4258,7 @@ static int dissect_f_cancel_request_impl(packet_info *pinfo, proto_tree *tree, t
   return dissect_ftam_F_CANCEL_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_cancel_request);
 }
 
+
 static const ber_sequence_t F_CANCEL_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -4132,7 +4275,7 @@ static const ber_sequence_t F_CANCEL_response_sequence[] = {
 static int
 dissect_ftam_F_CANCEL_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CANCEL_response_sequence, hf_index, ett_ftam_F_CANCEL_response);
+                                   F_CANCEL_response_sequence, hf_index, ett_ftam_F_CANCEL_response);
 
   return offset;
 }
@@ -4140,6 +4283,7 @@ static int dissect_f_cancel_response_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_CANCEL_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_cancel_response);
 }
 
+
 static const ber_sequence_t F_RESTART_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_checkpoint_identifier_impl },
   { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_type },
@@ -4154,7 +4298,7 @@ static const ber_sequence_t F_RESTART_request_sequence[] = {
 static int
 dissect_ftam_F_RESTART_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_RESTART_request_sequence, hf_index, ett_ftam_F_RESTART_request);
+                                   F_RESTART_request_sequence, hf_index, ett_ftam_F_RESTART_request);
 
   return offset;
 }
@@ -4162,6 +4306,7 @@ static int dissect_f_restart_request_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_RESTART_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_restart_request);
 }
 
+
 static const ber_sequence_t F_RESTART_response_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_checkpoint_identifier_impl },
   { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_type },
@@ -4176,7 +4321,7 @@ static const ber_sequence_t F_RESTART_response_sequence[] = {
 static int
 dissect_ftam_F_RESTART_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_RESTART_response_sequence, hf_index, ett_ftam_F_RESTART_response);
+                                   F_RESTART_response_sequence, hf_index, ett_ftam_F_RESTART_response);
 
   return offset;
 }
@@ -4215,8 +4360,10 @@ static int
 dissect_ftam_Bulk_Data_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   gint branch_taken;
 
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Bulk_Data_PDU_choice, hf_index, ett_ftam_Bulk_Data_PDU, &branch_taken);
+    offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Bulk_Data_PDU_choice, hf_index, ett_ftam_Bulk_Data_PDU,
+                                 &branch_taken);
+
 
   if( (branch_taken!=-1) && ftam_Bulk_Data_PDU_vals[branch_taken].strptr ){
        if (check_col(pinfo->cinfo, COL_INFO)) {
@@ -4232,6 +4379,7 @@ static int dissect_bulk_Data_PDU(packet_info *pinfo, proto_tree *tree, tvbuff_t
 }
 
 
+
 static int
 dissect_ftam_Destination_File_Directory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ftam_Pathname_Attribute(implicit_tag, tvb, offset, pinfo, tree, hf_index);
@@ -4242,6 +4390,7 @@ static int dissect_destination_file_directory(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_Destination_File_Directory(FALSE, tvb, offset, pinfo, tree, hf_ftam_destination_file_directory);
 }
 
+
 static const ber_sequence_t F_CHANGE_PREFIX_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reset_impl },
   { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
@@ -4253,7 +4402,7 @@ static const ber_sequence_t F_CHANGE_PREFIX_request_sequence[] = {
 static int
 dissect_ftam_F_CHANGE_PREFIX_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CHANGE_PREFIX_request_sequence, hf_index, ett_ftam_F_CHANGE_PREFIX_request);
+                                   F_CHANGE_PREFIX_request_sequence, hf_index, ett_ftam_F_CHANGE_PREFIX_request);
 
   return offset;
 }
@@ -4261,6 +4410,7 @@ static int dissect_f_Change_prefix_request_impl(packet_info *pinfo, proto_tree *
   return dissect_ftam_F_CHANGE_PREFIX_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_prefix_request);
 }
 
+
 static const ber_sequence_t F_CHANGE_PREFIX_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
@@ -4271,7 +4421,7 @@ static const ber_sequence_t F_CHANGE_PREFIX_response_sequence[] = {
 static int
 dissect_ftam_F_CHANGE_PREFIX_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CHANGE_PREFIX_response_sequence, hf_index, ett_ftam_F_CHANGE_PREFIX_response);
+                                   F_CHANGE_PREFIX_response_sequence, hf_index, ett_ftam_F_CHANGE_PREFIX_response);
 
   return offset;
 }
@@ -4279,6 +4429,7 @@ static int dissect_f_Change_prefix_response_impl(packet_info *pinfo, proto_tree
   return dissect_ftam_F_CHANGE_PREFIX_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_prefix_response);
 }
 
+
 static const asn_namedbit Equality_Comparision_bits[] = {
   {  0, &hf_ftam_Equality_Comparision_no_value_available_matches, -1, -1, "no-value-available-matches", NULL },
   {  1, &hf_ftam_Equality_Comparision_equals_matches, -1, -1, "equals-matches", NULL },
@@ -4288,8 +4439,8 @@ static const asn_namedbit Equality_Comparision_bits[] = {
 static int
 dissect_ftam_Equality_Comparision(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
-                                 Equality_Comparision_bits, hf_index, ett_ftam_Equality_Comparision,
-                                 NULL);
+                                    Equality_Comparision_bits, hf_index, ett_ftam_Equality_Comparision,
+                                    NULL);
 
   return offset;
 }
@@ -4317,8 +4468,9 @@ static const ber_choice_t T_string_value_item_choice[] = {
 
 static int
 dissect_ftam_T_string_value_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              T_string_value_item_choice, hf_index, ett_ftam_T_string_value_item, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 T_string_value_item_choice, hf_index, ett_ftam_T_string_value_item,
+                                 NULL);
 
   return offset;
 }
@@ -4326,14 +4478,15 @@ static int dissect_string_value_item(packet_info *pinfo, proto_tree *tree, tvbuf
   return dissect_ftam_T_string_value_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_string_value_item);
 }
 
+
 static const ber_sequence_t T_string_value_sequence_of[1] = {
-  { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_string_value_item },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_string_value_item },
 };
 
 static int
 dissect_ftam_T_string_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   T_string_value_sequence_of, hf_index, ett_ftam_T_string_value);
+                                      T_string_value_sequence_of, hf_index, ett_ftam_T_string_value);
 
   return offset;
 }
@@ -4341,6 +4494,7 @@ static int dissect_string_value_impl(packet_info *pinfo, proto_tree *tree, tvbuf
   return dissect_ftam_T_string_value(TRUE, tvb, offset, pinfo, tree, hf_ftam_string_value);
 }
 
+
 static const ber_sequence_t String_Pattern_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_string_value_impl },
@@ -4350,7 +4504,7 @@ static const ber_sequence_t String_Pattern_sequence[] = {
 static int
 dissect_ftam_String_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                String_Pattern_sequence, hf_index, ett_ftam_String_Pattern);
+                                   String_Pattern_sequence, hf_index, ett_ftam_String_Pattern);
 
   return offset;
 }
@@ -4379,8 +4533,9 @@ static const ber_choice_t T_pathname_value_item_choice[] = {
 
 static int
 dissect_ftam_T_pathname_value_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              T_pathname_value_item_choice, hf_index, ett_ftam_T_pathname_value_item, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 T_pathname_value_item_choice, hf_index, ett_ftam_T_pathname_value_item,
+                                 NULL);
 
   return offset;
 }
@@ -4388,14 +4543,15 @@ static int dissect_pathname_value_item(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_T_pathname_value_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_pathname_value_item);
 }
 
+
 static const ber_sequence_t T_pathname_value_sequence_of[1] = {
-  { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname_value_item },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pathname_value_item },
 };
 
 static int
 dissect_ftam_T_pathname_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   T_pathname_value_sequence_of, hf_index, ett_ftam_T_pathname_value);
+                                      T_pathname_value_sequence_of, hf_index, ett_ftam_T_pathname_value);
 
   return offset;
 }
@@ -4403,6 +4559,7 @@ static int dissect_pathname_value_impl(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_T_pathname_value(TRUE, tvb, offset, pinfo, tree, hf_ftam_pathname_value);
 }
 
+
 static const ber_sequence_t Pathname_Pattern_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_pathname_value_impl },
@@ -4412,7 +4569,7 @@ static const ber_sequence_t Pathname_Pattern_sequence[] = {
 static int
 dissect_ftam_Pathname_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Pathname_Pattern_sequence, hf_index, ett_ftam_Pathname_Pattern);
+                                   Pathname_Pattern_sequence, hf_index, ett_ftam_Pathname_Pattern);
 
   return offset;
 }
@@ -4429,6 +4586,7 @@ static int dissect_primaty_pathname_Pattern_impl(packet_info *pinfo, proto_tree
   return dissect_ftam_Pathname_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_primaty_pathname_Pattern);
 }
 
+
 static const asn_namedbit Relational_Comparision_bits[] = {
   {  0, &hf_ftam_Relational_Comparision_no_value_available_matches, -1, -1, "no-value-available-matches", NULL },
   {  1, &hf_ftam_Relational_Comparision_equals_matches, -1, -1, "equals-matches", NULL },
@@ -4440,8 +4598,8 @@ static const asn_namedbit Relational_Comparision_bits[] = {
 static int
 dissect_ftam_Relational_Comparision(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
-                                 Relational_Comparision_bits, hf_index, ett_ftam_Relational_Comparision,
-                                 NULL);
+                                    Relational_Comparision_bits, hf_index, ett_ftam_Relational_Comparision,
+                                    NULL);
 
   return offset;
 }
@@ -4449,6 +4607,7 @@ static int dissect_relational_comparision_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_Relational_Comparision(TRUE, tvb, offset, pinfo, tree, hf_ftam_relational_comparision);
 }
 
+
 static const ber_sequence_t Integer_Pattern_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relational_comparision_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_integer_value_impl },
@@ -4458,7 +4617,7 @@ static const ber_sequence_t Integer_Pattern_sequence[] = {
 static int
 dissect_ftam_Integer_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Integer_Pattern_sequence, hf_index, ett_ftam_Integer_Pattern);
+                                   Integer_Pattern_sequence, hf_index, ett_ftam_Integer_Pattern);
 
   return offset;
 }
@@ -4473,11 +4632,12 @@ static int dissect_future_object_size_Pattern_impl(packet_info *pinfo, proto_tre
 }
 
 
+
 static int
 dissect_ftam_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
-                                 NULL, hf_index, -1,
-                                 NULL);
+                                    NULL, hf_index, -1,
+                                    NULL);
 
   return offset;
 }
@@ -4488,6 +4648,7 @@ static int dissect_significance_bitstring_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_ftam_significance_bitstring);
 }
 
+
 static const ber_sequence_t Bitstring_Pattern_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_match_bitstring_impl },
@@ -4498,7 +4659,7 @@ static const ber_sequence_t Bitstring_Pattern_sequence[] = {
 static int
 dissect_ftam_Bitstring_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Bitstring_Pattern_sequence, hf_index, ett_ftam_Bitstring_Pattern);
+                                   Bitstring_Pattern_sequence, hf_index, ett_ftam_Bitstring_Pattern);
 
   return offset;
 }
@@ -4510,17 +4671,14 @@ static int dissect_permitted_actions_Pattern_impl(packet_info *pinfo, proto_tree
 
 static int
 dissect_ftam_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index,
-                                            NULL);
+  offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
 
   return offset;
 }
 static int dissect_object_identifier_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_ftam_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_ftam_object_identifier_value);
 }
-static int dissect_attribute_extension_attribute_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
-  return dissect_ftam_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_ftam_attribute_extension_attribute_identifier);
-}
+
 
 static const ber_sequence_t Object_Identifier_Pattern_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
@@ -4531,7 +4689,7 @@ static const ber_sequence_t Object_Identifier_Pattern_sequence[] = {
 static int
 dissect_ftam_Object_Identifier_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Object_Identifier_Pattern_sequence, hf_index, ett_ftam_Object_Identifier_Pattern);
+                                   Object_Identifier_Pattern_sequence, hf_index, ett_ftam_Object_Identifier_Pattern);
 
   return offset;
 }
@@ -4545,6 +4703,7 @@ static int dissect_abstract_Syntax_Pattern_impl(packet_info *pinfo, proto_tree *
   return dissect_ftam_Object_Identifier_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_abstract_Syntax_Pattern);
 }
 
+
 static const ber_sequence_t T_constraint_set_abstract_Syntax_Pattern_sequence[] = {
   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_constraint_Set_Pattern_impl },
   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_abstract_Syntax_Pattern_impl },
@@ -4554,7 +4713,7 @@ static const ber_sequence_t T_constraint_set_abstract_Syntax_Pattern_sequence[]
 static int
 dissect_ftam_T_constraint_set_abstract_Syntax_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                T_constraint_set_abstract_Syntax_Pattern_sequence, hf_index, ett_ftam_T_constraint_set_abstract_Syntax_Pattern);
+                                   T_constraint_set_abstract_Syntax_Pattern_sequence, hf_index, ett_ftam_T_constraint_set_abstract_Syntax_Pattern);
 
   return offset;
 }
@@ -4577,8 +4736,9 @@ static const ber_choice_t Contents_Type_Pattern_choice[] = {
 
 static int
 dissect_ftam_Contents_Type_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              Contents_Type_Pattern_choice, hf_index, ett_ftam_Contents_Type_Pattern, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 Contents_Type_Pattern_choice, hf_index, ett_ftam_Contents_Type_Pattern,
+                                 NULL);
 
   return offset;
 }
@@ -4586,6 +4746,7 @@ static int dissect_contents_type_Pattern(packet_info *pinfo, proto_tree *tree, t
   return dissect_ftam_Contents_Type_Pattern(FALSE, tvb, offset, pinfo, tree, hf_ftam_contents_type_Pattern);
 }
 
+
 static const ber_sequence_t Date_and_Time_Pattern_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_relational_camparision_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_time_and_date_value_impl },
@@ -4595,7 +4756,7 @@ static const ber_sequence_t Date_and_Time_Pattern_sequence[] = {
 static int
 dissect_ftam_Date_and_Time_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Date_and_Time_Pattern_sequence, hf_index, ett_ftam_Date_and_Time_Pattern);
+                                   Date_and_Time_Pattern_sequence, hf_index, ett_ftam_Date_and_Time_Pattern);
 
   return offset;
 }
@@ -4613,6 +4774,7 @@ static int dissect_date_and_time_of_last_attribute_modification_Pattern_impl(pac
 }
 
 
+
 static int
 dissect_ftam_User_Identity_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ftam_String_Pattern(implicit_tag, tvb, offset, pinfo, tree, hf_index);
@@ -4632,6 +4794,7 @@ static int dissect_identity_of_last_attribute_modifier_Pattern_impl(packet_info
   return dissect_ftam_User_Identity_Pattern(TRUE, tvb, offset, pinfo, tree, hf_ftam_identity_of_last_attribute_modifier_Pattern);
 }
 
+
 static const ber_sequence_t Boolean_Pattern_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_comparision_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_boolean_value_impl },
@@ -4641,7 +4804,7 @@ static const ber_sequence_t Boolean_Pattern_sequence[] = {
 static int
 dissect_ftam_Boolean_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Boolean_Pattern_sequence, hf_index, ett_ftam_Boolean_Pattern);
+                                   Boolean_Pattern_sequence, hf_index, ett_ftam_Boolean_Pattern);
 
   return offset;
 }
@@ -4651,6 +4814,18 @@ static int dissect_object_availabiiity_Pattern_impl(packet_info *pinfo, proto_tr
 
 
 
+static int
+dissect_ftam_T_extension_attribute_identifier1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+  offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id);
+
+  return offset;
+}
+static int dissect_attribute_extension_attribute_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+  return dissect_ftam_T_extension_attribute_identifier1(FALSE, tvb, offset, pinfo, tree, hf_ftam_attribute_extension_attribute_identifier);
+}
+
+
+
 static int
 dissect_ftam_T_extension_attribute_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
@@ -4662,6 +4837,7 @@ static int dissect_extension_attribute_Pattern(packet_info *pinfo, proto_tree *t
   return dissect_ftam_T_extension_attribute_Pattern(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_attribute_Pattern);
 }
 
+
 static const ber_sequence_t T_extension_set_attribute_Patterns_item_sequence[] = {
   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attribute_extension_attribute_identifier },
   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_extension_attribute_Pattern },
@@ -4671,7 +4847,7 @@ static const ber_sequence_t T_extension_set_attribute_Patterns_item_sequence[] =
 static int
 dissect_ftam_T_extension_set_attribute_Patterns_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                T_extension_set_attribute_Patterns_item_sequence, hf_index, ett_ftam_T_extension_set_attribute_Patterns_item);
+                                   T_extension_set_attribute_Patterns_item_sequence, hf_index, ett_ftam_T_extension_set_attribute_Patterns_item);
 
   return offset;
 }
@@ -4679,6 +4855,7 @@ static int dissect_extension_set_attribute_Patterns_item(packet_info *pinfo, pro
   return dissect_ftam_T_extension_set_attribute_Patterns_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attribute_Patterns_item);
 }
 
+
 static const ber_sequence_t T_extension_set_attribute_Patterns_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extension_set_attribute_Patterns_item },
 };
@@ -4686,7 +4863,7 @@ static const ber_sequence_t T_extension_set_attribute_Patterns_sequence_of[1] =
 static int
 dissect_ftam_T_extension_set_attribute_Patterns(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   T_extension_set_attribute_Patterns_sequence_of, hf_index, ett_ftam_T_extension_set_attribute_Patterns);
+                                      T_extension_set_attribute_Patterns_sequence_of, hf_index, ett_ftam_T_extension_set_attribute_Patterns);
 
   return offset;
 }
@@ -4694,6 +4871,7 @@ static int dissect_extension_set_attribute_Patterns_impl(packet_info *pinfo, pro
   return dissect_ftam_T_extension_set_attribute_Patterns(TRUE, tvb, offset, pinfo, tree, hf_ftam_extension_set_attribute_Patterns);
 }
 
+
 static const ber_sequence_t Attribute_Extensions_Pattern_item_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_set_identifier_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_extension_set_attribute_Patterns_impl },
@@ -4703,7 +4881,7 @@ static const ber_sequence_t Attribute_Extensions_Pattern_item_sequence[] = {
 static int
 dissect_ftam_Attribute_Extensions_Pattern_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Attribute_Extensions_Pattern_item_sequence, hf_index, ett_ftam_Attribute_Extensions_Pattern_item);
+                                   Attribute_Extensions_Pattern_item_sequence, hf_index, ett_ftam_Attribute_Extensions_Pattern_item);
 
   return offset;
 }
@@ -4711,6 +4889,7 @@ static int dissect_Attribute_Extensions_Pattern_item(packet_info *pinfo, proto_t
   return dissect_ftam_Attribute_Extensions_Pattern_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Extensions_Pattern_item);
 }
 
+
 static const ber_sequence_t Attribute_Extensions_Pattern_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Extensions_Pattern_item },
 };
@@ -4718,7 +4897,7 @@ static const ber_sequence_t Attribute_Extensions_Pattern_sequence_of[1] = {
 static int
 dissect_ftam_Attribute_Extensions_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   Attribute_Extensions_Pattern_sequence_of, hf_index, ett_ftam_Attribute_Extensions_Pattern);
+                                      Attribute_Extensions_Pattern_sequence_of, hf_index, ett_ftam_Attribute_Extensions_Pattern);
 
   return offset;
 }
@@ -4779,8 +4958,9 @@ static const ber_choice_t AND_Set_item_choice[] = {
 
 static int
 dissect_ftam_AND_Set_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              AND_Set_item_choice, hf_index, ett_ftam_AND_Set_item, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 AND_Set_item_choice, hf_index, ett_ftam_AND_Set_item,
+                                 NULL);
 
   return offset;
 }
@@ -4788,14 +4968,15 @@ static int dissect_AND_Set_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *
   return dissect_ftam_AND_Set_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_AND_Set_item);
 }
 
+
 static const ber_sequence_t AND_Set_sequence_of[1] = {
-  { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_AND_Set_item },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_AND_Set_item },
 };
 
 static int
 dissect_ftam_AND_Set(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   AND_Set_sequence_of, hf_index, ett_ftam_AND_Set);
+                                      AND_Set_sequence_of, hf_index, ett_ftam_AND_Set);
 
   return offset;
 }
@@ -4806,6 +4987,7 @@ static int dissect_Attribute_Value_Assertions_item(packet_info *pinfo, proto_tre
   return dissect_ftam_AND_Set(FALSE, tvb, offset, pinfo, tree, hf_ftam_Attribute_Value_Assertions_item);
 }
 
+
 static const ber_sequence_t Attribute_Value_Assertions_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Attribute_Value_Assertions_item },
 };
@@ -4815,14 +4997,15 @@ dissect_ftam_Attribute_Value_Assertions(gboolean implicit_tag _U_, tvbuff_t *tvb
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ftam_OR_Set(TRUE, tvb, offset, pinfo, tree, hf_index);
 
 
@@ -4854,6 +5037,7 @@ static int dissect_retrieval_scope_impl(packet_info *pinfo, proto_tree *tree, tv
   return dissect_ftam_T_retrieval_scope(TRUE, tvb, offset, pinfo, tree, hf_ftam_retrieval_scope);
 }
 
+
 static const ber_sequence_t Scope_item_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_root_directory },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_retrieval_scope_impl },
@@ -4863,7 +5047,7 @@ static const ber_sequence_t Scope_item_sequence[] = {
 static int
 dissect_ftam_Scope_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                Scope_item_sequence, hf_index, ett_ftam_Scope_item);
+                                   Scope_item_sequence, hf_index, ett_ftam_Scope_item);
 
   return offset;
 }
@@ -4871,6 +5055,7 @@ static int dissect_Scope_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv
   return dissect_ftam_Scope_item(FALSE, tvb, offset, pinfo, tree, hf_ftam_Scope_item);
 }
 
+
 static const ber_sequence_t Scope_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_Scope_item },
 };
@@ -4880,14 +5065,15 @@ dissect_ftam_Scope(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
                                    Scope_sequence_of, hf_index, ett_ftam_Scope);
 
@@ -4898,6 +5084,7 @@ static int dissect_scope(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, in
   return dissect_ftam_Scope(FALSE, tvb, offset, pinfo, tree, hf_ftam_scope);
 }
 
+
 static const ber_sequence_t F_LIST_request_sequence[] = {
   { BER_CLASS_APP, 26, BER_FLAGS_NOOWNTAG, dissect_attribute_value_asset_tions },
   { BER_CLASS_APP, 28, BER_FLAGS_NOOWNTAG, dissect_scope },
@@ -4911,7 +5098,7 @@ static const ber_sequence_t F_LIST_request_sequence[] = {
 static int
 dissect_ftam_F_LIST_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_LIST_request_sequence, hf_index, ett_ftam_F_LIST_request);
+                                   F_LIST_request_sequence, hf_index, ett_ftam_F_LIST_request);
 
   return offset;
 }
@@ -4919,6 +5106,7 @@ static int dissect_f_list_request_impl(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_F_LIST_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_list_request);
 }
 
+
 static const ber_sequence_t Objects_Attributes_List_sequence_of[1] = {
   { BER_CLASS_APP, 18, BER_FLAGS_NOOWNTAG, dissect_Objects_Attributes_List_item },
 };
@@ -4928,24 +5116,27 @@ dissect_ftam_Objects_Attributes_List(gboolean implicit_tag _U_, tvbuff_t *tvb, i
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_sequence_of(TRUE, pinfo, tree, tvb, offset,
                                    Objects_Attributes_List_sequence_of, hf_index, ett_ftam_Objects_Attributes_List);
 
 
+
   return offset;
 }
 static int dissect_objects_attributes_list(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_ftam_Objects_Attributes_List(FALSE, tvb, offset, pinfo, tree, hf_ftam_objects_attributes_list);
 }
 
+
 static const ber_sequence_t F_LIST_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_objects_attributes_list },
@@ -4956,7 +5147,7 @@ static const ber_sequence_t F_LIST_response_sequence[] = {
 static int
 dissect_ftam_F_LIST_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_LIST_response_sequence, hf_index, ett_ftam_F_LIST_response);
+                                   F_LIST_response_sequence, hf_index, ett_ftam_F_LIST_response);
 
   return offset;
 }
@@ -4964,6 +5155,7 @@ static int dissect_f_list_response_impl(packet_info *pinfo, proto_tree *tree, tv
   return dissect_ftam_F_LIST_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_list_response);
 }
 
+
 static const ber_sequence_t F_GROUP_SELECT_request_sequence[] = {
   { BER_CLASS_APP, 26, BER_FLAGS_NOOWNTAG, dissect_attribute_value_assertions },
   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
@@ -4980,7 +5172,7 @@ static const ber_sequence_t F_GROUP_SELECT_request_sequence[] = {
 static int
 dissect_ftam_F_GROUP_SELECT_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_SELECT_request_sequence, hf_index, ett_ftam_F_GROUP_SELECT_request);
+                                   F_GROUP_SELECT_request_sequence, hf_index, ett_ftam_F_GROUP_SELECT_request);
 
   return offset;
 }
@@ -4988,6 +5180,7 @@ static int dissect_f_group_select_request_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_F_GROUP_SELECT_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_select_request);
 }
 
+
 static const ber_sequence_t F_GROUP_SELECT_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -4998,7 +5191,7 @@ static const ber_sequence_t F_GROUP_SELECT_response_sequence[] = {
 static int
 dissect_ftam_F_GROUP_SELECT_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_SELECT_response_sequence, hf_index, ett_ftam_F_GROUP_SELECT_response);
+                                   F_GROUP_SELECT_response_sequence, hf_index, ett_ftam_F_GROUP_SELECT_response);
 
   return offset;
 }
@@ -5019,14 +5212,15 @@ dissect_ftam_Request_Operation_Result(gboolean implicit_tag _U_, tvbuff_t *tvb,
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
   offset = dissect_ber_integer(TRUE, pinfo, tree, tvb, offset, hf_index,
                                   NULL);
 
@@ -5037,6 +5231,7 @@ static int dissect_request_Operation_result(packet_info *pinfo, proto_tree *tree
   return dissect_ftam_Request_Operation_Result(FALSE, tvb, offset, pinfo, tree, hf_ftam_request_Operation_result);
 }
 
+
 static const ber_sequence_t F_GROUP_DELETE_request_sequence[] = {
   { BER_CLASS_APP, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_request_Operation_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -5046,7 +5241,7 @@ static const ber_sequence_t F_GROUP_DELETE_request_sequence[] = {
 static int
 dissect_ftam_F_GROUP_DELETE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_DELETE_request_sequence, hf_index, ett_ftam_F_GROUP_DELETE_request);
+                                   F_GROUP_DELETE_request_sequence, hf_index, ett_ftam_F_GROUP_DELETE_request);
 
   return offset;
 }
@@ -5054,6 +5249,7 @@ static int dissect_f_group_delete_request_impl(packet_info *pinfo, proto_tree *t
   return dissect_ftam_F_GROUP_DELETE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_delete_request);
 }
 
+
 static const ber_sequence_t SEQUENCE_OF_Pathname_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_success_Object_names_item },
 };
@@ -5061,7 +5257,7 @@ static const ber_sequence_t SEQUENCE_OF_Pathname_sequence_of[1] = {
 static int
 dissect_ftam_SEQUENCE_OF_Pathname(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   SEQUENCE_OF_Pathname_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Pathname);
+                                      SEQUENCE_OF_Pathname_sequence_of, hf_index, ett_ftam_SEQUENCE_OF_Pathname);
 
   return offset;
 }
@@ -5087,24 +5283,25 @@ dissect_ftam_Operation_Result(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs
  gint8 class;
  gboolean pc, ind_field;
  gint32 tag;
- gint32 len1;
-
- /* XXX  asn2eth can not yet handle tagged assignment yes so this
-  * XXX is some conformance file magic to work around that bug
-  */
-  offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
-  offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
-
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
+ guint32 len1;
+
+ if(!implicit_tag){
+   /* XXX  asn2eth can not yet handle tagged assignment yes so this
+    * XXX is some conformance file magic to work around that bug
+    */
+    offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
+    offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
+ }
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
                               Operation_Result_choice, hf_index, ett_ftam_Operation_Result, NULL);
 
-
   return offset;
 }
 static int dissect_operation_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
   return dissect_ftam_Operation_Result(FALSE, tvb, offset, pinfo, tree, hf_ftam_operation_result);
 }
 
+
 static const ber_sequence_t F_GROUP_DELETE_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging },
@@ -5117,7 +5314,7 @@ static const ber_sequence_t F_GROUP_DELETE_response_sequence[] = {
 static int
 dissect_ftam_F_GROUP_DELETE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_DELETE_response_sequence, hf_index, ett_ftam_F_GROUP_DELETE_response);
+                                   F_GROUP_DELETE_response_sequence, hf_index, ett_ftam_F_GROUP_DELETE_response);
 
   return offset;
 }
@@ -5144,6 +5341,7 @@ static int dissect_error_action_impl(packet_info *pinfo, proto_tree *tree, tvbuf
   return dissect_ftam_Error_Action(TRUE, tvb, offset, pinfo, tree, hf_ftam_error_action);
 }
 
+
 static const ber_sequence_t F_GROUP_MOVE_request_sequence[] = {
   { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
@@ -5159,7 +5357,7 @@ static const ber_sequence_t F_GROUP_MOVE_request_sequence[] = {
 static int
 dissect_ftam_F_GROUP_MOVE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_MOVE_request_sequence, hf_index, ett_ftam_F_GROUP_MOVE_request);
+                                   F_GROUP_MOVE_request_sequence, hf_index, ett_ftam_F_GROUP_MOVE_request);
 
   return offset;
 }
@@ -5167,6 +5365,7 @@ static int dissect_f_group_move_request_impl(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_F_GROUP_MOVE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_move_request);
 }
 
+
 static const ber_sequence_t F_GROUP_MOVE_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
@@ -5178,7 +5377,7 @@ static const ber_sequence_t F_GROUP_MOVE_response_sequence[] = {
 static int
 dissect_ftam_F_GROUP_MOVE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_MOVE_response_sequence, hf_index, ett_ftam_F_GROUP_MOVE_response);
+                                   F_GROUP_MOVE_response_sequence, hf_index, ett_ftam_F_GROUP_MOVE_response);
 
   return offset;
 }
@@ -5186,6 +5385,7 @@ static int dissect_f_group_move_response_impl(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_F_GROUP_MOVE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_move_response);
 }
 
+
 static const ber_sequence_t F_GROUP_COPY_request_sequence[] = {
   { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
@@ -5201,7 +5401,7 @@ static const ber_sequence_t F_GROUP_COPY_request_sequence[] = {
 static int
 dissect_ftam_F_GROUP_COPY_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_COPY_request_sequence, hf_index, ett_ftam_F_GROUP_COPY_request);
+                                   F_GROUP_COPY_request_sequence, hf_index, ett_ftam_F_GROUP_COPY_request);
 
   return offset;
 }
@@ -5209,6 +5409,7 @@ static int dissect_f_group_copy_request_impl(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_F_GROUP_COPY_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_copy_request);
 }
 
+
 static const ber_sequence_t F_GROUP_COPY_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
@@ -5220,7 +5421,7 @@ static const ber_sequence_t F_GROUP_COPY_response_sequence[] = {
 static int
 dissect_ftam_F_GROUP_COPY_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_COPY_response_sequence, hf_index, ett_ftam_F_GROUP_COPY_response);
+                                   F_GROUP_COPY_response_sequence, hf_index, ett_ftam_F_GROUP_COPY_response);
 
   return offset;
 }
@@ -5228,6 +5429,7 @@ static int dissect_f_group_copy_response_impl(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_F_GROUP_COPY_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_copy_response);
 }
 
+
 static const ber_sequence_t F_GROUP_LIST_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attribute_names_impl },
   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extension_names_impl },
@@ -5237,7 +5439,7 @@ static const ber_sequence_t F_GROUP_LIST_request_sequence[] = {
 static int
 dissect_ftam_F_GROUP_LIST_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_LIST_request_sequence, hf_index, ett_ftam_F_GROUP_LIST_request);
+                                   F_GROUP_LIST_request_sequence, hf_index, ett_ftam_F_GROUP_LIST_request);
 
   return offset;
 }
@@ -5245,6 +5447,7 @@ static int dissect_f_group_list_request_impl(packet_info *pinfo, proto_tree *tre
   return dissect_ftam_F_GROUP_LIST_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_list_request);
 }
 
+
 static const ber_sequence_t F_GROUP_LIST_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_objects_attributes_list },
@@ -5255,7 +5458,7 @@ static const ber_sequence_t F_GROUP_LIST_response_sequence[] = {
 static int
 dissect_ftam_F_GROUP_LIST_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_LIST_response_sequence, hf_index, ett_ftam_F_GROUP_LIST_response);
+                                   F_GROUP_LIST_response_sequence, hf_index, ett_ftam_F_GROUP_LIST_response);
 
   return offset;
 }
@@ -5263,6 +5466,7 @@ static int dissect_f_group_list_response_impl(packet_info *pinfo, proto_tree *tr
   return dissect_ftam_F_GROUP_LIST_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_list_response);
 }
 
+
 static const ber_sequence_t F_GROUP_CHANGE_ATTRIB_request_sequence[] = {
   { BER_CLASS_APP, 8, BER_FLAGS_NOOWNTAG, dissect_attributes },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_error_action_impl },
@@ -5274,7 +5478,7 @@ static const ber_sequence_t F_GROUP_CHANGE_ATTRIB_request_sequence[] = {
 static int
 dissect_ftam_F_GROUP_CHANGE_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_CHANGE_ATTRIB_request_sequence, hf_index, ett_ftam_F_GROUP_CHANGE_ATTRIB_request);
+                                   F_GROUP_CHANGE_ATTRIB_request_sequence, hf_index, ett_ftam_F_GROUP_CHANGE_ATTRIB_request);
 
   return offset;
 }
@@ -5282,6 +5486,7 @@ static int dissect_f_group_Change_attrib_request_impl(packet_info *pinfo, proto_
   return dissect_ftam_F_GROUP_CHANGE_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_Change_attrib_request);
 }
 
+
 static const ber_sequence_t F_GROUP_CHANGE_ATTRIB_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_operation_result },
@@ -5293,7 +5498,7 @@ static const ber_sequence_t F_GROUP_CHANGE_ATTRIB_response_sequence[] = {
 static int
 dissect_ftam_F_GROUP_CHANGE_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_GROUP_CHANGE_ATTRIB_response_sequence, hf_index, ett_ftam_F_GROUP_CHANGE_ATTRIB_response);
+                                   F_GROUP_CHANGE_ATTRIB_response_sequence, hf_index, ett_ftam_F_GROUP_CHANGE_ATTRIB_response);
 
   return offset;
 }
@@ -5301,6 +5506,7 @@ static int dissect_f_group_Change_attrib_response_impl(packet_info *pinfo, proto
   return dissect_ftam_F_GROUP_CHANGE_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_group_Change_attrib_response);
 }
 
+
 static const ber_sequence_t F_SELECT_ANOTHER_request_sequence[] = {
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
   { 0, 0, 0, NULL }
@@ -5309,7 +5515,7 @@ static const ber_sequence_t F_SELECT_ANOTHER_request_sequence[] = {
 static int
 dissect_ftam_F_SELECT_ANOTHER_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_SELECT_ANOTHER_request_sequence, hf_index, ett_ftam_F_SELECT_ANOTHER_request);
+                                   F_SELECT_ANOTHER_request_sequence, hf_index, ett_ftam_F_SELECT_ANOTHER_request);
 
   return offset;
 }
@@ -5317,6 +5523,7 @@ static int dissect_f_select_another_request_impl(packet_info *pinfo, proto_tree
   return dissect_ftam_F_SELECT_ANOTHER_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_another_request);
 }
 
+
 static const ber_sequence_t F_SELECT_ANOTHER_response_sequence[] = {
   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
@@ -5330,7 +5537,7 @@ static const ber_sequence_t F_SELECT_ANOTHER_response_sequence[] = {
 static int
 dissect_ftam_F_SELECT_ANOTHER_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_SELECT_ANOTHER_response_sequence, hf_index, ett_ftam_F_SELECT_ANOTHER_response);
+                                   F_SELECT_ANOTHER_response_sequence, hf_index, ett_ftam_F_SELECT_ANOTHER_response);
 
   return offset;
 }
@@ -5338,6 +5545,7 @@ static int dissect_f_select_another_response_impl(packet_info *pinfo, proto_tree
   return dissect_ftam_F_SELECT_ANOTHER_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_select_another_response);
 }
 
+
 static const ber_sequence_t F_CREATE_DIRECTORY_request_sequence[] = {
   { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
   { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
@@ -5350,7 +5558,7 @@ static const ber_sequence_t F_CREATE_DIRECTORY_request_sequence[] = {
 static int
 dissect_ftam_F_CREATE_DIRECTORY_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CREATE_DIRECTORY_request_sequence, hf_index, ett_ftam_F_CREATE_DIRECTORY_request);
+                                   F_CREATE_DIRECTORY_request_sequence, hf_index, ett_ftam_F_CREATE_DIRECTORY_request);
 
   return offset;
 }
@@ -5358,6 +5566,7 @@ static int dissect_f_create_directory_request_impl(packet_info *pinfo, proto_tre
   return dissect_ftam_F_CREATE_DIRECTORY_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_directory_request);
 }
 
+
 static const ber_sequence_t F_CREATE_DIRECTORY_response_sequence[] = {
   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
@@ -5370,7 +5579,7 @@ static const ber_sequence_t F_CREATE_DIRECTORY_response_sequence[] = {
 static int
 dissect_ftam_F_CREATE_DIRECTORY_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CREATE_DIRECTORY_response_sequence, hf_index, ett_ftam_F_CREATE_DIRECTORY_response);
+                                   F_CREATE_DIRECTORY_response_sequence, hf_index, ett_ftam_F_CREATE_DIRECTORY_response);
 
   return offset;
 }
@@ -5378,9 +5587,10 @@ static int dissect_f_create_directory_response_impl(packet_info *pinfo, proto_tr
   return dissect_ftam_F_CREATE_DIRECTORY_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_create_directory_response);
 }
 
+
 static const ber_sequence_t F_LINK_request_sequence[] = {
   { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
-  { -1/*choice*/ , -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_target_object },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_target_object },
   { BER_CLASS_APP, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_create_password },
   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_requested_access },
   { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_access_passwords },
@@ -5394,7 +5604,7 @@ static const ber_sequence_t F_LINK_request_sequence[] = {
 static int
 dissect_ftam_F_LINK_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_LINK_request_sequence, hf_index, ett_ftam_F_LINK_request);
+                                   F_LINK_request_sequence, hf_index, ett_ftam_F_LINK_request);
 
   return offset;
 }
@@ -5402,11 +5612,12 @@ static int dissect_f_link_request_impl(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_F_LINK_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_link_request);
 }
 
+
 static const ber_sequence_t F_LINK_response_sequence[] = {
   { BER_CLASS_APP, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_state_result },
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 12, BER_FLAGS_NOOWNTAG, dissect_initial_attributes },
-  { -1/*choice*/ , -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_target_Object },
+  { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_target_Object },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
   { BER_CLASS_APP, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_diagnostic },
   { 0, 0, 0, NULL }
@@ -5415,7 +5626,7 @@ static const ber_sequence_t F_LINK_response_sequence[] = {
 static int
 dissect_ftam_F_LINK_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_LINK_response_sequence, hf_index, ett_ftam_F_LINK_response);
+                                   F_LINK_response_sequence, hf_index, ett_ftam_F_LINK_response);
 
   return offset;
 }
@@ -5423,6 +5634,7 @@ static int dissect_f_link_response_impl(packet_info *pinfo, proto_tree *tree, tv
   return dissect_ftam_F_LINK_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_link_response);
 }
 
+
 static const ber_sequence_t F_UNLINK_request_sequence[] = {
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
   { 0, 0, 0, NULL }
@@ -5431,7 +5643,7 @@ static const ber_sequence_t F_UNLINK_request_sequence[] = {
 static int
 dissect_ftam_F_UNLINK_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_UNLINK_request_sequence, hf_index, ett_ftam_F_UNLINK_request);
+                                   F_UNLINK_request_sequence, hf_index, ett_ftam_F_UNLINK_request);
 
   return offset;
 }
@@ -5439,6 +5651,7 @@ static int dissect_f_unlink_request_impl(packet_info *pinfo, proto_tree *tree, t
   return dissect_ftam_F_UNLINK_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_unlink_request);
 }
 
+
 static const ber_sequence_t F_UNLINK_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_shared_ASE_information },
@@ -5450,7 +5663,7 @@ static const ber_sequence_t F_UNLINK_response_sequence[] = {
 static int
 dissect_ftam_F_UNLINK_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_UNLINK_response_sequence, hf_index, ett_ftam_F_UNLINK_response);
+                                   F_UNLINK_response_sequence, hf_index, ett_ftam_F_UNLINK_response);
 
   return offset;
 }
@@ -5458,6 +5671,7 @@ static int dissect_f_unlink_response_impl(packet_info *pinfo, proto_tree *tree,
   return dissect_ftam_F_UNLINK_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_unlink_response);
 }
 
+
 static const ber_sequence_t F_READ_LINK_ATTRIB_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attribute_names_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attribute_extension_names_impl },
@@ -5467,7 +5681,7 @@ static const ber_sequence_t F_READ_LINK_ATTRIB_request_sequence[] = {
 static int
 dissect_ftam_F_READ_LINK_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_READ_LINK_ATTRIB_request_sequence, hf_index, ett_ftam_F_READ_LINK_ATTRIB_request);
+                                   F_READ_LINK_ATTRIB_request_sequence, hf_index, ett_ftam_F_READ_LINK_ATTRIB_request);
 
   return offset;
 }
@@ -5475,6 +5689,7 @@ static int dissect_f_read_link_attrib_request_impl(packet_info *pinfo, proto_tre
   return dissect_ftam_F_READ_LINK_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_link_attrib_request);
 }
 
+
 static const ber_sequence_t F_READ_LINK_ATTRIB_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_read_link_attributes },
@@ -5485,7 +5700,7 @@ static const ber_sequence_t F_READ_LINK_ATTRIB_response_sequence[] = {
 static int
 dissect_ftam_F_READ_LINK_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_READ_LINK_ATTRIB_response_sequence, hf_index, ett_ftam_F_READ_LINK_ATTRIB_response);
+                                   F_READ_LINK_ATTRIB_response_sequence, hf_index, ett_ftam_F_READ_LINK_ATTRIB_response);
 
   return offset;
 }
@@ -5493,6 +5708,7 @@ static int dissect_f_read_link_attrib_response_impl(packet_info *pinfo, proto_tr
   return dissect_ftam_F_READ_LINK_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_read_link_attrib_response);
 }
 
+
 static const ber_sequence_t F_CHANGE_LINK_ATTRIB_request_sequence[] = {
   { BER_CLASS_APP, 8, BER_FLAGS_NOOWNTAG, dissect_attributes },
   { 0, 0, 0, NULL }
@@ -5501,7 +5717,7 @@ static const ber_sequence_t F_CHANGE_LINK_ATTRIB_request_sequence[] = {
 static int
 dissect_ftam_F_CHANGE_LINK_ATTRIB_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CHANGE_LINK_ATTRIB_request_sequence, hf_index, ett_ftam_F_CHANGE_LINK_ATTRIB_request);
+                                   F_CHANGE_LINK_ATTRIB_request_sequence, hf_index, ett_ftam_F_CHANGE_LINK_ATTRIB_request);
 
   return offset;
 }
@@ -5509,6 +5725,7 @@ static int dissect_f_Change_link_attrib_request_impl(packet_info *pinfo, proto_t
   return dissect_ftam_F_CHANGE_LINK_ATTRIB_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_link_attrib_request);
 }
 
+
 static const ber_sequence_t F_CHANGE_LINK_ATTRIB_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributes },
@@ -5519,7 +5736,7 @@ static const ber_sequence_t F_CHANGE_LINK_ATTRIB_response_sequence[] = {
 static int
 dissect_ftam_F_CHANGE_LINK_ATTRIB_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CHANGE_LINK_ATTRIB_response_sequence, hf_index, ett_ftam_F_CHANGE_LINK_ATTRIB_response);
+                                   F_CHANGE_LINK_ATTRIB_response_sequence, hf_index, ett_ftam_F_CHANGE_LINK_ATTRIB_response);
 
   return offset;
 }
@@ -5527,6 +5744,7 @@ static int dissect_f_Change_Iink_attrib_response_impl(packet_info *pinfo, proto_
   return dissect_ftam_F_CHANGE_LINK_ATTRIB_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_Change_Iink_attrib_response);
 }
 
+
 static const ber_sequence_t F_MOVE_request_sequence[] = {
   { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
@@ -5540,7 +5758,7 @@ static const ber_sequence_t F_MOVE_request_sequence[] = {
 static int
 dissect_ftam_F_MOVE_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_MOVE_request_sequence, hf_index, ett_ftam_F_MOVE_request);
+                                   F_MOVE_request_sequence, hf_index, ett_ftam_F_MOVE_request);
 
   return offset;
 }
@@ -5548,6 +5766,7 @@ static int dissect_f_move_request_impl(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_F_MOVE_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_move_request);
 }
 
+
 static const ber_sequence_t F_MOVE_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
@@ -5559,7 +5778,7 @@ static const ber_sequence_t F_MOVE_response_sequence[] = {
 static int
 dissect_ftam_F_MOVE_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_MOVE_response_sequence, hf_index, ett_ftam_F_MOVE_response);
+                                   F_MOVE_response_sequence, hf_index, ett_ftam_F_MOVE_response);
 
   return offset;
 }
@@ -5567,6 +5786,7 @@ static int dissect_f_move_response_impl(packet_info *pinfo, proto_tree *tree, tv
   return dissect_ftam_F_MOVE_response(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_move_response);
 }
 
+
 static const ber_sequence_t F_COPY_request_sequence[] = {
   { BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_override_impl },
@@ -5580,7 +5800,7 @@ static const ber_sequence_t F_COPY_request_sequence[] = {
 static int
 dissect_ftam_F_COPY_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_COPY_request_sequence, hf_index, ett_ftam_F_COPY_request);
+                                   F_COPY_request_sequence, hf_index, ett_ftam_F_COPY_request);
 
   return offset;
 }
@@ -5588,6 +5808,7 @@ static int dissect_f_copy_request_impl(packet_info *pinfo, proto_tree *tree, tvb
   return dissect_ftam_F_COPY_request(TRUE, tvb, offset, pinfo, tree, hf_ftam_f_copy_request);
 }
 
+
 static const ber_sequence_t F_COPY_response_sequence[] = {
   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_action_result },
   { BER_CLASS_APP, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_destination_file_directory },
@@ -5599,7 +5820,7 @@ static const ber_sequence_t F_COPY_response_sequence[] = {
 static int
 dissect_ftam_F_COPY_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_COPY_response_sequence, hf_index, ett_ftam_F_COPY_response);
+                                   F_COPY_response_sequence, hf_index, ett_ftam_F_COPY_response);
 
   return offset;
 }
@@ -5684,8 +5905,10 @@ static int
 dissect_ftam_FSM_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   gint branch_taken;
 
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              FSM_PDU_choice, hf_index, ett_ftam_FSM_PDU, &branch_taken);
+    offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 FSM_PDU_choice, hf_index, ett_ftam_FSM_PDU,
+                                 &branch_taken);
+
 
   if( (branch_taken!=-1) && ftam_FSM_PDU_vals[branch_taken].strptr ){
        if (check_col(pinfo->cinfo, COL_INFO)) {
@@ -5701,29 +5924,33 @@ static int dissect_fSM_PDU(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
 
 
 static const value_string ftam_PDU_vals[] = {
-  { -1/*choice*/, "fTAM-Regime-PDU" },
-  { -1/*choice*/, "file-PDU" },
-  { -1/*choice*/, "bulk-Data-PDU" },
-  { -1/*choice*/, "fSM-PDU" },
+  {   0, "fTAM-Regime-PDU" },
+  {   1, "file-PDU" },
+  {   2, "bulk-Data-PDU" },
+  {   3, "fSM-PDU" },
+  {   4, "nBS9" },
   { 0, NULL }
 };
 
 static const ber_choice_t PDU_choice[] = {
-  { -1/*choice*/, BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_fTAM_Regime_PDU },
-  { -1/*choice*/, BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_file_PDU },
-  { -1/*choice*/, BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_bulk_Data_PDU },
-  { -1/*choice*/, BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_fSM_PDU },
+  {   0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_fTAM_Regime_PDU },
+  {   1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_file_PDU },
+  {   2, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_bulk_Data_PDU },
+  {   3, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_fSM_PDU },
+  {   4, BER_CLASS_PRI, 2, BER_FLAGS_IMPLTAG, dissect_nBS9_impl },
   { 0, 0, 0, 0, NULL }
 };
 
 static int
 dissect_ftam_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
-  offset = dissect_ber_CHOICE(pinfo, tree, tvb, offset,
-                              PDU_choice, hf_index, ett_ftam_PDU, NULL);
+  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+                                 PDU_choice, hf_index, ett_ftam_PDU,
+                                 NULL);
 
   return offset;
 }
 
+
 static const ber_sequence_t F_CHECK_request_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_checkpoint_identifier_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
@@ -5733,11 +5960,12 @@ static const ber_sequence_t F_CHECK_request_sequence[] = {
 static int
 dissect_ftam_F_CHECK_request(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CHECK_request_sequence, hf_index, ett_ftam_F_CHECK_request);
+                                   F_CHECK_request_sequence, hf_index, ett_ftam_F_CHECK_request);
 
   return offset;
 }
 
+
 static const ber_sequence_t F_CHECK_response_sequence[] = {
   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_checkpoint_identifier_impl },
   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_transfer_number_impl },
@@ -5747,11 +5975,12 @@ static const ber_sequence_t F_CHECK_response_sequence[] = {
 static int
 dissect_ftam_F_CHECK_response(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
-                                F_CHECK_response_sequence, hf_index, ett_ftam_F_CHECK_response);
+                                   F_CHECK_response_sequence, hf_index, ett_ftam_F_CHECK_response);
 
   return offset;
 }
 
+
 static const ber_sequence_t OR_Set_sequence_of[1] = {
   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_OR_Set_item },
 };
@@ -5759,12 +5988,13 @@ static const ber_sequence_t OR_Set_sequence_of[1] = {
 static int
 dissect_ftam_OR_Set(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
-                                   OR_Set_sequence_of, hf_index, ett_ftam_OR_Set);
+                                      OR_Set_sequence_of, hf_index, ett_ftam_OR_Set);
 
   return offset;
 }
 
 
+
 static int
 dissect_ftam_Other_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
   offset = dissect_ftam_Equality_Comparision(implicit_tag, tvb, offset, pinfo, tree, hf_index);
@@ -5833,6 +6063,10 @@ void proto_register_ftam(void) {
       { "fSM-PDU", "ftam.fSM_PDU",
         FT_UINT32, BASE_DEC, VALS(ftam_FSM_PDU_vals), 0,
         "PDU/fSM-PDU", HFILL }},
+    { &hf_ftam_nBS9,
+      { "nBS9", "ftam.nBS9",
+        FT_NONE, BASE_NONE, NULL, 0,
+        "PDU/nBS9", HFILL }},
     { &hf_ftam_f_initialize_request,
       { "f-initialize-request", "ftam.f_initialize_request",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -5891,7 +6125,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_contents_type_list,
       { "contents-type-list", "ftam.contents_type_list",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_initiator_identity,
       { "initiator-identity", "ftam.initiator_identity",
@@ -5919,7 +6153,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_diagnostic,
       { "diagnostic", "ftam.diagnostic",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_Contents_Type_List_item,
       { "Item", "ftam.Contents_Type_List_item",
@@ -5935,7 +6169,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_charging,
       { "charging", "ftam.charging",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_f_select_request,
       { "f-select-request", "ftam.f_select_request",
@@ -6055,7 +6289,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_path_access_passwords,
       { "path-access-passwords", "ftam.path_access_passwords",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_concurrency_control,
       { "concurrency-control", "ftam.concurrency_control",
@@ -6083,7 +6317,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_attribute_extension_names,
       { "attribute-extension-names", "ftam.attribute_extension_names",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_read_attributes,
       { "attributes", "ftam.attributes",
@@ -6123,7 +6357,7 @@ void proto_register_ftam(void) {
         "F-OPEN-request/recovery-mode", HFILL }},
     { &hf_ftam_remove_contexts,
       { "remove-contexts", "ftam.remove_contexts",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_remove_contexts_item,
       { "Item", "ftam.remove_contexts_item",
@@ -6131,7 +6365,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_define_contexts,
       { "define-contexts", "ftam.define_contexts",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_define_contexts_item,
       { "Item", "ftam.define_contexts_item",
@@ -6303,7 +6537,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_pass_passwords,
       { "pass-passwords", "ftam.pass_passwords",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_link_password,
       { "link-password", "ftam.link_password",
@@ -6343,7 +6577,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_attribute_extensions,
       { "attribute-extensions", "ftam.attribute_extensions",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_Charging_item,
       { "Item", "ftam.Charging_item",
@@ -6455,7 +6689,7 @@ void proto_register_ftam(void) {
         "FADU-Identity/single-name", HFILL }},
     { &hf_ftam_name_list,
       { "name-list", "ftam.name_list",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "FADU-Identity/name-list", HFILL }},
     { &hf_ftam_name_list_item,
       { "Item", "ftam.name_list_item",
@@ -6479,7 +6713,7 @@ void proto_register_ftam(void) {
         "Read-Attributes/linked-Object", HFILL }},
     { &hf_ftam_child_objects,
       { "child-objects", "ftam.child_objects",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Read-Attributes/child-objects", HFILL }},
     { &hf_ftam_primaty_pathname,
       { "primaty-pathname", "ftam.primaty_pathname",
@@ -6531,7 +6765,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_actual_values3,
       { "actual-values", "ftam.actual_values",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Access-Control-Attribute/actual-values", HFILL }},
     { &hf_ftam_actual_values_item,
       { "Item", "ftam.actual_values_item",
@@ -6543,7 +6777,7 @@ void proto_register_ftam(void) {
         "Access-Control-Change-Attribute/actual-values", HFILL }},
     { &hf_ftam_insert_values,
       { "insert-values", "ftam.insert_values",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Access-Control-Change-Attribute/actual-values/insert-values", HFILL }},
     { &hf_ftam_insert_values_item,
       { "Item", "ftam.insert_values_item",
@@ -6551,7 +6785,7 @@ void proto_register_ftam(void) {
         "Access-Control-Change-Attribute/actual-values/insert-values/_item", HFILL }},
     { &hf_ftam_delete_values,
       { "delete-values", "ftam.delete_values",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Access-Control-Change-Attribute/actual-values/delete-values", HFILL }},
     { &hf_ftam_delete_values_item,
       { "Item", "ftam.delete_values_item",
@@ -6639,11 +6873,11 @@ void proto_register_ftam(void) {
         "Object-Availability-Attribute/actual-values", HFILL }},
     { &hf_ftam_incomplete_pathname,
       { "incomplete-pathname", "ftam.incomplete_pathname",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Pathname-Attribute/incomplete-pathname", HFILL }},
     { &hf_ftam_complete_pathname,
       { "complete-pathname", "ftam.complete_pathname",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Pathname-Attribute/complete-pathname", HFILL }},
     { &hf_ftam_actual_values7,
       { "actual-values", "ftam.actual_values",
@@ -6807,19 +7041,19 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_attribute_value_asset_tions,
       { "attribute-value-asset-tions", "ftam.attribute_value_asset_tions",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "F-LIST-request/attribute-value-asset-tions", HFILL }},
     { &hf_ftam_scope,
       { "scope", "ftam.scope",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_objects_attributes_list,
       { "objects-attributes-list", "ftam.objects_attributes_list",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "", HFILL }},
     { &hf_ftam_attribute_value_assertions,
       { "attribute-value-assertions", "ftam.attribute_value_assertions",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "F-GROUP-SELECT-request/attribute-value-assertions", HFILL }},
     { &hf_ftam_maximum_set_size,
       { "maximum-set-size", "ftam.maximum_set_size",
@@ -6867,7 +7101,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_extension_attribute_names,
       { "extension-attribute-names", "ftam.extension_attribute_names",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Attribute-Extension-Set-Name/extension-attribute-names", HFILL }},
     { &hf_ftam_extension_attribute_names_item,
       { "Item", "ftam.extension_attribute_names_item",
@@ -6879,7 +7113,7 @@ void proto_register_ftam(void) {
         "Attribute-Extensions/_item", HFILL }},
     { &hf_ftam_extension_set_attributes,
       { "extension-set-attributes", "ftam.extension_set_attributes",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Attribute-Extension-Set/extension-set-attributes", HFILL }},
     { &hf_ftam_extension_set_attributes_item,
       { "Item", "ftam.extension_set_attributes_item",
@@ -6907,7 +7141,7 @@ void proto_register_ftam(void) {
         "Scope/_item/retrieval-scope", HFILL }},
     { &hf_ftam_OR_Set_item,
       { "Item", "ftam.OR_Set_item",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "OR-Set/_item", HFILL }},
     { &hf_ftam_AND_Set_item,
       { "Item", "ftam.AND_Set_item",
@@ -6995,7 +7229,7 @@ void proto_register_ftam(void) {
         "AND-Set/_item/legal-quailfication-Pattern", HFILL }},
     { &hf_ftam_attribute_extensions_pattern,
       { "attribute-extensions-pattern", "ftam.attribute_extensions_pattern",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "AND-Set/_item/attribute-extensions-pattern", HFILL }},
     { &hf_ftam_equality_comparision,
       { "equality-comparision", "ftam.equality_comparision",
@@ -7003,7 +7237,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_pathname_value,
       { "pathname-value", "ftam.pathname_value",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Pathname-Pattern/pathname-value", HFILL }},
     { &hf_ftam_pathname_value_item,
       { "Item", "ftam.pathname_value_item",
@@ -7019,7 +7253,7 @@ void proto_register_ftam(void) {
         "", HFILL }},
     { &hf_ftam_string_value,
       { "string-value", "ftam.string_value",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "String-Pattern/string-value", HFILL }},
     { &hf_ftam_string_value_item,
       { "Item", "ftam.string_value_item",
@@ -7087,7 +7321,7 @@ void proto_register_ftam(void) {
         "Attribute-Extensions-Pattern/_item", HFILL }},
     { &hf_ftam_extension_set_attribute_Patterns,
       { "extension-set-attribute-Patterns", "ftam.extension_set_attribute_Patterns",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns", HFILL }},
     { &hf_ftam_extension_set_attribute_Patterns_item,
       { "Item", "ftam.extension_set_attribute_Patterns_item",
@@ -7111,11 +7345,11 @@ void proto_register_ftam(void) {
         "Operation-Result/success-Object-count", HFILL }},
     { &hf_ftam_success_Object_names,
       { "success-Object-names", "ftam.success_Object_names",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Operation-Result/success-Object-names", HFILL }},
     { &hf_ftam_success_Object_names_item,
       { "Item", "ftam.success_Object_names_item",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Operation-Result/success-Object-names/_item", HFILL }},
     { &hf_ftam_Pathname_item,
       { "Item", "ftam.Pathname_item",
@@ -7131,15 +7365,15 @@ void proto_register_ftam(void) {
         "Path-Access-Passwords/_item", HFILL }},
     { &hf_ftam_ap,
       { "ap", "ftam.ap",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
         "AE-title/ap", HFILL }},
     { &hf_ftam_ae,
       { "ae", "ftam.ae",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
         "AE-title/ae", HFILL }},
     { &hf_ftam_Attribute_Value_Assertions_item,
       { "Item", "ftam.Attribute_Value_Assertions_item",
-        FT_NONE, BASE_NONE, NULL, 0,
+        FT_UINT32, BASE_DEC, NULL, 0,
         "Attribute-Value-Assertions/_item", HFILL }},
     { &hf_ftam_Protocol_Version_version_1,
       { "version-1", "ftam.version-1",
@@ -7473,8 +7707,8 @@ void proto_register_ftam(void) {
       { "read-path-access-control", "ftam.read-path-access-control",
         FT_BOOLEAN, 8, NULL, 0x04,
         "", HFILL }},
-    { &hf_ftam_Attribute_Names_read_l8gal_qualifiCatiOnS,
-      { "read-l8gal-qualifiCatiOnS", "ftam.read-l8gal-qualifiCatiOnS",
+    { &hf_ftam_Attribute_Names_read_legal_qualifiCatiOnS,
+      { "read-legal-qualifiCatiOnS", "ftam.read-legal-qualifiCatiOnS",
         FT_BOOLEAN, 8, NULL, 0x80,
         "", HFILL }},
     { &hf_ftam_Attribute_Names_read_private_use,
@@ -7674,7 +7908,24 @@ void proto_register_ftam(void) {
 
 /*--- proto_reg_handoff_ftam --- */
 void proto_reg_handoff_ftam(void) {
-       register_ber_oid_dissector("1.0.8571.1.1", dissect_ftam, proto_ftam, 
-         "ftam");
-
+       register_ber_oid_dissector("1.0.8571.1.1", dissect_ftam, proto_ftam,"iso-ftam(1)");
+       register_ber_oid_dissector("1.0.8571.2.1", dissect_ftam, proto_ftam,"ftam-pci(1)");
+       register_ber_oid_dissector("1.3.14.5.2.2", dissect_ftam, proto_ftam,"NIST file directory entry abstract syntax");
+
+       /* Unstructured text file document type FTAM-1 */
+       register_ber_oid_name("1.0.8571.5.1","ISO FTAM unstructured text");
+       register_ber_oid_name("1.0.8571.2.3","FTAM unstructured text abstract syntax");
+       register_ber_oid_name("1.0.8571.3.1","FTAM hierarchical file model");
+       register_ber_oid_name("1.0.8571.4.1","FTAM unstructured constraint set");
+
+       /* Unstructured text file document type FTAM-3 */
+       register_ber_oid_name("1.0.8571.5.3","ISO FTAM unstructured binary");
+       register_ber_oid_name("1.0.8571.2.4","FTAM unstructured binary abstract syntax");
+
+       /* Filedirectory file document type NBS-9 */
+       register_ber_oid_name("1.3.14.5.5.9","NBS-9 FTAM file directory file");
+
+       /* Filedirectory file document type NBS-9 (WITH OLD NIST OIDs)*/
+       register_ber_oid_name("1.3.9999.1.5.9","NBS-9-OLD FTAM file directory file");
+       register_ber_oid_name("1.3.9999.1.2.2","NIST file directory entry abstract syntax");
 }