/* DO NOT EDIT
	This file was automatically generated by Pidl
	from samr.idl and samr.cnf.

	Pidl is a perl based IDL compiler for DCE/RPC idl files.
	It is maintained by the Samba team, not the Wireshark team.
	Instructions on how to download and install Pidl can be
	found at https://wiki.wireshark.org/Pidl
*/


#include "config.h"
#include <string.h>
#include <wsutil/array.h>
#include <epan/packet.h>
#include <epan/tfs.h>

#include "packet-dcerpc.h"
#include "packet-dcerpc-nt.h"
#include "packet-windows-common.h"
#include "packet-dcerpc-samr.h"
void proto_register_dcerpc_samr(void);
void proto_reg_handoff_dcerpc_samr(void);

/* Ett declarations */
static int ett_dcerpc_samr;
static int ett_samr_lsa_Strings;
static int ett_samr_samr_AcctFlags;
static int ett_samr_samr_ConnectAccessMask;
static int ett_samr_samr_UserAccessMask;
static int ett_samr_samr_DomainAccessMask;
static int ett_samr_samr_GroupAccessMask;
static int ett_samr_samr_AliasAccessMask;
static int ett_samr_samr_SamEntry;
static int ett_samr_samr_SamArray;
static int ett_samr_samr_PasswordProperties;
static int ett_samr_samr_DomInfo1;
static int ett_samr_samr_DomGeneralInformation;
static int ett_samr_samr_DomInfo3;
static int ett_samr_samr_DomOEMInformation;
static int ett_samr_samr_DomInfo5;
static int ett_samr_samr_DomInfo6;
static int ett_samr_samr_DomInfo7;
static int ett_samr_samr_DomInfo8;
static int ett_samr_samr_DomInfo9;
static int ett_samr_samr_DomGeneralInformation2;
static int ett_samr_samr_DomInfo12;
static int ett_samr_samr_DomInfo13;
static int ett_samr_samr_DomainInfo;
static int ett_samr_samr_Ids;
static int ett_samr_samr_GroupAttrs;
static int ett_samr_samr_GroupInfoAll;
static int ett_samr_samr_GroupInfoAttributes;
static int ett_samr_samr_GroupInfoDescription;
static int ett_samr_samr_GroupInfo;
static int ett_samr_samr_RidTypeArray;
static int ett_samr_samr_AliasInfoAll;
static int ett_samr_samr_AliasInfo;
static int ett_samr_samr_UserInfo1;
static int ett_samr_samr_UserInfo2;
static int ett_samr_samr_LogonHours;
static int ett_samr_samr_UserInfo3;
static int ett_samr_samr_UserInfo4;
static int ett_samr_samr_UserInfo5;
static int ett_samr_samr_UserInfo6;
static int ett_samr_samr_UserInfo7;
static int ett_samr_samr_UserInfo8;
static int ett_samr_samr_UserInfo9;
static int ett_samr_samr_UserInfo10;
static int ett_samr_samr_UserInfo11;
static int ett_samr_samr_UserInfo12;
static int ett_samr_samr_UserInfo13;
static int ett_samr_samr_UserInfo14;
static int ett_samr_samr_UserInfo16;
static int ett_samr_samr_UserInfo17;
static int ett_samr_samr_Password;
static int ett_samr_samr_UserInfo18;
static int ett_samr_samr_UserInfo20;
static int ett_samr_samr_FieldsPresent;
static int ett_samr_samr_UserInfo21;
static int ett_samr_samr_CryptPassword;
static int ett_samr_samr_UserInfo23;
static int ett_samr_samr_UserInfo24;
static int ett_samr_samr_CryptPasswordEx;
static int ett_samr_samr_UserInfo25;
static int ett_samr_samr_UserInfo26;
static int ett_samr_samr_EncryptedPasswordAES;
static int ett_samr_samr_UserInfo31;
static int ett_samr_samr_UserInfo32;
static int ett_samr_samr_UserInfo;
static int ett_samr_samr_RidWithAttribute;
static int ett_samr_samr_RidWithAttributeArray;
static int ett_samr_samr_DispEntryGeneral;
static int ett_samr_samr_DispInfoGeneral;
static int ett_samr_samr_DispEntryFull;
static int ett_samr_samr_DispInfoFull;
static int ett_samr_samr_DispEntryFullGroup;
static int ett_samr_samr_DispInfoFullGroups;
static int ett_samr_samr_DispEntryAscii;
static int ett_samr_samr_DispInfoAscii;
static int ett_samr_samr_DispInfo;
static int ett_samr_samr_PwInfo;
static int ett_samr_userPwdChangeFailureInformation;
static int ett_samr_samr_ConnectInfo1;
static int ett_samr_samr_ConnectInfo;
static int ett_samr_samr_ValidateFieldsPresent;
static int ett_samr_samr_ValidationBlob;
static int ett_samr_samr_ValidatePasswordInfo;
static int ett_samr_samr_ValidatePasswordRepCtr;
static int ett_samr_samr_ValidatePasswordRep;
static int ett_samr_samr_ValidatePasswordReq3;
static int ett_samr_samr_ValidatePasswordReq2;
static int ett_samr_samr_ValidatePasswordReq1;
static int ett_samr_samr_ValidatePasswordReq;


/* Header field declarations */
static int hf_samr_alias_access_mask;
static int hf_samr_alias_handle;
static int hf_samr_connect_access_mask;
static int hf_samr_connect_handle;
static int hf_samr_domain_access_mask;
static int hf_samr_domain_handle;
static int hf_samr_group_access_mask;
static int hf_samr_group_handle;
static int hf_samr_handle;
static int hf_samr_lsa_Strings_count;
static int hf_samr_lsa_Strings_names;
static int hf_samr_opnum;
static int hf_samr_rid;
static int hf_samr_samr_AcctFlags_ACB_AUTOLOCK;
static int hf_samr_samr_AcctFlags_ACB_DISABLED;
static int hf_samr_samr_AcctFlags_ACB_DOMTRUST;
static int hf_samr_samr_AcctFlags_ACB_DONT_REQUIRE_PREAUTH;
static int hf_samr_samr_AcctFlags_ACB_ENC_TXT_PWD_ALLOWED;
static int hf_samr_samr_AcctFlags_ACB_HOMDIRREQ;
static int hf_samr_samr_AcctFlags_ACB_MNS;
static int hf_samr_samr_AcctFlags_ACB_NORMAL;
static int hf_samr_samr_AcctFlags_ACB_NOT_DELEGATED;
static int hf_samr_samr_AcctFlags_ACB_NO_AUTH_DATA_REQD;
static int hf_samr_samr_AcctFlags_ACB_PARTIAL_SECRETS_ACCOUNT;
static int hf_samr_samr_AcctFlags_ACB_PWNOEXP;
static int hf_samr_samr_AcctFlags_ACB_PWNOTREQ;
static int hf_samr_samr_AcctFlags_ACB_PW_EXPIRED;
static int hf_samr_samr_AcctFlags_ACB_SMARTCARD_REQUIRED;
static int hf_samr_samr_AcctFlags_ACB_SVRTRUST;
static int hf_samr_samr_AcctFlags_ACB_TEMPDUP;
static int hf_samr_samr_AcctFlags_ACB_TRUSTED_FOR_DELEGATION;
static int hf_samr_samr_AcctFlags_ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION;
static int hf_samr_samr_AcctFlags_ACB_USE_AES_KEYS;
static int hf_samr_samr_AcctFlags_ACB_USE_DES_KEY_ONLY;
static int hf_samr_samr_AcctFlags_ACB_WSTRUST;
static int hf_samr_samr_AddAliasMember_sid;
static int hf_samr_samr_AddGroupMember_flags;
static int hf_samr_samr_AddMultipleMembersToAlias_sids;
static int hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_ADD_MEMBER;
static int hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_GET_MEMBERS;
static int hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_LOOKUP_INFO;
static int hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_REMOVE_MEMBER;
static int hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_SET_INFO;
static int hf_samr_samr_AliasInfoAll_description;
static int hf_samr_samr_AliasInfoAll_name;
static int hf_samr_samr_AliasInfoAll_num_members;
static int hf_samr_samr_AliasInfo_all;
static int hf_samr_samr_AliasInfo_description;
static int hf_samr_samr_AliasInfo_name;
static int hf_samr_samr_ChangePasswordUser2_account;
static int hf_samr_samr_ChangePasswordUser2_lm_change;
static int hf_samr_samr_ChangePasswordUser2_lm_password;
static int hf_samr_samr_ChangePasswordUser2_lm_verifier;
static int hf_samr_samr_ChangePasswordUser2_nt_password;
static int hf_samr_samr_ChangePasswordUser2_nt_verifier;
static int hf_samr_samr_ChangePasswordUser2_server;
static int hf_samr_samr_ChangePasswordUser3_account;
static int hf_samr_samr_ChangePasswordUser3_dominfo;
static int hf_samr_samr_ChangePasswordUser3_lm_change;
static int hf_samr_samr_ChangePasswordUser3_lm_password;
static int hf_samr_samr_ChangePasswordUser3_lm_verifier;
static int hf_samr_samr_ChangePasswordUser3_nt_password;
static int hf_samr_samr_ChangePasswordUser3_nt_verifier;
static int hf_samr_samr_ChangePasswordUser3_password3;
static int hf_samr_samr_ChangePasswordUser3_reject;
static int hf_samr_samr_ChangePasswordUser3_server;
static int hf_samr_samr_ChangePasswordUser4_account;
static int hf_samr_samr_ChangePasswordUser4_password;
static int hf_samr_samr_ChangePasswordUser4_server;
static int hf_samr_samr_ChangePasswordUser_cross1_present;
static int hf_samr_samr_ChangePasswordUser_cross2_present;
static int hf_samr_samr_ChangePasswordUser_lm_cross;
static int hf_samr_samr_ChangePasswordUser_lm_present;
static int hf_samr_samr_ChangePasswordUser_new_lm_crypted;
static int hf_samr_samr_ChangePasswordUser_new_nt_crypted;
static int hf_samr_samr_ChangePasswordUser_nt_cross;
static int hf_samr_samr_ChangePasswordUser_nt_present;
static int hf_samr_samr_ChangePasswordUser_old_lm_crypted;
static int hf_samr_samr_ChangePasswordUser_old_nt_crypted;
static int hf_samr_samr_Connect2_system_name;
static int hf_samr_samr_Connect3_system_name;
static int hf_samr_samr_Connect3_unknown;
static int hf_samr_samr_Connect4_client_version;
static int hf_samr_samr_Connect4_system_name;
static int hf_samr_samr_Connect5_info_in;
static int hf_samr_samr_Connect5_info_out;
static int hf_samr_samr_Connect5_level_in;
static int hf_samr_samr_Connect5_level_out;
static int hf_samr_samr_Connect5_system_name;
static int hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER;
static int hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN;
static int hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS;
static int hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER;
static int hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN;
static int hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER;
static int hf_samr_samr_ConnectInfo1_client_version;
static int hf_samr_samr_ConnectInfo1_supported_features;
static int hf_samr_samr_ConnectInfo_info1;
static int hf_samr_samr_Connect_system_name;
static int hf_samr_samr_CreateDomAlias_alias_name;
static int hf_samr_samr_CreateDomainGroup_name;
static int hf_samr_samr_CreateUser2_access_granted;
static int hf_samr_samr_CreateUser2_account_name;
static int hf_samr_samr_CreateUser2_acct_flags;
static int hf_samr_samr_CreateUser_account_name;
static int hf_samr_samr_CryptPasswordEx_data;
static int hf_samr_samr_CryptPassword_data;
static int hf_samr_samr_DeleteAliasMember_sid;
static int hf_samr_samr_DispEntryAscii_account_name;
static int hf_samr_samr_DispEntryAscii_idx;
static int hf_samr_samr_DispEntryFullGroup_account_name;
static int hf_samr_samr_DispEntryFullGroup_acct_flags;
static int hf_samr_samr_DispEntryFullGroup_description;
static int hf_samr_samr_DispEntryFullGroup_idx;
static int hf_samr_samr_DispEntryFull_account_name;
static int hf_samr_samr_DispEntryFull_acct_flags;
static int hf_samr_samr_DispEntryFull_description;
static int hf_samr_samr_DispEntryFull_idx;
static int hf_samr_samr_DispEntryGeneral_account_name;
static int hf_samr_samr_DispEntryGeneral_acct_flags;
static int hf_samr_samr_DispEntryGeneral_description;
static int hf_samr_samr_DispEntryGeneral_full_name;
static int hf_samr_samr_DispEntryGeneral_idx;
static int hf_samr_samr_DispInfoAscii_count;
static int hf_samr_samr_DispInfoAscii_entries;
static int hf_samr_samr_DispInfoFullGroups_count;
static int hf_samr_samr_DispInfoFullGroups_entries;
static int hf_samr_samr_DispInfoFull_count;
static int hf_samr_samr_DispInfoFull_entries;
static int hf_samr_samr_DispInfoGeneral_count;
static int hf_samr_samr_DispInfoGeneral_entries;
static int hf_samr_samr_DispInfo_info1;
static int hf_samr_samr_DispInfo_info2;
static int hf_samr_samr_DispInfo_info3;
static int hf_samr_samr_DispInfo_info4;
static int hf_samr_samr_DispInfo_info5;
static int hf_samr_samr_DomGeneralInformation2_general;
static int hf_samr_samr_DomGeneralInformation2_lockout_duration;
static int hf_samr_samr_DomGeneralInformation2_lockout_threshold;
static int hf_samr_samr_DomGeneralInformation2_lockout_window;
static int hf_samr_samr_DomGeneralInformation_domain_name;
static int hf_samr_samr_DomGeneralInformation_domain_server_state;
static int hf_samr_samr_DomGeneralInformation_force_logoff_time;
static int hf_samr_samr_DomGeneralInformation_num_aliases;
static int hf_samr_samr_DomGeneralInformation_num_groups;
static int hf_samr_samr_DomGeneralInformation_num_users;
static int hf_samr_samr_DomGeneralInformation_oem_information;
static int hf_samr_samr_DomGeneralInformation_primary;
static int hf_samr_samr_DomGeneralInformation_role;
static int hf_samr_samr_DomGeneralInformation_sequence_num;
static int hf_samr_samr_DomGeneralInformation_unknown3;
static int hf_samr_samr_DomInfo12_lockout_duration;
static int hf_samr_samr_DomInfo12_lockout_threshold;
static int hf_samr_samr_DomInfo12_lockout_window;
static int hf_samr_samr_DomInfo13_domain_create_time;
static int hf_samr_samr_DomInfo13_modified_count_at_last_promotion;
static int hf_samr_samr_DomInfo13_sequence_num;
static int hf_samr_samr_DomInfo1_max_password_age;
static int hf_samr_samr_DomInfo1_min_password_age;
static int hf_samr_samr_DomInfo1_min_password_length;
static int hf_samr_samr_DomInfo1_password_history_length;
static int hf_samr_samr_DomInfo1_password_properties;
static int hf_samr_samr_DomInfo3_force_logoff_time;
static int hf_samr_samr_DomInfo5_domain_name;
static int hf_samr_samr_DomInfo6_primary;
static int hf_samr_samr_DomInfo7_role;
static int hf_samr_samr_DomInfo8_domain_create_time;
static int hf_samr_samr_DomInfo8_sequence_num;
static int hf_samr_samr_DomInfo9_domain_server_state;
static int hf_samr_samr_DomOEMInformation_oem_information;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_ALIAS;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_GROUP;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_USER;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_1;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_2;
static int hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_3;
static int hf_samr_samr_DomainInfo_general;
static int hf_samr_samr_DomainInfo_general2;
static int hf_samr_samr_DomainInfo_info1;
static int hf_samr_samr_DomainInfo_info12;
static int hf_samr_samr_DomainInfo_info13;
static int hf_samr_samr_DomainInfo_info3;
static int hf_samr_samr_DomainInfo_info5;
static int hf_samr_samr_DomainInfo_info6;
static int hf_samr_samr_DomainInfo_info7;
static int hf_samr_samr_DomainInfo_info8;
static int hf_samr_samr_DomainInfo_info9;
static int hf_samr_samr_DomainInfo_oem;
static int hf_samr_samr_EncryptedPasswordAES_PBKDF2Iterations;
static int hf_samr_samr_EncryptedPasswordAES_auth_data;
static int hf_samr_samr_EncryptedPasswordAES_cipher;
static int hf_samr_samr_EncryptedPasswordAES_cipher_len;
static int hf_samr_samr_EncryptedPasswordAES_salt;
static int hf_samr_samr_EnumDomainAliases_max_size;
static int hf_samr_samr_EnumDomainAliases_num_entries;
static int hf_samr_samr_EnumDomainAliases_resume_handle;
static int hf_samr_samr_EnumDomainAliases_sam;
static int hf_samr_samr_EnumDomainGroups_max_size;
static int hf_samr_samr_EnumDomainGroups_num_entries;
static int hf_samr_samr_EnumDomainGroups_resume_handle;
static int hf_samr_samr_EnumDomainGroups_sam;
static int hf_samr_samr_EnumDomainUsers_acct_flags;
static int hf_samr_samr_EnumDomainUsers_max_size;
static int hf_samr_samr_EnumDomainUsers_num_entries;
static int hf_samr_samr_EnumDomainUsers_resume_handle;
static int hf_samr_samr_EnumDomainUsers_sam;
static int hf_samr_samr_EnumDomains_buf_size;
static int hf_samr_samr_EnumDomains_num_entries;
static int hf_samr_samr_EnumDomains_resume_handle;
static int hf_samr_samr_EnumDomains_sam;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCOUNT_NAME;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCT_EXPIRY;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCT_FLAGS;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_ALLOW_PWD_CHANGE;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_BAD_PWD_COUNT;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_CODE_PAGE;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_COMMENT;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_COUNTRY_CODE;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_DESCRIPTION;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_EXPIRED_FLAG;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_FORCE_PWD_CHANGE;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_FULL_NAME;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_HOME_DIRECTORY;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_HOME_DRIVE;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_LOGOFF;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_LOGON;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_PWD_CHANGE;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_LM_PASSWORD_PRESENT;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_LOGON_HOURS;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_LOGON_SCRIPT;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_NT_PASSWORD_PRESENT;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_NUM_LOGONS;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_OWF_PWD;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_PARAMETERS;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_PRIMARY_GID;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_PRIVATE_DATA;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_PROFILE_PATH;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_RID;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_SEC_DESC;
static int hf_samr_samr_FieldsPresent_SAMR_FIELD_WORKSTATIONS;
static int hf_samr_samr_GetAliasMembership_rids;
static int hf_samr_samr_GetAliasMembership_sids;
static int hf_samr_samr_GetBootKeyInformation_unknown;
static int hf_samr_samr_GetDisplayEnumerationIndex2_idx;
static int hf_samr_samr_GetDisplayEnumerationIndex2_level;
static int hf_samr_samr_GetDisplayEnumerationIndex2_name;
static int hf_samr_samr_GetDisplayEnumerationIndex_idx;
static int hf_samr_samr_GetDisplayEnumerationIndex_level;
static int hf_samr_samr_GetDisplayEnumerationIndex_name;
static int hf_samr_samr_GetDomPwInfo_domain_name;
static int hf_samr_samr_GetDomPwInfo_info;
static int hf_samr_samr_GetGroupsForUser_rids;
static int hf_samr_samr_GetMembersInAlias_sids;
static int hf_samr_samr_GetUserPwInfo_info;
static int hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_ADD_MEMBER;
static int hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_GET_MEMBERS;
static int hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_LOOKUP_INFO;
static int hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_REMOVE_MEMBER;
static int hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_SET_INFO;
static int hf_samr_samr_GroupAttrs_SE_GROUP_ENABLED;
static int hf_samr_samr_GroupAttrs_SE_GROUP_ENABLED_BY_DEFAULT;
static int hf_samr_samr_GroupAttrs_SE_GROUP_LOGON_ID;
static int hf_samr_samr_GroupAttrs_SE_GROUP_MANDATORY;
static int hf_samr_samr_GroupAttrs_SE_GROUP_OWNER;
static int hf_samr_samr_GroupAttrs_SE_GROUP_RESOURCE;
static int hf_samr_samr_GroupAttrs_SE_GROUP_USE_FOR_DENY_ONLY;
static int hf_samr_samr_GroupInfoAll_attributes;
static int hf_samr_samr_GroupInfoAll_description;
static int hf_samr_samr_GroupInfoAll_name;
static int hf_samr_samr_GroupInfoAll_num_members;
static int hf_samr_samr_GroupInfoAttributes_attributes;
static int hf_samr_samr_GroupInfoDescription_description;
static int hf_samr_samr_GroupInfo_all;
static int hf_samr_samr_GroupInfo_all2;
static int hf_samr_samr_GroupInfo_attributes;
static int hf_samr_samr_GroupInfo_description;
static int hf_samr_samr_GroupInfo_name;
static int hf_samr_samr_Ids_count;
static int hf_samr_samr_LogonHours_bits;
static int hf_samr_samr_LogonHours_units_per_week;
static int hf_samr_samr_LookupDomain_domain_name;
static int hf_samr_samr_LookupDomain_sid;
static int hf_samr_samr_LookupNames_names;
static int hf_samr_samr_LookupNames_num_names;
static int hf_samr_samr_LookupNames_rids;
static int hf_samr_samr_LookupNames_types;
static int hf_samr_samr_LookupRids_names;
static int hf_samr_samr_LookupRids_num_rids;
static int hf_samr_samr_LookupRids_types;
static int hf_samr_samr_OemChangePasswordUser2_account;
static int hf_samr_samr_OemChangePasswordUser2_hash;
static int hf_samr_samr_OemChangePasswordUser2_password;
static int hf_samr_samr_OemChangePasswordUser2_server;
static int hf_samr_samr_OpenDomain_sid;
static int hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_COMPLEX;
static int hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_LOCKOUT_ADMINS;
static int hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_NO_ANON_CHANGE;
static int hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_NO_CLEAR_CHANGE;
static int hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_STORE_CLEARTEXT;
static int hf_samr_samr_PasswordProperties_DOMAIN_REFUSE_PASSWORD_CHANGE;
static int hf_samr_samr_Password_hash;
static int hf_samr_samr_PwInfo_min_password_length;
static int hf_samr_samr_PwInfo_password_properties;
static int hf_samr_samr_QueryAliasInfo_info;
static int hf_samr_samr_QueryAliasInfo_level;
static int hf_samr_samr_QueryDisplayInfo2_buf_size;
static int hf_samr_samr_QueryDisplayInfo2_info;
static int hf_samr_samr_QueryDisplayInfo2_level;
static int hf_samr_samr_QueryDisplayInfo2_max_entries;
static int hf_samr_samr_QueryDisplayInfo2_returned_size;
static int hf_samr_samr_QueryDisplayInfo2_start_idx;
static int hf_samr_samr_QueryDisplayInfo2_total_size;
static int hf_samr_samr_QueryDisplayInfo3_buf_size;
static int hf_samr_samr_QueryDisplayInfo3_info;
static int hf_samr_samr_QueryDisplayInfo3_level;
static int hf_samr_samr_QueryDisplayInfo3_max_entries;
static int hf_samr_samr_QueryDisplayInfo3_returned_size;
static int hf_samr_samr_QueryDisplayInfo3_start_idx;
static int hf_samr_samr_QueryDisplayInfo3_total_size;
static int hf_samr_samr_QueryDisplayInfo_buf_size;
static int hf_samr_samr_QueryDisplayInfo_info;
static int hf_samr_samr_QueryDisplayInfo_level;
static int hf_samr_samr_QueryDisplayInfo_max_entries;
static int hf_samr_samr_QueryDisplayInfo_returned_size;
static int hf_samr_samr_QueryDisplayInfo_start_idx;
static int hf_samr_samr_QueryDisplayInfo_total_size;
static int hf_samr_samr_QueryDomainInfo2_info;
static int hf_samr_samr_QueryDomainInfo2_level;
static int hf_samr_samr_QueryDomainInfo_info;
static int hf_samr_samr_QueryDomainInfo_level;
static int hf_samr_samr_QueryGroupInfo_info;
static int hf_samr_samr_QueryGroupInfo_level;
static int hf_samr_samr_QueryGroupMember_rids;
static int hf_samr_samr_QuerySecurity_sdbuf;
static int hf_samr_samr_QuerySecurity_sec_info;
static int hf_samr_samr_QueryUserInfo2_info;
static int hf_samr_samr_QueryUserInfo2_level;
static int hf_samr_samr_QueryUserInfo_info;
static int hf_samr_samr_QueryUserInfo_level;
static int hf_samr_samr_RemoveMemberFromForeignDomain_sid;
static int hf_samr_samr_RemoveMultipleMembersFromAlias_sids;
static int hf_samr_samr_RidToSid_sid;
static int hf_samr_samr_RidTypeArray_count;
static int hf_samr_samr_RidTypeArray_types;
static int hf_samr_samr_RidWithAttributeArray_count;
static int hf_samr_samr_RidWithAttributeArray_rids;
static int hf_samr_samr_RidWithAttribute_attributes;
static int hf_samr_samr_SamArray_count;
static int hf_samr_samr_SamArray_entries;
static int hf_samr_samr_SamEntry_idx;
static int hf_samr_samr_SamEntry_name;
static int hf_samr_samr_SetAliasInfo_info;
static int hf_samr_samr_SetAliasInfo_level;
static int hf_samr_samr_SetBootKeyInformation_unknown1;
static int hf_samr_samr_SetBootKeyInformation_unknown2;
static int hf_samr_samr_SetBootKeyInformation_unknown3;
static int hf_samr_samr_SetDomainInfo_info;
static int hf_samr_samr_SetDomainInfo_level;
static int hf_samr_samr_SetDsrmPassword_hash;
static int hf_samr_samr_SetDsrmPassword_name;
static int hf_samr_samr_SetDsrmPassword_unknown;
static int hf_samr_samr_SetGroupInfo_info;
static int hf_samr_samr_SetGroupInfo_level;
static int hf_samr_samr_SetMemberAttributesOfGroup_unknown1;
static int hf_samr_samr_SetMemberAttributesOfGroup_unknown2;
static int hf_samr_samr_SetSecurity_sdbuf;
static int hf_samr_samr_SetSecurity_sec_info;
static int hf_samr_samr_SetUserInfo2_info;
static int hf_samr_samr_SetUserInfo2_level;
static int hf_samr_samr_SetUserInfo_info;
static int hf_samr_samr_SetUserInfo_level;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_PASSWORD;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_ATTRIBUTES;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUPS;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOCALE;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOGONINFO;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_ATTRIBUTES;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_LOC_COM;
static int hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD;
static int hf_samr_samr_UserInfo10_home_directory;
static int hf_samr_samr_UserInfo10_home_drive;
static int hf_samr_samr_UserInfo11_logon_script;
static int hf_samr_samr_UserInfo12_profile_path;
static int hf_samr_samr_UserInfo13_description;
static int hf_samr_samr_UserInfo14_workstations;
static int hf_samr_samr_UserInfo16_acct_flags;
static int hf_samr_samr_UserInfo17_acct_expiry;
static int hf_samr_samr_UserInfo18_lm_pwd;
static int hf_samr_samr_UserInfo18_lm_pwd_active;
static int hf_samr_samr_UserInfo18_nt_pwd;
static int hf_samr_samr_UserInfo18_nt_pwd_active;
static int hf_samr_samr_UserInfo18_password_expired;
static int hf_samr_samr_UserInfo1_account_name;
static int hf_samr_samr_UserInfo1_comment;
static int hf_samr_samr_UserInfo1_description;
static int hf_samr_samr_UserInfo1_full_name;
static int hf_samr_samr_UserInfo1_primary_gid;
static int hf_samr_samr_UserInfo20_parameters;
static int hf_samr_samr_UserInfo21_account_name;
static int hf_samr_samr_UserInfo21_acct_expiry;
static int hf_samr_samr_UserInfo21_acct_flags;
static int hf_samr_samr_UserInfo21_allow_password_change;
static int hf_samr_samr_UserInfo21_bad_password_count;
static int hf_samr_samr_UserInfo21_buf_count;
static int hf_samr_samr_UserInfo21_buffer;
static int hf_samr_samr_UserInfo21_code_page;
static int hf_samr_samr_UserInfo21_comment;
static int hf_samr_samr_UserInfo21_country_code;
static int hf_samr_samr_UserInfo21_description;
static int hf_samr_samr_UserInfo21_fields_present;
static int hf_samr_samr_UserInfo21_force_password_change;
static int hf_samr_samr_UserInfo21_full_name;
static int hf_samr_samr_UserInfo21_home_directory;
static int hf_samr_samr_UserInfo21_home_drive;
static int hf_samr_samr_UserInfo21_last_logoff;
static int hf_samr_samr_UserInfo21_last_logon;
static int hf_samr_samr_UserInfo21_last_password_change;
static int hf_samr_samr_UserInfo21_lm_owf_password;
static int hf_samr_samr_UserInfo21_lm_password_set;
static int hf_samr_samr_UserInfo21_logon_count;
static int hf_samr_samr_UserInfo21_logon_hours;
static int hf_samr_samr_UserInfo21_logon_script;
static int hf_samr_samr_UserInfo21_nt_owf_password;
static int hf_samr_samr_UserInfo21_nt_password_set;
static int hf_samr_samr_UserInfo21_parameters;
static int hf_samr_samr_UserInfo21_password_expired;
static int hf_samr_samr_UserInfo21_primary_gid;
static int hf_samr_samr_UserInfo21_private_data;
static int hf_samr_samr_UserInfo21_private_data_sensitive;
static int hf_samr_samr_UserInfo21_profile_path;
static int hf_samr_samr_UserInfo21_workstations;
static int hf_samr_samr_UserInfo23_info;
static int hf_samr_samr_UserInfo23_password;
static int hf_samr_samr_UserInfo24_password;
static int hf_samr_samr_UserInfo24_password_expired;
static int hf_samr_samr_UserInfo25_info;
static int hf_samr_samr_UserInfo25_password;
static int hf_samr_samr_UserInfo26_password;
static int hf_samr_samr_UserInfo26_password_expired;
static int hf_samr_samr_UserInfo2_code_page;
static int hf_samr_samr_UserInfo2_comment;
static int hf_samr_samr_UserInfo2_country_code;
static int hf_samr_samr_UserInfo2_reserved;
static int hf_samr_samr_UserInfo31_password;
static int hf_samr_samr_UserInfo31_password_expired;
static int hf_samr_samr_UserInfo32_info;
static int hf_samr_samr_UserInfo32_password;
static int hf_samr_samr_UserInfo3_account_name;
static int hf_samr_samr_UserInfo3_acct_flags;
static int hf_samr_samr_UserInfo3_allow_password_change;
static int hf_samr_samr_UserInfo3_bad_password_count;
static int hf_samr_samr_UserInfo3_force_password_change;
static int hf_samr_samr_UserInfo3_full_name;
static int hf_samr_samr_UserInfo3_home_directory;
static int hf_samr_samr_UserInfo3_home_drive;
static int hf_samr_samr_UserInfo3_last_logoff;
static int hf_samr_samr_UserInfo3_last_logon;
static int hf_samr_samr_UserInfo3_last_password_change;
static int hf_samr_samr_UserInfo3_logon_count;
static int hf_samr_samr_UserInfo3_logon_hours;
static int hf_samr_samr_UserInfo3_logon_script;
static int hf_samr_samr_UserInfo3_primary_gid;
static int hf_samr_samr_UserInfo3_profile_path;
static int hf_samr_samr_UserInfo3_workstations;
static int hf_samr_samr_UserInfo4_logon_hours;
static int hf_samr_samr_UserInfo5_account_name;
static int hf_samr_samr_UserInfo5_acct_expiry;
static int hf_samr_samr_UserInfo5_acct_flags;
static int hf_samr_samr_UserInfo5_bad_password_count;
static int hf_samr_samr_UserInfo5_description;
static int hf_samr_samr_UserInfo5_full_name;
static int hf_samr_samr_UserInfo5_home_directory;
static int hf_samr_samr_UserInfo5_home_drive;
static int hf_samr_samr_UserInfo5_last_logoff;
static int hf_samr_samr_UserInfo5_last_logon;
static int hf_samr_samr_UserInfo5_last_password_change;
static int hf_samr_samr_UserInfo5_logon_count;
static int hf_samr_samr_UserInfo5_logon_hours;
static int hf_samr_samr_UserInfo5_logon_script;
static int hf_samr_samr_UserInfo5_primary_gid;
static int hf_samr_samr_UserInfo5_profile_path;
static int hf_samr_samr_UserInfo5_workstations;
static int hf_samr_samr_UserInfo6_account_name;
static int hf_samr_samr_UserInfo6_full_name;
static int hf_samr_samr_UserInfo7_account_name;
static int hf_samr_samr_UserInfo8_full_name;
static int hf_samr_samr_UserInfo9_primary_gid;
static int hf_samr_samr_UserInfo_info1;
static int hf_samr_samr_UserInfo_info10;
static int hf_samr_samr_UserInfo_info11;
static int hf_samr_samr_UserInfo_info12;
static int hf_samr_samr_UserInfo_info13;
static int hf_samr_samr_UserInfo_info14;
static int hf_samr_samr_UserInfo_info16;
static int hf_samr_samr_UserInfo_info17;
static int hf_samr_samr_UserInfo_info18;
static int hf_samr_samr_UserInfo_info2;
static int hf_samr_samr_UserInfo_info20;
static int hf_samr_samr_UserInfo_info21;
static int hf_samr_samr_UserInfo_info23;
static int hf_samr_samr_UserInfo_info24;
static int hf_samr_samr_UserInfo_info25;
static int hf_samr_samr_UserInfo_info26;
static int hf_samr_samr_UserInfo_info3;
static int hf_samr_samr_UserInfo_info31;
static int hf_samr_samr_UserInfo_info32;
static int hf_samr_samr_UserInfo_info4;
static int hf_samr_samr_UserInfo_info5;
static int hf_samr_samr_UserInfo_info6;
static int hf_samr_samr_UserInfo_info7;
static int hf_samr_samr_UserInfo_info8;
static int hf_samr_samr_UserInfo_info9;
static int hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT;
static int hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME;
static int hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_LOCKOUT_TIME;
static int hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY;
static int hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH;
static int hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET;
static int hf_samr_samr_ValidatePasswordInfo_bad_password_time;
static int hf_samr_samr_ValidatePasswordInfo_bad_pwd_count;
static int hf_samr_samr_ValidatePasswordInfo_fields_present;
static int hf_samr_samr_ValidatePasswordInfo_last_password_change;
static int hf_samr_samr_ValidatePasswordInfo_lockout_time;
static int hf_samr_samr_ValidatePasswordInfo_pwd_history;
static int hf_samr_samr_ValidatePasswordInfo_pwd_history_len;
static int hf_samr_samr_ValidatePasswordRepCtr_info;
static int hf_samr_samr_ValidatePasswordRepCtr_status;
static int hf_samr_samr_ValidatePasswordRep_ctr1;
static int hf_samr_samr_ValidatePasswordRep_ctr2;
static int hf_samr_samr_ValidatePasswordRep_ctr3;
static int hf_samr_samr_ValidatePasswordReq1_info;
static int hf_samr_samr_ValidatePasswordReq1_password_matched;
static int hf_samr_samr_ValidatePasswordReq2_account;
static int hf_samr_samr_ValidatePasswordReq2_hash;
static int hf_samr_samr_ValidatePasswordReq2_info;
static int hf_samr_samr_ValidatePasswordReq2_password;
static int hf_samr_samr_ValidatePasswordReq2_password_matched;
static int hf_samr_samr_ValidatePasswordReq3_account;
static int hf_samr_samr_ValidatePasswordReq3_clear_lockout;
static int hf_samr_samr_ValidatePasswordReq3_hash;
static int hf_samr_samr_ValidatePasswordReq3_info;
static int hf_samr_samr_ValidatePasswordReq3_password;
static int hf_samr_samr_ValidatePasswordReq3_pwd_must_change_at_next_logon;
static int hf_samr_samr_ValidatePasswordReq_req1;
static int hf_samr_samr_ValidatePasswordReq_req2;
static int hf_samr_samr_ValidatePasswordReq_req3;
static int hf_samr_samr_ValidatePassword_level;
static int hf_samr_samr_ValidatePassword_rep;
static int hf_samr_samr_ValidatePassword_req;
static int hf_samr_samr_ValidationBlob_data;
static int hf_samr_samr_ValidationBlob_length;
static int hf_samr_sec_desc_buf_len;
static int hf_samr_status;
static int hf_samr_userPwdChangeFailureInformation_extendedFailureReason;
static int hf_samr_userPwdChangeFailureInformation_filterModuleName;
static int hf_samr_user_access_mask;
static int hf_samr_user_handle;

static int proto_dcerpc_samr;
/* Version information */


static e_guid_t uuid_dcerpc_samr = {
	0x12345778, 0x1234, 0xabcd,
	{ 0xef, 0x00, 0x01, 0x23, 0x45, 0x67, 0x89, 0xac }
};
static uint16_t ver_dcerpc_samr = 1;

static unsigned samr_dissect_element_lsa_Strings_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_lsa_Strings_names(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_lsa_Strings_names_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_lsa_Strings_names__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
const value_string samr_lsa_SidType_vals[] = {
	{ SID_NAME_USE_NONE, "SID_NAME_USE_NONE" },
	{ SID_NAME_USER, "SID_NAME_USER" },
	{ SID_NAME_DOM_GRP, "SID_NAME_DOM_GRP" },
	{ SID_NAME_DOMAIN, "SID_NAME_DOMAIN" },
	{ SID_NAME_ALIAS, "SID_NAME_ALIAS" },
	{ SID_NAME_WKN_GRP, "SID_NAME_WKN_GRP" },
	{ SID_NAME_DELETED, "SID_NAME_DELETED" },
	{ SID_NAME_INVALID, "SID_NAME_INVALID" },
	{ SID_NAME_UNKNOWN, "SID_NAME_UNKNOWN" },
	{ SID_NAME_COMPUTER, "SID_NAME_COMPUTER" },
{ 0, NULL }
};
static const true_false_string samr_AcctFlags_ACB_DISABLED_tfs = {
   "ACB_DISABLED is SET",
   "ACB_DISABLED is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_HOMDIRREQ_tfs = {
   "ACB_HOMDIRREQ is SET",
   "ACB_HOMDIRREQ is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_PWNOTREQ_tfs = {
   "ACB_PWNOTREQ is SET",
   "ACB_PWNOTREQ is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_TEMPDUP_tfs = {
   "ACB_TEMPDUP is SET",
   "ACB_TEMPDUP is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_NORMAL_tfs = {
   "ACB_NORMAL is SET",
   "ACB_NORMAL is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_MNS_tfs = {
   "ACB_MNS is SET",
   "ACB_MNS is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_DOMTRUST_tfs = {
   "ACB_DOMTRUST is SET",
   "ACB_DOMTRUST is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_WSTRUST_tfs = {
   "ACB_WSTRUST is SET",
   "ACB_WSTRUST is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_SVRTRUST_tfs = {
   "ACB_SVRTRUST is SET",
   "ACB_SVRTRUST is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_PWNOEXP_tfs = {
   "ACB_PWNOEXP is SET",
   "ACB_PWNOEXP is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_AUTOLOCK_tfs = {
   "ACB_AUTOLOCK is SET",
   "ACB_AUTOLOCK is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_ENC_TXT_PWD_ALLOWED_tfs = {
   "ACB_ENC_TXT_PWD_ALLOWED is SET",
   "ACB_ENC_TXT_PWD_ALLOWED is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_SMARTCARD_REQUIRED_tfs = {
   "ACB_SMARTCARD_REQUIRED is SET",
   "ACB_SMARTCARD_REQUIRED is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_TRUSTED_FOR_DELEGATION_tfs = {
   "ACB_TRUSTED_FOR_DELEGATION is SET",
   "ACB_TRUSTED_FOR_DELEGATION is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_NOT_DELEGATED_tfs = {
   "ACB_NOT_DELEGATED is SET",
   "ACB_NOT_DELEGATED is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_USE_DES_KEY_ONLY_tfs = {
   "ACB_USE_DES_KEY_ONLY is SET",
   "ACB_USE_DES_KEY_ONLY is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_DONT_REQUIRE_PREAUTH_tfs = {
   "ACB_DONT_REQUIRE_PREAUTH is SET",
   "ACB_DONT_REQUIRE_PREAUTH is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_PW_EXPIRED_tfs = {
   "ACB_PW_EXPIRED is SET",
   "ACB_PW_EXPIRED is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION_tfs = {
   "ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION is SET",
   "ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_NO_AUTH_DATA_REQD_tfs = {
   "ACB_NO_AUTH_DATA_REQD is SET",
   "ACB_NO_AUTH_DATA_REQD is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_PARTIAL_SECRETS_ACCOUNT_tfs = {
   "ACB_PARTIAL_SECRETS_ACCOUNT is SET",
   "ACB_PARTIAL_SECRETS_ACCOUNT is NOT SET",
};
static const true_false_string samr_AcctFlags_ACB_USE_AES_KEYS_tfs = {
   "ACB_USE_AES_KEYS is SET",
   "ACB_USE_AES_KEYS is NOT SET",
};
static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER_tfs = {
   "SAMR_ACCESS_CONNECT_TO_SERVER is SET",
   "SAMR_ACCESS_CONNECT_TO_SERVER is NOT SET",
};
static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER_tfs = {
   "SAMR_ACCESS_SHUTDOWN_SERVER is SET",
   "SAMR_ACCESS_SHUTDOWN_SERVER is NOT SET",
};
static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER_tfs = {
   "SAMR_ACCESS_INITIALIZE_SERVER is SET",
   "SAMR_ACCESS_INITIALIZE_SERVER is NOT SET",
};
static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN_tfs = {
   "SAMR_ACCESS_CREATE_DOMAIN is SET",
   "SAMR_ACCESS_CREATE_DOMAIN is NOT SET",
};
static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS_tfs = {
   "SAMR_ACCESS_ENUM_DOMAINS is SET",
   "SAMR_ACCESS_ENUM_DOMAINS is NOT SET",
};
static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN_tfs = {
   "SAMR_ACCESS_LOOKUP_DOMAIN is SET",
   "SAMR_ACCESS_LOOKUP_DOMAIN is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC_tfs = {
   "SAMR_USER_ACCESS_GET_NAME_ETC is SET",
   "SAMR_USER_ACCESS_GET_NAME_ETC is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOCALE_tfs = {
   "SAMR_USER_ACCESS_GET_LOCALE is SET",
   "SAMR_USER_ACCESS_GET_LOCALE is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_SET_LOC_COM_tfs = {
   "SAMR_USER_ACCESS_SET_LOC_COM is SET",
   "SAMR_USER_ACCESS_SET_LOC_COM is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOGONINFO_tfs = {
   "SAMR_USER_ACCESS_GET_LOGONINFO is SET",
   "SAMR_USER_ACCESS_GET_LOGONINFO is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_GET_ATTRIBUTES_tfs = {
   "SAMR_USER_ACCESS_GET_ATTRIBUTES is SET",
   "SAMR_USER_ACCESS_GET_ATTRIBUTES is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_SET_ATTRIBUTES_tfs = {
   "SAMR_USER_ACCESS_SET_ATTRIBUTES is SET",
   "SAMR_USER_ACCESS_SET_ATTRIBUTES is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_PASSWORD_tfs = {
   "SAMR_USER_ACCESS_CHANGE_PASSWORD is SET",
   "SAMR_USER_ACCESS_CHANGE_PASSWORD is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD_tfs = {
   "SAMR_USER_ACCESS_SET_PASSWORD is SET",
   "SAMR_USER_ACCESS_SET_PASSWORD is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUPS_tfs = {
   "SAMR_USER_ACCESS_GET_GROUPS is SET",
   "SAMR_USER_ACCESS_GET_GROUPS is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP_tfs = {
   "SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP is SET",
   "SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP is NOT SET",
};
static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP_tfs = {
   "SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP is SET",
   "SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1_tfs = {
   "SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 is SET",
   "SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_1_tfs = {
   "SAMR_DOMAIN_ACCESS_SET_INFO_1 is SET",
   "SAMR_DOMAIN_ACCESS_SET_INFO_1 is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2_tfs = {
   "SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 is SET",
   "SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_2_tfs = {
   "SAMR_DOMAIN_ACCESS_SET_INFO_2 is SET",
   "SAMR_DOMAIN_ACCESS_SET_INFO_2 is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_USER_tfs = {
   "SAMR_DOMAIN_ACCESS_CREATE_USER is SET",
   "SAMR_DOMAIN_ACCESS_CREATE_USER is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_GROUP_tfs = {
   "SAMR_DOMAIN_ACCESS_CREATE_GROUP is SET",
   "SAMR_DOMAIN_ACCESS_CREATE_GROUP is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_ALIAS_tfs = {
   "SAMR_DOMAIN_ACCESS_CREATE_ALIAS is SET",
   "SAMR_DOMAIN_ACCESS_CREATE_ALIAS is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS_tfs = {
   "SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS is SET",
   "SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS_tfs = {
   "SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS is SET",
   "SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT_tfs = {
   "SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT is SET",
   "SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT is NOT SET",
};
static const true_false_string samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_3_tfs = {
   "SAMR_DOMAIN_ACCESS_SET_INFO_3 is SET",
   "SAMR_DOMAIN_ACCESS_SET_INFO_3 is NOT SET",
};
static const true_false_string samr_GroupAccessMask_SAMR_GROUP_ACCESS_LOOKUP_INFO_tfs = {
   "SAMR_GROUP_ACCESS_LOOKUP_INFO is SET",
   "SAMR_GROUP_ACCESS_LOOKUP_INFO is NOT SET",
};
static const true_false_string samr_GroupAccessMask_SAMR_GROUP_ACCESS_SET_INFO_tfs = {
   "SAMR_GROUP_ACCESS_SET_INFO is SET",
   "SAMR_GROUP_ACCESS_SET_INFO is NOT SET",
};
static const true_false_string samr_GroupAccessMask_SAMR_GROUP_ACCESS_ADD_MEMBER_tfs = {
   "SAMR_GROUP_ACCESS_ADD_MEMBER is SET",
   "SAMR_GROUP_ACCESS_ADD_MEMBER is NOT SET",
};
static const true_false_string samr_GroupAccessMask_SAMR_GROUP_ACCESS_REMOVE_MEMBER_tfs = {
   "SAMR_GROUP_ACCESS_REMOVE_MEMBER is SET",
   "SAMR_GROUP_ACCESS_REMOVE_MEMBER is NOT SET",
};
static const true_false_string samr_GroupAccessMask_SAMR_GROUP_ACCESS_GET_MEMBERS_tfs = {
   "SAMR_GROUP_ACCESS_GET_MEMBERS is SET",
   "SAMR_GROUP_ACCESS_GET_MEMBERS is NOT SET",
};
static const true_false_string samr_AliasAccessMask_SAMR_ALIAS_ACCESS_ADD_MEMBER_tfs = {
   "SAMR_ALIAS_ACCESS_ADD_MEMBER is SET",
   "SAMR_ALIAS_ACCESS_ADD_MEMBER is NOT SET",
};
static const true_false_string samr_AliasAccessMask_SAMR_ALIAS_ACCESS_REMOVE_MEMBER_tfs = {
   "SAMR_ALIAS_ACCESS_REMOVE_MEMBER is SET",
   "SAMR_ALIAS_ACCESS_REMOVE_MEMBER is NOT SET",
};
static const true_false_string samr_AliasAccessMask_SAMR_ALIAS_ACCESS_GET_MEMBERS_tfs = {
   "SAMR_ALIAS_ACCESS_GET_MEMBERS is SET",
   "SAMR_ALIAS_ACCESS_GET_MEMBERS is NOT SET",
};
static const true_false_string samr_AliasAccessMask_SAMR_ALIAS_ACCESS_LOOKUP_INFO_tfs = {
   "SAMR_ALIAS_ACCESS_LOOKUP_INFO is SET",
   "SAMR_ALIAS_ACCESS_LOOKUP_INFO is NOT SET",
};
static const true_false_string samr_AliasAccessMask_SAMR_ALIAS_ACCESS_SET_INFO_tfs = {
   "SAMR_ALIAS_ACCESS_SET_INFO is SET",
   "SAMR_ALIAS_ACCESS_SET_INFO is NOT SET",
};
static unsigned samr_dissect_element_SamEntry_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SamEntry_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SamArray_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SamArray_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SamArray_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SamArray_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
const value_string samr_samr_DomainInfoClass_vals[] = {
	{ DomainPasswordInformation, "DomainPasswordInformation" },
	{ DomainGeneralInformation, "DomainGeneralInformation" },
	{ DomainLogoffInformation, "DomainLogoffInformation" },
	{ DomainOemInformation, "DomainOemInformation" },
	{ DomainNameInformation, "DomainNameInformation" },
	{ DomainReplicationInformation, "DomainReplicationInformation" },
	{ DomainServerRoleInformation, "DomainServerRoleInformation" },
	{ DomainModifiedInformation, "DomainModifiedInformation" },
	{ DomainStateInformation, "DomainStateInformation" },
	{ DomainUasInformation, "DomainUasInformation" },
	{ DomainGeneralInformation2, "DomainGeneralInformation2" },
	{ DomainLockoutInformation, "DomainLockoutInformation" },
	{ DomainModifiedInformation2, "DomainModifiedInformation2" },
{ 0, NULL }
};
const value_string samr_samr_Role_vals[] = {
	{ SAMR_ROLE_STANDALONE, "SAMR_ROLE_STANDALONE" },
	{ SAMR_ROLE_DOMAIN_MEMBER, "SAMR_ROLE_DOMAIN_MEMBER" },
	{ SAMR_ROLE_DOMAIN_BDC, "SAMR_ROLE_DOMAIN_BDC" },
	{ SAMR_ROLE_DOMAIN_PDC, "SAMR_ROLE_DOMAIN_PDC" },
{ 0, NULL }
};
static const true_false_string samr_PasswordProperties_DOMAIN_PASSWORD_COMPLEX_tfs = {
   "DOMAIN_PASSWORD_COMPLEX is SET",
   "DOMAIN_PASSWORD_COMPLEX is NOT SET",
};
static const true_false_string samr_PasswordProperties_DOMAIN_PASSWORD_NO_ANON_CHANGE_tfs = {
   "DOMAIN_PASSWORD_NO_ANON_CHANGE is SET",
   "DOMAIN_PASSWORD_NO_ANON_CHANGE is NOT SET",
};
static const true_false_string samr_PasswordProperties_DOMAIN_PASSWORD_NO_CLEAR_CHANGE_tfs = {
   "DOMAIN_PASSWORD_NO_CLEAR_CHANGE is SET",
   "DOMAIN_PASSWORD_NO_CLEAR_CHANGE is NOT SET",
};
static const true_false_string samr_PasswordProperties_DOMAIN_PASSWORD_LOCKOUT_ADMINS_tfs = {
   "DOMAIN_PASSWORD_LOCKOUT_ADMINS is SET",
   "DOMAIN_PASSWORD_LOCKOUT_ADMINS is NOT SET",
};
static const true_false_string samr_PasswordProperties_DOMAIN_PASSWORD_STORE_CLEARTEXT_tfs = {
   "DOMAIN_PASSWORD_STORE_CLEARTEXT is SET",
   "DOMAIN_PASSWORD_STORE_CLEARTEXT is NOT SET",
};
static const true_false_string samr_PasswordProperties_DOMAIN_REFUSE_PASSWORD_CHANGE_tfs = {
   "DOMAIN_REFUSE_PASSWORD_CHANGE is SET",
   "DOMAIN_REFUSE_PASSWORD_CHANGE is NOT SET",
};
const value_string samr_samr_DomainServerState_vals[] = {
	{ DOMAIN_SERVER_ENABLED, "DOMAIN_SERVER_ENABLED" },
	{ DOMAIN_SERVER_DISABLED, "DOMAIN_SERVER_DISABLED" },
{ 0, NULL }
};
static unsigned samr_dissect_element_DomInfo1_min_password_length(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo1_password_history_length(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo1_password_properties(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo1_max_password_age(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo1_min_password_age(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_force_logoff_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_oem_information(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_domain_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_primary(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_sequence_num(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_domain_server_state(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_role(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_unknown3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_num_users(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_num_groups(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation_num_aliases(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo3_force_logoff_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomOEMInformation_oem_information(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo5_domain_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo6_primary(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo7_role(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo8_sequence_num(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo8_domain_create_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo9_domain_server_state(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation2_general(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation2_lockout_duration(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation2_lockout_window(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomGeneralInformation2_lockout_threshold(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo12_lockout_duration(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo12_lockout_window(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo12_lockout_threshold(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo13_sequence_num(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo13_domain_create_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomInfo13_modified_count_at_last_promotion(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_general(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_oem(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info5(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info6(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info7(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info8(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info9(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_general2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info12(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DomainInfo_info13(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Ids_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Ids_ids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Ids_ids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Ids_ids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static const true_false_string samr_GroupAttrs_SE_GROUP_MANDATORY_tfs = {
   "SE_GROUP_MANDATORY is SET",
   "SE_GROUP_MANDATORY is NOT SET",
};
static const true_false_string samr_GroupAttrs_SE_GROUP_ENABLED_BY_DEFAULT_tfs = {
   "SE_GROUP_ENABLED_BY_DEFAULT is SET",
   "SE_GROUP_ENABLED_BY_DEFAULT is NOT SET",
};
static const true_false_string samr_GroupAttrs_SE_GROUP_ENABLED_tfs = {
   "SE_GROUP_ENABLED is SET",
   "SE_GROUP_ENABLED is NOT SET",
};
static const true_false_string samr_GroupAttrs_SE_GROUP_OWNER_tfs = {
   "SE_GROUP_OWNER is SET",
   "SE_GROUP_OWNER is NOT SET",
};
static const true_false_string samr_GroupAttrs_SE_GROUP_USE_FOR_DENY_ONLY_tfs = {
   "SE_GROUP_USE_FOR_DENY_ONLY is SET",
   "SE_GROUP_USE_FOR_DENY_ONLY is NOT SET",
};
static const true_false_string samr_GroupAttrs_SE_GROUP_RESOURCE_tfs = {
   "SE_GROUP_RESOURCE is SET",
   "SE_GROUP_RESOURCE is NOT SET",
};
static const true_false_string samr_GroupAttrs_SE_GROUP_LOGON_ID_tfs = {
   "SE_GROUP_LOGON_ID is SET",
   "SE_GROUP_LOGON_ID is NOT SET",
};
static unsigned samr_dissect_element_GroupInfoAll_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfoAll_attributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfoAll_num_members(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfoAll_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfoAttributes_attributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfoDescription_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
const value_string samr_samr_GroupInfoEnum_vals[] = {
	{ GROUPINFOALL, "GROUPINFOALL" },
	{ GROUPINFONAME, "GROUPINFONAME" },
	{ GROUPINFOATTRIBUTES, "GROUPINFOATTRIBUTES" },
	{ GROUPINFODESCRIPTION, "GROUPINFODESCRIPTION" },
	{ GROUPINFOALL2, "GROUPINFOALL2" },
{ 0, NULL }
};
static unsigned samr_dissect_element_GroupInfo_all(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfo_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfo_attributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfo_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GroupInfo_all2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidTypeArray_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidTypeArray_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidTypeArray_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidTypeArray_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidTypeArray_types(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidTypeArray_types_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidTypeArray_types__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AliasInfoAll_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AliasInfoAll_num_members(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AliasInfoAll_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
const value_string samr_samr_AliasInfoEnum_vals[] = {
	{ ALIASINFOALL, "ALIASINFOALL" },
	{ ALIASINFONAME, "ALIASINFONAME" },
	{ ALIASINFODESCRIPTION, "ALIASINFODESCRIPTION" },
{ 0, NULL }
};
static unsigned samr_dissect_element_AliasInfo_all(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AliasInfo_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AliasInfo_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
const value_string samr_samr_UserInfoLevel_vals[] = {
	{ UserGeneralInformation, "UserGeneralInformation" },
	{ UserPreferencesInformation, "UserPreferencesInformation" },
	{ UserLogonInformation, "UserLogonInformation" },
	{ UserLogonHoursInformation, "UserLogonHoursInformation" },
	{ UserAccountInformation, "UserAccountInformation" },
	{ UserNameInformation, "UserNameInformation" },
	{ UserAccountNameInformation, "UserAccountNameInformation" },
	{ UserFullNameInformation, "UserFullNameInformation" },
	{ UserPrimaryGroupInformation, "UserPrimaryGroupInformation" },
	{ UserHomeInformation, "UserHomeInformation" },
	{ UserScriptInformation, "UserScriptInformation" },
	{ UserProfileInformation, "UserProfileInformation" },
	{ UserAdminCommentInformation, "UserAdminCommentInformation" },
	{ UserWorkStationsInformation, "UserWorkStationsInformation" },
	{ UserControlInformation, "UserControlInformation" },
	{ UserExpiresInformation, "UserExpiresInformation" },
	{ UserInternal1Information, "UserInternal1Information" },
	{ UserParametersInformation, "UserParametersInformation" },
	{ UserAllInformation, "UserAllInformation" },
	{ UserInternal4Information, "UserInternal4Information" },
	{ UserInternal5Information, "UserInternal5Information" },
	{ UserInternal4InformationNew, "UserInternal4InformationNew" },
	{ UserInternal5InformationNew, "UserInternal5InformationNew" },
	{ UserInternal7InformationNew, "UserInternal7InformationNew" },
	{ UserInternal8InformationNew, "UserInternal8InformationNew" },
{ 0, NULL }
};
static unsigned samr_dissect_element_UserInfo1_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo1_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo1_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo1_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo1_comment(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo2_comment(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo2_reserved(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo2_country_code(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo2_code_page(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LogonHours_units_per_week(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LogonHours_bits(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LogonHours_bits_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LogonHours_bits__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_home_directory(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_home_drive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_logon_script(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_profile_path(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_workstations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_last_logon(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_last_logoff(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_last_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_allow_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_force_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_logon_hours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_bad_password_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_logon_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo3_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo4_logon_hours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_home_directory(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_home_drive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_logon_script(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_profile_path(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_workstations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_last_logon(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_last_logoff(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_logon_hours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_bad_password_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_logon_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_last_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_acct_expiry(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo5_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo6_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo6_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo7_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo8_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo9_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo10_home_directory(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo10_home_drive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo11_logon_script(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo12_profile_path(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo13_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo14_workstations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo16_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo17_acct_expiry(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Password_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Password_hash_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo18_nt_pwd(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo18_lm_pwd(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo18_nt_pwd_active(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo18_lm_pwd_active(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo18_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo20_parameters(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static const true_false_string samr_FieldsPresent_SAMR_FIELD_ACCOUNT_NAME_tfs = {
   "SAMR_FIELD_ACCOUNT_NAME is SET",
   "SAMR_FIELD_ACCOUNT_NAME is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_FULL_NAME_tfs = {
   "SAMR_FIELD_FULL_NAME is SET",
   "SAMR_FIELD_FULL_NAME is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_RID_tfs = {
   "SAMR_FIELD_RID is SET",
   "SAMR_FIELD_RID is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_PRIMARY_GID_tfs = {
   "SAMR_FIELD_PRIMARY_GID is SET",
   "SAMR_FIELD_PRIMARY_GID is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_DESCRIPTION_tfs = {
   "SAMR_FIELD_DESCRIPTION is SET",
   "SAMR_FIELD_DESCRIPTION is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_COMMENT_tfs = {
   "SAMR_FIELD_COMMENT is SET",
   "SAMR_FIELD_COMMENT is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_HOME_DIRECTORY_tfs = {
   "SAMR_FIELD_HOME_DIRECTORY is SET",
   "SAMR_FIELD_HOME_DIRECTORY is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_HOME_DRIVE_tfs = {
   "SAMR_FIELD_HOME_DRIVE is SET",
   "SAMR_FIELD_HOME_DRIVE is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_LOGON_SCRIPT_tfs = {
   "SAMR_FIELD_LOGON_SCRIPT is SET",
   "SAMR_FIELD_LOGON_SCRIPT is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_PROFILE_PATH_tfs = {
   "SAMR_FIELD_PROFILE_PATH is SET",
   "SAMR_FIELD_PROFILE_PATH is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_WORKSTATIONS_tfs = {
   "SAMR_FIELD_WORKSTATIONS is SET",
   "SAMR_FIELD_WORKSTATIONS is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_LAST_LOGON_tfs = {
   "SAMR_FIELD_LAST_LOGON is SET",
   "SAMR_FIELD_LAST_LOGON is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_LAST_LOGOFF_tfs = {
   "SAMR_FIELD_LAST_LOGOFF is SET",
   "SAMR_FIELD_LAST_LOGOFF is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_LOGON_HOURS_tfs = {
   "SAMR_FIELD_LOGON_HOURS is SET",
   "SAMR_FIELD_LOGON_HOURS is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_BAD_PWD_COUNT_tfs = {
   "SAMR_FIELD_BAD_PWD_COUNT is SET",
   "SAMR_FIELD_BAD_PWD_COUNT is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_NUM_LOGONS_tfs = {
   "SAMR_FIELD_NUM_LOGONS is SET",
   "SAMR_FIELD_NUM_LOGONS is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_ALLOW_PWD_CHANGE_tfs = {
   "SAMR_FIELD_ALLOW_PWD_CHANGE is SET",
   "SAMR_FIELD_ALLOW_PWD_CHANGE is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_FORCE_PWD_CHANGE_tfs = {
   "SAMR_FIELD_FORCE_PWD_CHANGE is SET",
   "SAMR_FIELD_FORCE_PWD_CHANGE is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_LAST_PWD_CHANGE_tfs = {
   "SAMR_FIELD_LAST_PWD_CHANGE is SET",
   "SAMR_FIELD_LAST_PWD_CHANGE is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_ACCT_EXPIRY_tfs = {
   "SAMR_FIELD_ACCT_EXPIRY is SET",
   "SAMR_FIELD_ACCT_EXPIRY is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_ACCT_FLAGS_tfs = {
   "SAMR_FIELD_ACCT_FLAGS is SET",
   "SAMR_FIELD_ACCT_FLAGS is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_PARAMETERS_tfs = {
   "SAMR_FIELD_PARAMETERS is SET",
   "SAMR_FIELD_PARAMETERS is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_COUNTRY_CODE_tfs = {
   "SAMR_FIELD_COUNTRY_CODE is SET",
   "SAMR_FIELD_COUNTRY_CODE is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_CODE_PAGE_tfs = {
   "SAMR_FIELD_CODE_PAGE is SET",
   "SAMR_FIELD_CODE_PAGE is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_NT_PASSWORD_PRESENT_tfs = {
   "SAMR_FIELD_NT_PASSWORD_PRESENT is SET",
   "SAMR_FIELD_NT_PASSWORD_PRESENT is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_LM_PASSWORD_PRESENT_tfs = {
   "SAMR_FIELD_LM_PASSWORD_PRESENT is SET",
   "SAMR_FIELD_LM_PASSWORD_PRESENT is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_PRIVATE_DATA_tfs = {
   "SAMR_FIELD_PRIVATE_DATA is SET",
   "SAMR_FIELD_PRIVATE_DATA is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_EXPIRED_FLAG_tfs = {
   "SAMR_FIELD_EXPIRED_FLAG is SET",
   "SAMR_FIELD_EXPIRED_FLAG is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_SEC_DESC_tfs = {
   "SAMR_FIELD_SEC_DESC is SET",
   "SAMR_FIELD_SEC_DESC is NOT SET",
};
static const true_false_string samr_FieldsPresent_SAMR_FIELD_OWF_PWD_tfs = {
   "SAMR_FIELD_OWF_PWD is SET",
   "SAMR_FIELD_OWF_PWD is NOT SET",
};
static unsigned samr_dissect_element_UserInfo21_last_logon(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_last_logoff(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_last_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_acct_expiry(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_allow_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_force_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_home_directory(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_home_drive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_logon_script(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_profile_path(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_workstations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_comment(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_parameters(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_lm_owf_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_nt_owf_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_private_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_buf_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_buffer(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_buffer_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_buffer__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_fields_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_logon_hours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_bad_password_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_logon_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_country_code(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_code_page(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_lm_password_set(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_nt_password_set(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo21_private_data_sensitive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CryptPassword_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CryptPassword_data_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo23_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo23_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo24_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo24_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CryptPasswordEx_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CryptPasswordEx_data_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo25_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo25_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo26_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo26_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_auth_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_auth_data_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_salt(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_salt_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_cipher_len(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_cipher(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_cipher_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_cipher__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EncryptedPasswordAES_PBKDF2Iterations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo31_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo31_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo32_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo32_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info4(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info5(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info6(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info7(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info8(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info9(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info10(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info11(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info12(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info13(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info14(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info16(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info17(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info18(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info20(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info21(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info23(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info24(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info25(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info26(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info31(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_UserInfo_info32(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidWithAttribute_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidWithAttribute_attributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidWithAttributeArray_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidWithAttributeArray_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidWithAttributeArray_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidWithAttributeArray_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryGeneral_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryGeneral_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryGeneral_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryGeneral_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryGeneral_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryGeneral_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoGeneral_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoGeneral_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoGeneral_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoGeneral_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFull_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFull_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFull_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFull_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFull_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoFull_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoFull_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoFull_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoFull_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFullGroup_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFullGroup_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFullGroup_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFullGroup_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryFullGroup_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoFullGroups_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoFullGroups_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoFullGroups_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoFullGroups_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryAscii_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispEntryAscii_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoAscii_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoAscii_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoAscii_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfoAscii_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
const value_string samr_samr_DomainDisplayInformation_vals[] = {
	{ SAMR_DOMAIN_DISPLAY_USER, "SAMR_DOMAIN_DISPLAY_USER" },
	{ SAMR_DOMAIN_DISPLAY_MACHINE, "SAMR_DOMAIN_DISPLAY_MACHINE" },
	{ SAMR_DOMAIN_DISPLAY_GROUP, "SAMR_DOMAIN_DISPLAY_GROUP" },
	{ SAMR_DOMAIN_DISPLAY_OEM_USER, "SAMR_DOMAIN_DISPLAY_OEM_USER" },
	{ SAMR_DOMAIN_DISPLAY_OEM_GROUP, "SAMR_DOMAIN_DISPLAY_OEM_GROUP" },
{ 0, NULL }
};
static unsigned samr_dissect_element_DispInfo_info1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfo_info2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfo_info3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfo_info4(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DispInfo_info5(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_PwInfo_min_password_length(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_PwInfo_password_properties(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
const value_string samr_samr_ConnectVersion_vals[] = {
	{ SAMR_CONNECT_PRE_W2K, "SAMR_CONNECT_PRE_W2K" },
	{ SAMR_CONNECT_W2K, "SAMR_CONNECT_W2K" },
	{ SAMR_CONNECT_AFTER_W2K, "SAMR_CONNECT_AFTER_W2K" },
{ 0, NULL }
};
const value_string samr_samPwdChangeReason_vals[] = {
	{ SAM_PWD_CHANGE_NO_ERROR, "SAM_PWD_CHANGE_NO_ERROR" },
	{ SAM_PWD_CHANGE_PASSWORD_TOO_SHORT, "SAM_PWD_CHANGE_PASSWORD_TOO_SHORT" },
	{ SAM_PWD_CHANGE_PWD_IN_HISTORY, "SAM_PWD_CHANGE_PWD_IN_HISTORY" },
	{ SAM_PWD_CHANGE_USERNAME_IN_PASSWORD, "SAM_PWD_CHANGE_USERNAME_IN_PASSWORD" },
	{ SAM_PWD_CHANGE_FULLNAME_IN_PASSWORD, "SAM_PWD_CHANGE_FULLNAME_IN_PASSWORD" },
	{ SAM_PWD_CHANGE_NOT_COMPLEX, "SAM_PWD_CHANGE_NOT_COMPLEX" },
	{ SAM_PWD_CHANGE_MACHINE_NOT_DEFAULT, "SAM_PWD_CHANGE_MACHINE_NOT_DEFAULT" },
	{ SAM_PWD_CHANGE_FAILED_BY_FILTER, "SAM_PWD_CHANGE_FAILED_BY_FILTER" },
	{ SAM_PWD_CHANGE_PASSWORD_TOO_LONG, "SAM_PWD_CHANGE_PASSWORD_TOO_LONG" },
{ 0, NULL }
};
static unsigned samr_dissect_element_userPwdChangeFailureInformation_extendedFailureReason(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_userPwdChangeFailureInformation_filterModuleName(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
const value_string samr_samr_SupportedFeatures_vals[] = {
	{ SAMR_CONNECT_FEATURE_RID_ONLY, "SAMR_CONNECT_FEATURE_RID_ONLY" },
	{ SAMR_CONNECT_FEATURE_RESRVED1, "SAMR_CONNECT_FEATURE_RESRVED1" },
	{ SAMR_CONNECT_FEATURE_RESRVED2, "SAMR_CONNECT_FEATURE_RESRVED2" },
	{ SAMR_CONNECT_FEATURE_USE_AES, "SAMR_CONNECT_FEATURE_USE_AES" },
{ 0, NULL }
};
static unsigned samr_dissect_element_ConnectInfo1_client_version(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ConnectInfo1_supported_features(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ConnectInfo_info1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static const true_false_string samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET_tfs = {
   "SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET is SET",
   "SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET is NOT SET",
};
static const true_false_string samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME_tfs = {
   "SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME is SET",
   "SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME is NOT SET",
};
static const true_false_string samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_LOCKOUT_TIME_tfs = {
   "SAMR_VALIDATE_FIELD_LOCKOUT_TIME is SET",
   "SAMR_VALIDATE_FIELD_LOCKOUT_TIME is NOT SET",
};
static const true_false_string samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT_tfs = {
   "SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT is SET",
   "SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT is NOT SET",
};
static const true_false_string samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH_tfs = {
   "SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH is SET",
   "SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH is NOT SET",
};
static const true_false_string samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_tfs = {
   "SAMR_VALIDATE_FIELD_PASSWORD_HISTORY is SET",
   "SAMR_VALIDATE_FIELD_PASSWORD_HISTORY is NOT SET",
};
const value_string samr_samr_ValidatePasswordLevel_vals[] = {
	{ NetValidateAuthentication, "NetValidateAuthentication" },
	{ NetValidatePasswordChange, "NetValidatePasswordChange" },
	{ NetValidatePasswordReset, "NetValidatePasswordReset" },
{ 0, NULL }
};
const value_string samr_samr_ValidationStatus_vals[] = {
	{ SAMR_VALIDATION_STATUS_SUCCESS, "SAMR_VALIDATION_STATUS_SUCCESS" },
	{ SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE, "SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE" },
	{ SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT, "SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT" },
	{ SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED, "SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED" },
	{ SAMR_VALIDATION_STATUS_BAD_PASSWORD, "SAMR_VALIDATION_STATUS_BAD_PASSWORD" },
	{ SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT, "SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT" },
	{ SAMR_VALIDATION_STATUS_PWD_TOO_SHORT, "SAMR_VALIDATION_STATUS_PWD_TOO_SHORT" },
	{ SAMR_VALIDATION_STATUS_PWD_TOO_LONG, "SAMR_VALIDATION_STATUS_PWD_TOO_LONG" },
	{ SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH, "SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH" },
	{ SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT, "SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT" },
	{ SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR, "SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR" },
{ 0, NULL }
};
static unsigned samr_dissect_element_ValidationBlob_length(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidationBlob_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidationBlob_data_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidationBlob_data__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_fields_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_last_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_bad_password_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_lockout_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_bad_pwd_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_pwd_history_len(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_pwd_history(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_pwd_history_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordInfo_pwd_history__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordRepCtr_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordRepCtr_status(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordRep_ctr1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordRep_ctr2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordRep_ctr3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq3_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq3_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq3_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq3_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq3_pwd_must_change_at_next_logon(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq3_clear_lockout(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq2_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq2_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq2_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq2_password_matched(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq1_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq1_password_matched(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq_req1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq_req2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePasswordReq_req3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Close_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Close_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetSecurity_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetSecurity_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetSecurity_sec_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetSecurity_sdbuf(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetSecurity_sdbuf_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QuerySecurity_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QuerySecurity_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QuerySecurity_sec_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QuerySecurity_sdbuf(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QuerySecurity_sdbuf_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QuerySecurity_sdbuf__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Shutdown_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Shutdown_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupDomain_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupDomain_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupDomain_domain_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupDomain_domain_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupDomain_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupDomain_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupDomain_sid__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_resume_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_resume_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_sam(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_sam_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_sam__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_buf_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_num_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomains_num_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenDomain_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenDomain_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenDomain_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenDomain_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenDomain_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenDomain_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenDomain_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDomainInfo_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDomainInfo_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDomainInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDomainInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDomainInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomainGroup_rid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_resume_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_resume_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_sam(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_sam_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_sam__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_max_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_num_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainGroups_num_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_account_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser_rid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_resume_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_resume_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_sam(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_sam_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_sam__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_max_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_num_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainUsers_num_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_alias_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_alias_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateDomAlias_rid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_resume_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_resume_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_sam(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_sam_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_sam__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_max_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_num_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_EnumDomainAliases_num_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetAliasMembership_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetAliasMembership_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetAliasMembership_sids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetAliasMembership_sids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetAliasMembership_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetAliasMembership_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_num_names(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_names(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_names_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_names__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_types(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupNames_types_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_num_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_names(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_names_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_types(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_LookupRids_types_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenGroup_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenGroup_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenGroup_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenGroup_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenGroup_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenGroup_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupInfo_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupInfo_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupInfo_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetGroupInfo_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetGroupInfo_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetGroupInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetGroupInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetGroupInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddGroupMember_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddGroupMember_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddGroupMember_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddGroupMember_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteDomainGroup_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteDomainGroup_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteGroupMember_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteGroupMember_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteGroupMember_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupMember_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupMember_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupMember_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupMember_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryGroupMember_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetMemberAttributesOfGroup_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetMemberAttributesOfGroup_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetMemberAttributesOfGroup_unknown1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetMemberAttributesOfGroup_unknown2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenAlias_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenAlias_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenAlias_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenAlias_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryAliasInfo_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryAliasInfo_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryAliasInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryAliasInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryAliasInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryAliasInfo_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetAliasInfo_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetAliasInfo_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetAliasInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetAliasInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetAliasInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteDomAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteDomAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddAliasMember_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddAliasMember_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddAliasMember_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddAliasMember_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteAliasMember_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteAliasMember_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteAliasMember_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteAliasMember_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetMembersInAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetMembersInAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetMembersInAlias_sids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetMembersInAlias_sids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenUser_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenUser_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenUser_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenUser_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OpenUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_DeleteUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_lm_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_old_lm_crypted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_old_lm_crypted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_new_lm_crypted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_new_lm_crypted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_nt_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_old_nt_crypted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_old_nt_crypted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_new_nt_crypted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_new_nt_crypted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_cross1_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_nt_cross(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_nt_cross_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_cross2_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_lm_cross(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser_lm_cross_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetGroupsForUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetGroupsForUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetGroupsForUser_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetGroupsForUser_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetGroupsForUser_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_start_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_max_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_buf_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_total_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_total_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_returned_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_returned_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex_idx_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_TestPrivateFunctionsDomain_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_TestPrivateFunctionsDomain_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_TestPrivateFunctionsUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_TestPrivateFunctionsUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetUserPwInfo_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetUserPwInfo_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetUserPwInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetUserPwInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RemoveMemberFromForeignDomain_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RemoveMemberFromForeignDomain_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RemoveMemberFromForeignDomain_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RemoveMemberFromForeignDomain_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo2_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo2_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo2_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDomainInfo2_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo2_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo2_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo2_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryUserInfo2_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_start_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_max_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_buf_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_total_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_total_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_returned_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_returned_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo2_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex2_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex2_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex2_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex2_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex2_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDisplayEnumerationIndex2_idx_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_account_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_access_granted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_access_granted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_CreateUser2_rid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_start_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_max_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_buf_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_total_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_total_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_returned_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_returned_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_QueryDisplayInfo3_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddMultipleMembersToAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddMultipleMembersToAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddMultipleMembersToAlias_sids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_AddMultipleMembersToAlias_sids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RemoveMultipleMembersFromAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RemoveMultipleMembersFromAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RemoveMultipleMembersFromAlias_sids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RemoveMultipleMembersFromAlias_sids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OemChangePasswordUser2_server(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OemChangePasswordUser2_server_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OemChangePasswordUser2_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OemChangePasswordUser2_account_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OemChangePasswordUser2_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OemChangePasswordUser2_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OemChangePasswordUser2_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_OemChangePasswordUser2_hash_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_server(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_server_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_account_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_nt_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_nt_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_nt_verifier(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_nt_verifier_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_lm_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_lm_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_lm_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_lm_verifier(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser2_lm_verifier_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDomPwInfo_domain_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDomPwInfo_domain_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDomPwInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetDomPwInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect2_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect2_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect2_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect2_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect2_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo2_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo2_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetUserInfo2_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetBootKeyInformation_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetBootKeyInformation_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetBootKeyInformation_unknown1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetBootKeyInformation_unknown2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetBootKeyInformation_unknown3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetBootKeyInformation_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetBootKeyInformation_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetBootKeyInformation_unknown(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_GetBootKeyInformation_unknown_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect3_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect3_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect3_unknown(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect3_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect3_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect3_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect4_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect4_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect4_client_version(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect4_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect4_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect4_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_server(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_server_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_account_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_nt_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_nt_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_nt_verifier(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_nt_verifier_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_lm_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_lm_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_lm_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_lm_verifier(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_lm_verifier_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_password3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_password3_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_dominfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_dominfo_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_dominfo__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_reject(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_reject_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser3_reject__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_level_in(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_info_in(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_info_in_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_level_out(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_level_out_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_info_out(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_info_out_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_Connect5_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidToSid_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidToSid_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidToSid_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidToSid_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidToSid_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_RidToSid_sid__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDsrmPassword_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDsrmPassword_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDsrmPassword_unknown(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDsrmPassword_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_SetDsrmPassword_hash_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePassword_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePassword_req(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePassword_req_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePassword_rep(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePassword_rep_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ValidatePassword_rep__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser4_server(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser4_server_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser4_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser4_account_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser4_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static unsigned samr_dissect_element_ChangePasswordUser4_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
static void
samr_connect_specific_rights(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint32_t access)
{
	static int* const access_flags[] = {
		&hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN,
		&hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS,
		&hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN,
		&hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER,
		&hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER,
		&hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER,
		NULL
	};
	proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
}
static struct access_mask_info samr_connect_access_mask_info = {
	"SAMR Connect",			/* Name of specific rights */
	samr_connect_specific_rights,	/* Dissection function */
	NULL,				/* Generic mapping table */
	NULL				/* Standard mapping table */
};
unsigned
samr_dissect_bitmap_ConnectAccessMask(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, int hf_index _U_, uint32_t param _U_)
{
	offset = dissect_nt_access_mask(
		tvb, offset, pinfo, tree, di, drep, hf_samr_connect_access_mask,
		&samr_connect_access_mask_info, NULL);
	return offset;
}
static void
samr_alias_specific_rights(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint32_t access)
{
	static int* const access_flags[] = {
		&hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_ADD_MEMBER,
		&hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_REMOVE_MEMBER,
		&hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_GET_MEMBERS,
		&hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_LOOKUP_INFO,
		&hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_SET_INFO,
		NULL
	};
	proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
}
static struct access_mask_info samr_alias_access_mask_info = {
	"SAMR Alias",			/* Name of specific rights */
	samr_alias_specific_rights,	/* Dissection function */
	NULL,				/* Generic mapping table */
	NULL				/* Standard mapping table */
};
unsigned
samr_dissect_bitmap_AliasAccessMask(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, int hf_index _U_, uint32_t param _U_)
{
	offset = dissect_nt_access_mask(
		tvb, offset, pinfo, tree, di, drep, hf_samr_alias_access_mask,
		&samr_alias_access_mask_info, NULL);
	return offset;
}
static void
samr_group_specific_rights(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint32_t access)
{
	static int* const access_flags[] = {
		&hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_GET_MEMBERS,
		&hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_REMOVE_MEMBER,
		&hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_ADD_MEMBER,
		&hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_SET_INFO,
		&hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_LOOKUP_INFO,
		NULL
	};
	proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
}
static struct access_mask_info samr_group_access_mask_info = {
	"SAMR Group",			/* Name of specific rights */
	samr_group_specific_rights,	/* Dissection function */
	NULL,				/* Generic mapping table */
	NULL				/* Standard mapping table */
};
unsigned
samr_dissect_bitmap_GroupAccessMask(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, int hf_index _U_, uint32_t param _U_)
{
	offset = dissect_nt_access_mask(
		tvb, offset, pinfo, tree, di, drep, hf_samr_group_access_mask,
		&samr_group_access_mask_info, NULL);
	return offset;
}
static void
samr_domain_specific_rights(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint32_t access)
{
	static int* const access_flags[] = {
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_1,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_2,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_USER,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_GROUP,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_ALIAS,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
		&hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_3,
		NULL
	};
	proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
}
static struct access_mask_info samr_domain_access_mask_info = {
	"SAMR Domain",			/* Name of specific rights */
	samr_domain_specific_rights,	/* Dissection function */
	NULL,				/* Generic mapping table */
	NULL				/* Standard mapping table */
};
unsigned
samr_dissect_bitmap_DomainAccessMask(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, int hf_index _U_, uint32_t param _U_)
{
	offset = dissect_nt_access_mask(
		tvb, offset, pinfo, tree, di, drep, hf_samr_domain_access_mask,
		&samr_domain_access_mask_info, NULL);
	return offset;
}
static void
samr_user_specific_rights(tvbuff_t *tvb, unsigned offset, proto_tree *tree, uint32_t access)
{
	static int* const access_flags[] = {
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUPS,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_PASSWORD,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_ATTRIBUTES,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_ATTRIBUTES,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOGONINFO,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_LOC_COM,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOCALE,
		&hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC,
		NULL
	};
	proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
}
static struct access_mask_info samr_user_access_mask_info = {
	"SAMR User",			/* Name of specific rights */
	samr_user_specific_rights,	/* Dissection function */
	NULL,				/* Generic mapping table */
	NULL				/* Standard mapping table */
};
unsigned
samr_dissect_bitmap_UserAccessMask(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, int hf_index _U_, uint32_t param _U_)
{
	offset = dissect_nt_access_mask(
		tvb, offset, pinfo, tree, di, drep, hf_samr_user_access_mask,
		&samr_user_access_mask_info, NULL);
	return offset;
}
static unsigned
cnf_dissect_lsa_AsciiString(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, uint32_t param _U_, int hfindex)
{
	offset = dissect_ndr_counted_ascii_string(tvb, offset, pinfo, tree, di, drep,
		hfindex, 0);
	return offset;
}
static unsigned
cnf_dissect_sec_desc_buf_(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep)
{
	uint64_t len;
	e_ctx_hnd *polhnd = NULL;
	dcerpc_call_value *dcv = NULL;
	uint32_t type=0;
	struct access_mask_info *ami=NULL;
	if(di->conformant_run){
		/*just a run to handle conformant arrays, nothing to dissect */
		return offset;
	}
	offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, di, drep,
		hf_samr_sec_desc_buf_len, &len);
	dcv = (dcerpc_call_value *)di->call_data;
	if(dcv){
		polhnd = dcv->pol;
	}
	if(polhnd){
		dcerpc_fetch_polhnd_data(polhnd, NULL, &type, NULL, NULL,
					pinfo->num);
	}
	switch(type){
	case PIDL_POLHND_TYPE_SAMR_USER:
		ami=&samr_user_access_mask_info;
		break;
	case PIDL_POLHND_TYPE_SAMR_CONNECT:
		ami=&samr_connect_access_mask_info;
		break;
	case PIDL_POLHND_TYPE_SAMR_DOMAIN:
		ami=&samr_domain_access_mask_info;
		break;
	case PIDL_POLHND_TYPE_SAMR_GROUP:
		ami=&samr_group_access_mask_info;
		break;
	case PIDL_POLHND_TYPE_SAMR_ALIAS:
		ami=&samr_alias_access_mask_info;
		break;
	}
	dissect_nt_sec_desc(tvb, offset, pinfo, tree, drep, true, (int)len, ami);
	offset += (int)len;
	return offset;
}
static unsigned
cnf_dissect_sec_desc_buf(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep)
{
	uint64_t len;
	if(di->conformant_run){
		/*just a run to handle conformant arrays, nothing to dissect */
		return offset;
	}
	offset = dissect_ndr_uint3264 (tvb, offset, pinfo, tree, di, drep,
		hf_samr_sec_desc_buf_len, &len);
        offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, di, drep,
                       cnf_dissect_sec_desc_buf_, NDR_POINTER_UNIQUE,
                       "SAM SECURITY DESCRIPTOR data:", -1);
	return offset;
}
static unsigned
cnf_dissect_dom_sid2(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep)
{
	offset = dissect_ndr_nt_SID(tvb, offset, pinfo, tree, di, drep);
	return offset;
}
static unsigned
cnf_dissect_lsa_SidArray(tvbuff_t *tvb, unsigned offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep)
{
	offset = dissect_ndr_nt_PSID_ARRAY(tvb, offset, pinfo, tree, di, drep);
	return offset;
}
static unsigned
cnf_dissect_samr_security_secinfo(tvbuff_t *tvb, unsigned offset, packet_info *pinfo _U_, proto_tree *tree, uint8_t *drep _U_)
{
	offset = dissect_nt_security_information(tvb, offset, tree);
	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] lsa_String *names; */
/* IDL: } */

static unsigned
samr_dissect_element_lsa_Strings_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_lsa_Strings_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_lsa_Strings_names(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_lsa_Strings_names_, NDR_POINTER_UNIQUE, "Pointer to Names (lsa_String)",hf_samr_lsa_Strings_names);

	return offset;
}

static unsigned
samr_dissect_element_lsa_Strings_names_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_lsa_Strings_names__);

	return offset;
}

static unsigned
samr_dissect_element_lsa_Strings_names__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_lsa_Strings_names);

	return offset;
}

unsigned
samr_dissect_struct_lsa_Strings(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_lsa_Strings);
	}

	offset = samr_dissect_element_lsa_Strings_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_lsa_Strings_names(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	SID_NAME_USE_NONE=0, */
/* IDL: 	SID_NAME_USER=1, */
/* IDL: 	SID_NAME_DOM_GRP=2, */
/* IDL: 	SID_NAME_DOMAIN=3, */
/* IDL: 	SID_NAME_ALIAS=4, */
/* IDL: 	SID_NAME_WKN_GRP=5, */
/* IDL: 	SID_NAME_DELETED=6, */
/* IDL: 	SID_NAME_INVALID=7, */
/* IDL: 	SID_NAME_UNKNOWN=8, */
/* IDL: 	SID_NAME_COMPUTER=9, */
/* IDL: } */

unsigned
samr_dissect_enum_lsa_SidType(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: bitmap { */
/* IDL: 	ACB_DISABLED =  0x00000001 , */
/* IDL: 	ACB_HOMDIRREQ =  0x00000002 , */
/* IDL: 	ACB_PWNOTREQ =  0x00000004 , */
/* IDL: 	ACB_TEMPDUP =  0x00000008 , */
/* IDL: 	ACB_NORMAL =  0x00000010 , */
/* IDL: 	ACB_MNS =  0x00000020 , */
/* IDL: 	ACB_DOMTRUST =  0x00000040 , */
/* IDL: 	ACB_WSTRUST =  0x00000080 , */
/* IDL: 	ACB_SVRTRUST =  0x00000100 , */
/* IDL: 	ACB_PWNOEXP =  0x00000200 , */
/* IDL: 	ACB_AUTOLOCK =  0x00000400 , */
/* IDL: 	ACB_ENC_TXT_PWD_ALLOWED =  0x00000800 , */
/* IDL: 	ACB_SMARTCARD_REQUIRED =  0x00001000 , */
/* IDL: 	ACB_TRUSTED_FOR_DELEGATION =  0x00002000 , */
/* IDL: 	ACB_NOT_DELEGATED =  0x00004000 , */
/* IDL: 	ACB_USE_DES_KEY_ONLY =  0x00008000 , */
/* IDL: 	ACB_DONT_REQUIRE_PREAUTH =  0x00010000 , */
/* IDL: 	ACB_PW_EXPIRED =  0x00020000 , */
/* IDL: 	ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION =  0x00040000 , */
/* IDL: 	ACB_NO_AUTH_DATA_REQD =  0x00080000 , */
/* IDL: 	ACB_PARTIAL_SECRETS_ACCOUNT =  0x00100000 , */
/* IDL: 	ACB_USE_AES_KEYS =  0x00200000 , */
/* IDL: } */

unsigned
samr_dissect_bitmap_AcctFlags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item;
	static int * const samr_samr_AcctFlags_fields[] = {
		&hf_samr_samr_AcctFlags_ACB_DISABLED,
		&hf_samr_samr_AcctFlags_ACB_HOMDIRREQ,
		&hf_samr_samr_AcctFlags_ACB_PWNOTREQ,
		&hf_samr_samr_AcctFlags_ACB_TEMPDUP,
		&hf_samr_samr_AcctFlags_ACB_NORMAL,
		&hf_samr_samr_AcctFlags_ACB_MNS,
		&hf_samr_samr_AcctFlags_ACB_DOMTRUST,
		&hf_samr_samr_AcctFlags_ACB_WSTRUST,
		&hf_samr_samr_AcctFlags_ACB_SVRTRUST,
		&hf_samr_samr_AcctFlags_ACB_PWNOEXP,
		&hf_samr_samr_AcctFlags_ACB_AUTOLOCK,
		&hf_samr_samr_AcctFlags_ACB_ENC_TXT_PWD_ALLOWED,
		&hf_samr_samr_AcctFlags_ACB_SMARTCARD_REQUIRED,
		&hf_samr_samr_AcctFlags_ACB_TRUSTED_FOR_DELEGATION,
		&hf_samr_samr_AcctFlags_ACB_NOT_DELEGATED,
		&hf_samr_samr_AcctFlags_ACB_USE_DES_KEY_ONLY,
		&hf_samr_samr_AcctFlags_ACB_DONT_REQUIRE_PREAUTH,
		&hf_samr_samr_AcctFlags_ACB_PW_EXPIRED,
		&hf_samr_samr_AcctFlags_ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION,
		&hf_samr_samr_AcctFlags_ACB_NO_AUTH_DATA_REQD,
		&hf_samr_samr_AcctFlags_ACB_PARTIAL_SECRETS_ACCOUNT,
		&hf_samr_samr_AcctFlags_ACB_USE_AES_KEYS,
		NULL
	};
	uint32_t flags;
	ALIGN_TO_4_BYTES;

	item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
				ett_samr_samr_AcctFlags, samr_samr_AcctFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);

	offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);

	if (!flags)
		proto_item_append_text(item, ": (No values set)");

	if (flags & (~0x003fffff)) {
		flags &= (~0x003fffff);
		proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
	}

	return offset;
}


/* IDL: bitmap { */
/* IDL: 	SAMR_ACCESS_CONNECT_TO_SERVER =  0x00000001 , */
/* IDL: 	SAMR_ACCESS_SHUTDOWN_SERVER =  0x00000002 , */
/* IDL: 	SAMR_ACCESS_INITIALIZE_SERVER =  0x00000004 , */
/* IDL: 	SAMR_ACCESS_CREATE_DOMAIN =  0x00000008 , */
/* IDL: 	SAMR_ACCESS_ENUM_DOMAINS =  0x00000010 , */
/* IDL: 	SAMR_ACCESS_LOOKUP_DOMAIN =  0x00000020 , */
/* IDL: } */


/* IDL: bitmap { */
/* IDL: 	SAMR_USER_ACCESS_GET_NAME_ETC =  0x00000001 , */
/* IDL: 	SAMR_USER_ACCESS_GET_LOCALE =  0x00000002 , */
/* IDL: 	SAMR_USER_ACCESS_SET_LOC_COM =  0x00000004 , */
/* IDL: 	SAMR_USER_ACCESS_GET_LOGONINFO =  0x00000008 , */
/* IDL: 	SAMR_USER_ACCESS_GET_ATTRIBUTES =  0x00000010 , */
/* IDL: 	SAMR_USER_ACCESS_SET_ATTRIBUTES =  0x00000020 , */
/* IDL: 	SAMR_USER_ACCESS_CHANGE_PASSWORD =  0x00000040 , */
/* IDL: 	SAMR_USER_ACCESS_SET_PASSWORD =  0x00000080 , */
/* IDL: 	SAMR_USER_ACCESS_GET_GROUPS =  0x00000100 , */
/* IDL: 	SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP =  0x00000200 , */
/* IDL: 	SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP =  0x00000400 , */
/* IDL: } */


/* IDL: bitmap { */
/* IDL: 	SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1 =  0x00000001 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_SET_INFO_1 =  0x00000002 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2 =  0x00000004 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_SET_INFO_2 =  0x00000008 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_CREATE_USER =  0x00000010 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_CREATE_GROUP =  0x00000020 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_CREATE_ALIAS =  0x00000040 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS =  0x00000080 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS =  0x00000100 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT =  0x00000200 , */
/* IDL: 	SAMR_DOMAIN_ACCESS_SET_INFO_3 =  0x00000400 , */
/* IDL: } */


/* IDL: bitmap { */
/* IDL: 	SAMR_GROUP_ACCESS_LOOKUP_INFO =  0x00000001 , */
/* IDL: 	SAMR_GROUP_ACCESS_SET_INFO =  0x00000002 , */
/* IDL: 	SAMR_GROUP_ACCESS_ADD_MEMBER =  0x00000004 , */
/* IDL: 	SAMR_GROUP_ACCESS_REMOVE_MEMBER =  0x00000008 , */
/* IDL: 	SAMR_GROUP_ACCESS_GET_MEMBERS =  0x00000010 , */
/* IDL: } */


/* IDL: bitmap { */
/* IDL: 	SAMR_ALIAS_ACCESS_ADD_MEMBER =  0x00000001 , */
/* IDL: 	SAMR_ALIAS_ACCESS_REMOVE_MEMBER =  0x00000002 , */
/* IDL: 	SAMR_ALIAS_ACCESS_GET_MEMBERS =  0x00000004 , */
/* IDL: 	SAMR_ALIAS_ACCESS_LOOKUP_INFO =  0x00000008 , */
/* IDL: 	SAMR_ALIAS_ACCESS_SET_INFO =  0x00000010 , */
/* IDL: } */


/* IDL: struct { */
/* IDL: 	uint32 idx; */
/* IDL: 	lsa_String name; */
/* IDL: } */

static unsigned
samr_dissect_element_SamEntry_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SamEntry_idx, 0);

	return offset;
}

static unsigned
samr_dissect_element_SamEntry_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_SamEntry_name);

	return offset;
}

unsigned
samr_dissect_struct_SamEntry(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_SamEntry);
	}

	offset = samr_dissect_element_SamEntry_idx(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_SamEntry_name(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] samr_SamEntry *entries; */
/* IDL: } */

static unsigned
samr_dissect_element_SamArray_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SamArray_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_SamArray_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SamArray_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (samr_SamEntry)",hf_samr_samr_SamArray_entries);

	return offset;
}

static unsigned
samr_dissect_element_SamArray_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SamArray_entries__);

	return offset;
}

static unsigned
samr_dissect_element_SamArray_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_SamEntry(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_SamArray_entries,3|PIDL_SET_COL_INFO);

	return offset;
}

unsigned
samr_dissect_struct_SamArray(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_SamArray);
	}

	offset = samr_dissect_element_SamArray_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_SamArray_entries(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	DomainPasswordInformation=1, */
/* IDL: 	DomainGeneralInformation=2, */
/* IDL: 	DomainLogoffInformation=3, */
/* IDL: 	DomainOemInformation=4, */
/* IDL: 	DomainNameInformation=5, */
/* IDL: 	DomainReplicationInformation=6, */
/* IDL: 	DomainServerRoleInformation=7, */
/* IDL: 	DomainModifiedInformation=8, */
/* IDL: 	DomainStateInformation=9, */
/* IDL: 	DomainUasInformation=10, */
/* IDL: 	DomainGeneralInformation2=11, */
/* IDL: 	DomainLockoutInformation=12, */
/* IDL: 	DomainModifiedInformation2=13, */
/* IDL: } */

unsigned
samr_dissect_enum_DomainInfoClass(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: enum { */
/* IDL: 	SAMR_ROLE_STANDALONE=0, */
/* IDL: 	SAMR_ROLE_DOMAIN_MEMBER=1, */
/* IDL: 	SAMR_ROLE_DOMAIN_BDC=2, */
/* IDL: 	SAMR_ROLE_DOMAIN_PDC=3, */
/* IDL: } */

unsigned
samr_dissect_enum_Role(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: bitmap { */
/* IDL: 	DOMAIN_PASSWORD_COMPLEX =  0x00000001 , */
/* IDL: 	DOMAIN_PASSWORD_NO_ANON_CHANGE =  0x00000002 , */
/* IDL: 	DOMAIN_PASSWORD_NO_CLEAR_CHANGE =  0x00000004 , */
/* IDL: 	DOMAIN_PASSWORD_LOCKOUT_ADMINS =  0x00000008 , */
/* IDL: 	DOMAIN_PASSWORD_STORE_CLEARTEXT =  0x00000010 , */
/* IDL: 	DOMAIN_REFUSE_PASSWORD_CHANGE =  0x00000020 , */
/* IDL: } */

unsigned
samr_dissect_bitmap_PasswordProperties(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item;
	static int * const samr_samr_PasswordProperties_fields[] = {
		&hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_COMPLEX,
		&hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_NO_ANON_CHANGE,
		&hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_NO_CLEAR_CHANGE,
		&hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_LOCKOUT_ADMINS,
		&hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_STORE_CLEARTEXT,
		&hf_samr_samr_PasswordProperties_DOMAIN_REFUSE_PASSWORD_CHANGE,
		NULL
	};
	uint32_t flags;
	ALIGN_TO_4_BYTES;

	item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
				ett_samr_samr_PasswordProperties, samr_samr_PasswordProperties_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);

	offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);

	if (!flags)
		proto_item_append_text(item, ": (No values set)");

	if (flags & (~0x0000003f)) {
		flags &= (~0x0000003f);
		proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	DOMAIN_SERVER_ENABLED=1, */
/* IDL: 	DOMAIN_SERVER_DISABLED=2, */
/* IDL: } */

unsigned
samr_dissect_enum_DomainServerState(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: struct { */
/* IDL: 	uint16 min_password_length; */
/* IDL: 	uint16 password_history_length; */
/* IDL: 	samr_PasswordProperties password_properties; */
/* IDL: 	dlong max_password_age; */
/* IDL: 	dlong min_password_age; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo1_min_password_length(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo1_min_password_length, 0);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo1_password_history_length(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo1_password_history_length, 0);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo1_password_properties(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_PasswordProperties(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo1_password_properties, 0);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo1_max_password_age(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo1_max_password_age, NULL);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo1_min_password_age(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo1_min_password_age, NULL);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo1);
	}

	offset = samr_dissect_element_DomInfo1_min_password_length(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo1_password_history_length(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo1_password_properties(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo1_max_password_age(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo1_min_password_age(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	NTTIME force_logoff_time; */
/* IDL: 	lsa_String oem_information; */
/* IDL: 	lsa_String domain_name; */
/* IDL: 	lsa_String primary; */
/* IDL: 	udlong sequence_num; */
/* IDL: 	samr_DomainServerState domain_server_state; */
/* IDL: 	samr_Role role; */
/* IDL: 	uint32 unknown3; */
/* IDL: 	uint32 num_users; */
/* IDL: 	uint32 num_groups; */
/* IDL: 	uint32 num_aliases; */
/* IDL: } */

static unsigned
samr_dissect_element_DomGeneralInformation_force_logoff_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation_force_logoff_time);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_oem_information(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DomGeneralInformation_oem_information);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_domain_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DomGeneralInformation_domain_name);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_primary(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DomGeneralInformation_primary);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_sequence_num(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_duint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation_sequence_num, NULL);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_domain_server_state(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainServerState(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation_domain_server_state, 0);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_role(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_Role(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation_role, 0);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_unknown3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation_unknown3, 0);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_num_users(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation_num_users, 0);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_num_groups(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation_num_groups, 0);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation_num_aliases(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation_num_aliases, 0);

	return offset;
}

unsigned
samr_dissect_struct_DomGeneralInformation(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomGeneralInformation);
	}

	offset = samr_dissect_element_DomGeneralInformation_force_logoff_time(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_oem_information(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_domain_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_primary(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_sequence_num(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_domain_server_state(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_role(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_unknown3(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_num_users(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_num_groups(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation_num_aliases(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	NTTIME force_logoff_time; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo3_force_logoff_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo3_force_logoff_time);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo3);
	}

	offset = samr_dissect_element_DomInfo3_force_logoff_time(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String oem_information; */
/* IDL: } */

static unsigned
samr_dissect_element_DomOEMInformation_oem_information(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DomOEMInformation_oem_information);

	return offset;
}

unsigned
samr_dissect_struct_DomOEMInformation(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomOEMInformation);
	}

	offset = samr_dissect_element_DomOEMInformation_oem_information(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String domain_name; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo5_domain_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DomInfo5_domain_name);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo5(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo5);
	}

	offset = samr_dissect_element_DomInfo5_domain_name(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String primary; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo6_primary(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DomInfo6_primary);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo6(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo6);
	}

	offset = samr_dissect_element_DomInfo6_primary(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_Role role; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo7_role(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_Role(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo7_role, 0);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo7(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo7);
	}

	offset = samr_dissect_element_DomInfo7_role(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	hyper sequence_num; */
/* IDL: 	NTTIME domain_create_time; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo8_sequence_num(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo8_sequence_num, NULL);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo8_domain_create_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo8_domain_create_time);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo8(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo8);
	}

	offset = samr_dissect_element_DomInfo8_sequence_num(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo8_domain_create_time(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_DomainServerState domain_server_state; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo9_domain_server_state(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainServerState(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo9_domain_server_state, 0);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo9(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo9);
	}

	offset = samr_dissect_element_DomInfo9_domain_server_state(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_DomGeneralInformation general; */
/* IDL: 	hyper lockout_duration; */
/* IDL: 	hyper lockout_window; */
/* IDL: 	uint16 lockout_threshold; */
/* IDL: } */

static unsigned
samr_dissect_element_DomGeneralInformation2_general(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomGeneralInformation(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomGeneralInformation2_general,0);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation2_lockout_duration(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation2_lockout_duration, NULL);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation2_lockout_window(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation2_lockout_window, NULL);

	return offset;
}

static unsigned
samr_dissect_element_DomGeneralInformation2_lockout_threshold(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomGeneralInformation2_lockout_threshold, 0);

	return offset;
}

unsigned
samr_dissect_struct_DomGeneralInformation2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomGeneralInformation2);
	}

	offset = samr_dissect_element_DomGeneralInformation2_general(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation2_lockout_duration(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation2_lockout_window(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomGeneralInformation2_lockout_threshold(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	hyper lockout_duration; */
/* IDL: 	hyper lockout_window; */
/* IDL: 	uint16 lockout_threshold; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo12_lockout_duration(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo12_lockout_duration, NULL);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo12_lockout_window(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo12_lockout_window, NULL);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo12_lockout_threshold(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo12_lockout_threshold, 0);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo12(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo12);
	}

	offset = samr_dissect_element_DomInfo12_lockout_duration(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo12_lockout_window(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo12_lockout_threshold(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	hyper sequence_num; */
/* IDL: 	NTTIME domain_create_time; */
/* IDL: 	hyper modified_count_at_last_promotion; */
/* IDL: } */

static unsigned
samr_dissect_element_DomInfo13_sequence_num(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo13_sequence_num, NULL);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo13_domain_create_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo13_domain_create_time);

	return offset;
}

static unsigned
samr_dissect_element_DomInfo13_modified_count_at_last_promotion(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DomInfo13_modified_count_at_last_promotion, NULL);

	return offset;
}

unsigned
samr_dissect_struct_DomInfo13(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DomInfo13);
	}

	offset = samr_dissect_element_DomInfo13_sequence_num(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo13_domain_create_time(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DomInfo13_modified_count_at_last_promotion(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: [switch_type(uint16)] union { */
/* IDL: [case(1)] [case(1)] samr_DomInfo1 info1; */
/* IDL: [case(2)] [case(2)] samr_DomGeneralInformation general; */
/* IDL: [case(3)] [case(3)] samr_DomInfo3 info3; */
/* IDL: [case(4)] [case(4)] samr_DomOEMInformation oem; */
/* IDL: [case(5)] [case(5)] samr_DomInfo5 info5; */
/* IDL: [case(6)] [case(6)] samr_DomInfo6 info6; */
/* IDL: [case(7)] [case(7)] samr_DomInfo7 info7; */
/* IDL: [case(8)] [case(8)] samr_DomInfo8 info8; */
/* IDL: [case(9)] [case(9)] samr_DomInfo9 info9; */
/* IDL: [case(11)] [case(11)] samr_DomGeneralInformation2 general2; */
/* IDL: [case(12)] [case(12)] samr_DomInfo12 info12; */
/* IDL: [case(13)] [case(13)] samr_DomInfo13 info13; */
/* IDL: } */

static unsigned
samr_dissect_element_DomainInfo_info1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo1(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info1,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_general(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomGeneralInformation(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_general,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_info3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo3(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info3,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_oem(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomOEMInformation(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_oem,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_info5(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo5(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info5,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_info6(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo6(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info6,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_info7(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo7(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info7,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_info8(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo8(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info8,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_info9(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo9(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info9,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_general2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomGeneralInformation2(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_general2,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_info12(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo12(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info12,0);

	return offset;
}

static unsigned
samr_dissect_element_DomainInfo_info13(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo13(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DomainInfo_info13,0);

	return offset;
}

static unsigned
samr_dissect_DomainInfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;
	uint16_t level;

	old_offset = offset;
	if (parent_tree) {
		tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_DomainInfo, &item, "samr_DomainInfo");
	}

	offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
	ALIGN_TO_8_BYTES;

	switch(level) {
		case 1:
			offset = samr_dissect_element_DomainInfo_info1(tvb, offset, pinfo, tree, di, drep);
		break;

		case 2:
			offset = samr_dissect_element_DomainInfo_general(tvb, offset, pinfo, tree, di, drep);
		break;

		case 3:
			offset = samr_dissect_element_DomainInfo_info3(tvb, offset, pinfo, tree, di, drep);
		break;

		case 4:
			offset = samr_dissect_element_DomainInfo_oem(tvb, offset, pinfo, tree, di, drep);
		break;

		case 5:
			offset = samr_dissect_element_DomainInfo_info5(tvb, offset, pinfo, tree, di, drep);
		break;

		case 6:
			offset = samr_dissect_element_DomainInfo_info6(tvb, offset, pinfo, tree, di, drep);
		break;

		case 7:
			offset = samr_dissect_element_DomainInfo_info7(tvb, offset, pinfo, tree, di, drep);
		break;

		case 8:
			offset = samr_dissect_element_DomainInfo_info8(tvb, offset, pinfo, tree, di, drep);
		break;

		case 9:
			offset = samr_dissect_element_DomainInfo_info9(tvb, offset, pinfo, tree, di, drep);
		break;

		case 11:
			offset = samr_dissect_element_DomainInfo_general2(tvb, offset, pinfo, tree, di, drep);
		break;

		case 12:
			offset = samr_dissect_element_DomainInfo_info12(tvb, offset, pinfo, tree, di, drep);
		break;

		case 13:
			offset = samr_dissect_element_DomainInfo_info13(tvb, offset, pinfo, tree, di, drep);
		break;
	}
	proto_item_set_len(item, offset-old_offset);


	return offset;
}

/* IDL: struct { */
/* IDL: 	[range(0,1024)] uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] uint32 *ids; */
/* IDL: } */

static unsigned
samr_dissect_element_Ids_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Ids_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_Ids_ids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Ids_ids_, NDR_POINTER_UNIQUE, "Pointer to Ids (uint32)",hf_samr_rid);

	return offset;
}

static unsigned
samr_dissect_element_Ids_ids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Ids_ids__);

	return offset;
}

static unsigned
samr_dissect_element_Ids_ids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

unsigned
samr_dissect_struct_Ids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_Ids);
	}

	offset = samr_dissect_element_Ids_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_Ids_ids(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: bitmap { */
/* IDL: 	SE_GROUP_MANDATORY =  0x00000001 , */
/* IDL: 	SE_GROUP_ENABLED_BY_DEFAULT =  0x00000002 , */
/* IDL: 	SE_GROUP_ENABLED =  0x00000004 , */
/* IDL: 	SE_GROUP_OWNER =  0x00000008 , */
/* IDL: 	SE_GROUP_USE_FOR_DENY_ONLY =  0x00000010 , */
/* IDL: 	SE_GROUP_RESOURCE =  0x20000000 , */
/* IDL: 	SE_GROUP_LOGON_ID =  0xC0000000 , */
/* IDL: } */

unsigned
samr_dissect_bitmap_GroupAttrs(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item;
	static int * const samr_samr_GroupAttrs_fields[] = {
		&hf_samr_samr_GroupAttrs_SE_GROUP_MANDATORY,
		&hf_samr_samr_GroupAttrs_SE_GROUP_ENABLED_BY_DEFAULT,
		&hf_samr_samr_GroupAttrs_SE_GROUP_ENABLED,
		&hf_samr_samr_GroupAttrs_SE_GROUP_OWNER,
		&hf_samr_samr_GroupAttrs_SE_GROUP_USE_FOR_DENY_ONLY,
		&hf_samr_samr_GroupAttrs_SE_GROUP_RESOURCE,
		&hf_samr_samr_GroupAttrs_SE_GROUP_LOGON_ID,
		NULL
	};
	uint32_t flags;
	ALIGN_TO_4_BYTES;

	item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
				ett_samr_samr_GroupAttrs, samr_samr_GroupAttrs_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);

	offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);

	if (!flags)
		proto_item_append_text(item, ": (No values set)");

	if (flags & (~0xe000001f)) {
		flags &= (~0xe000001f);
		proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String name; */
/* IDL: 	samr_GroupAttrs attributes; */
/* IDL: 	uint32 num_members; */
/* IDL: 	lsa_String description; */
/* IDL: } */

static unsigned
samr_dissect_element_GroupInfoAll_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_GroupInfoAll_name);

	return offset;
}

static unsigned
samr_dissect_element_GroupInfoAll_attributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_GroupAttrs(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_GroupInfoAll_attributes, 0);

	return offset;
}

static unsigned
samr_dissect_element_GroupInfoAll_num_members(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_GroupInfoAll_num_members, 0);

	return offset;
}

static unsigned
samr_dissect_element_GroupInfoAll_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_GroupInfoAll_description);

	return offset;
}

unsigned
samr_dissect_struct_GroupInfoAll(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_GroupInfoAll);
	}

	offset = samr_dissect_element_GroupInfoAll_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_GroupInfoAll_attributes(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_GroupInfoAll_num_members(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_GroupInfoAll_description(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_GroupAttrs attributes; */
/* IDL: } */

static unsigned
samr_dissect_element_GroupInfoAttributes_attributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_GroupAttrs(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_GroupInfoAttributes_attributes, 0);

	return offset;
}

unsigned
samr_dissect_struct_GroupInfoAttributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_GroupInfoAttributes);
	}

	offset = samr_dissect_element_GroupInfoAttributes_attributes(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String description; */
/* IDL: } */

static unsigned
samr_dissect_element_GroupInfoDescription_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_GroupInfoDescription_description);

	return offset;
}

unsigned
samr_dissect_struct_GroupInfoDescription(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_GroupInfoDescription);
	}

	offset = samr_dissect_element_GroupInfoDescription_description(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	GROUPINFOALL=1, */
/* IDL: 	GROUPINFONAME=2, */
/* IDL: 	GROUPINFOATTRIBUTES=3, */
/* IDL: 	GROUPINFODESCRIPTION=4, */
/* IDL: 	GROUPINFOALL2=5, */
/* IDL: } */

unsigned
samr_dissect_enum_GroupInfoEnum(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: [switch_type(samr_GroupInfoEnum)] union { */
/* IDL: [case(GROUPINFOALL)] [case(GROUPINFOALL)] samr_GroupInfoAll all; */
/* IDL: [case(GROUPINFONAME)] [case(GROUPINFONAME)] lsa_String name; */
/* IDL: [case(GROUPINFOATTRIBUTES)] [case(GROUPINFOATTRIBUTES)] samr_GroupInfoAttributes attributes; */
/* IDL: [case(GROUPINFODESCRIPTION)] [case(GROUPINFODESCRIPTION)] lsa_String description; */
/* IDL: [case(GROUPINFOALL2)] [case(GROUPINFOALL2)] samr_GroupInfoAll all2; */
/* IDL: } */

static unsigned
samr_dissect_element_GroupInfo_all(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_GroupInfoAll(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_GroupInfo_all,0);

	return offset;
}

static unsigned
samr_dissect_element_GroupInfo_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_GroupInfo_name);

	return offset;
}

static unsigned
samr_dissect_element_GroupInfo_attributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_GroupInfoAttributes(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_GroupInfo_attributes,0);

	return offset;
}

static unsigned
samr_dissect_element_GroupInfo_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_GroupInfo_description);

	return offset;
}

static unsigned
samr_dissect_element_GroupInfo_all2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_GroupInfoAll(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_GroupInfo_all2,0);

	return offset;
}

static unsigned
samr_dissect_GroupInfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;
	uint32_t level;

	old_offset = offset;
	if (parent_tree) {
		tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_GroupInfo, &item, "samr_GroupInfo");
	}

	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
	ALIGN_TO_5_BYTES;

	switch(level) {
		case GROUPINFOALL:
			offset = samr_dissect_element_GroupInfo_all(tvb, offset, pinfo, tree, di, drep);
		break;

		case GROUPINFONAME:
			offset = samr_dissect_element_GroupInfo_name(tvb, offset, pinfo, tree, di, drep);
		break;

		case GROUPINFOATTRIBUTES:
			offset = samr_dissect_element_GroupInfo_attributes(tvb, offset, pinfo, tree, di, drep);
		break;

		case GROUPINFODESCRIPTION:
			offset = samr_dissect_element_GroupInfo_description(tvb, offset, pinfo, tree, di, drep);
		break;

		case GROUPINFOALL2:
			offset = samr_dissect_element_GroupInfo_all2(tvb, offset, pinfo, tree, di, drep);
		break;
	}
	proto_item_set_len(item, offset-old_offset);


	return offset;
}

/* IDL: struct { */
/* IDL: 	uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] uint32 *rids; */
/* IDL: 	[size_is(count)] [unique(1)] uint32 *types; */
/* IDL: } */

static unsigned
samr_dissect_element_RidTypeArray_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_RidTypeArray_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_RidTypeArray_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidTypeArray_rids_, NDR_POINTER_UNIQUE, "Pointer to Rids (uint32)",hf_samr_rid);

	return offset;
}

static unsigned
samr_dissect_element_RidTypeArray_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidTypeArray_rids__);

	return offset;
}

static unsigned
samr_dissect_element_RidTypeArray_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_RidTypeArray_types(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidTypeArray_types_, NDR_POINTER_UNIQUE, "Pointer to Types (uint32)",hf_samr_samr_RidTypeArray_types);

	return offset;
}

static unsigned
samr_dissect_element_RidTypeArray_types_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidTypeArray_types__);

	return offset;
}

static unsigned
samr_dissect_element_RidTypeArray_types__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_RidTypeArray_types, 0);

	return offset;
}

unsigned
samr_dissect_struct_RidTypeArray(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_RidTypeArray);
	}

	offset = samr_dissect_element_RidTypeArray_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_RidTypeArray_rids(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_RidTypeArray_types(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String name; */
/* IDL: 	uint32 num_members; */
/* IDL: 	lsa_String description; */
/* IDL: } */

static unsigned
samr_dissect_element_AliasInfoAll_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_AliasInfoAll_name);

	return offset;
}

static unsigned
samr_dissect_element_AliasInfoAll_num_members(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_AliasInfoAll_num_members, 0);

	return offset;
}

static unsigned
samr_dissect_element_AliasInfoAll_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_AliasInfoAll_description);

	return offset;
}

unsigned
samr_dissect_struct_AliasInfoAll(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_AliasInfoAll);
	}

	offset = samr_dissect_element_AliasInfoAll_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_AliasInfoAll_num_members(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_AliasInfoAll_description(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	ALIASINFOALL=1, */
/* IDL: 	ALIASINFONAME=2, */
/* IDL: 	ALIASINFODESCRIPTION=3, */
/* IDL: } */

unsigned
samr_dissect_enum_AliasInfoEnum(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: [switch_type(samr_AliasInfoEnum)] union { */
/* IDL: [case(ALIASINFOALL)] [case(ALIASINFOALL)] samr_AliasInfoAll all; */
/* IDL: [case(ALIASINFONAME)] [case(ALIASINFONAME)] lsa_String name; */
/* IDL: [case(ALIASINFODESCRIPTION)] [case(ALIASINFODESCRIPTION)] lsa_String description; */
/* IDL: } */

static unsigned
samr_dissect_element_AliasInfo_all(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_AliasInfoAll(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_AliasInfo_all,0);

	return offset;
}

static unsigned
samr_dissect_element_AliasInfo_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_AliasInfo_name);

	return offset;
}

static unsigned
samr_dissect_element_AliasInfo_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_AliasInfo_description);

	return offset;
}

static unsigned
samr_dissect_AliasInfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;
	uint32_t level;

	old_offset = offset;
	if (parent_tree) {
		tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_AliasInfo, &item, "samr_AliasInfo");
	}

	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
	ALIGN_TO_5_BYTES;

	switch(level) {
		case ALIASINFOALL:
			offset = samr_dissect_element_AliasInfo_all(tvb, offset, pinfo, tree, di, drep);
		break;

		case ALIASINFONAME:
			offset = samr_dissect_element_AliasInfo_name(tvb, offset, pinfo, tree, di, drep);
		break;

		case ALIASINFODESCRIPTION:
			offset = samr_dissect_element_AliasInfo_description(tvb, offset, pinfo, tree, di, drep);
		break;
	}
	proto_item_set_len(item, offset-old_offset);


	return offset;
}

/* IDL: enum { */
/* IDL: 	UserGeneralInformation=1, */
/* IDL: 	UserPreferencesInformation=2, */
/* IDL: 	UserLogonInformation=3, */
/* IDL: 	UserLogonHoursInformation=4, */
/* IDL: 	UserAccountInformation=5, */
/* IDL: 	UserNameInformation=6, */
/* IDL: 	UserAccountNameInformation=7, */
/* IDL: 	UserFullNameInformation=8, */
/* IDL: 	UserPrimaryGroupInformation=9, */
/* IDL: 	UserHomeInformation=10, */
/* IDL: 	UserScriptInformation=11, */
/* IDL: 	UserProfileInformation=12, */
/* IDL: 	UserAdminCommentInformation=13, */
/* IDL: 	UserWorkStationsInformation=14, */
/* IDL: 	UserControlInformation=16, */
/* IDL: 	UserExpiresInformation=17, */
/* IDL: 	UserInternal1Information=18, */
/* IDL: 	UserParametersInformation=20, */
/* IDL: 	UserAllInformation=21, */
/* IDL: 	UserInternal4Information=23, */
/* IDL: 	UserInternal5Information=24, */
/* IDL: 	UserInternal4InformationNew=25, */
/* IDL: 	UserInternal5InformationNew=26, */
/* IDL: 	UserInternal7InformationNew=31, */
/* IDL: 	UserInternal8InformationNew=32, */
/* IDL: } */

unsigned
samr_dissect_enum_UserInfoLevel(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String account_name; */
/* IDL: 	lsa_String full_name; */
/* IDL: 	uint32 primary_gid; */
/* IDL: 	lsa_String description; */
/* IDL: 	lsa_String comment; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo1_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo1_account_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo1_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo1_full_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo1_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo1_primary_gid, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo1_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo1_description);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo1_comment(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo1_comment);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo1);
	}

	offset = samr_dissect_element_UserInfo1_account_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo1_full_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo1_primary_gid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo1_description(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo1_comment(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String comment; */
/* IDL: 	lsa_String reserved; */
/* IDL: 	uint16 country_code; */
/* IDL: 	uint16 code_page; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo2_comment(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo2_comment);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo2_reserved(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo2_reserved);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo2_country_code(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo2_country_code, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo2_code_page(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo2_code_page, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo2);
	}

	offset = samr_dissect_element_UserInfo2_comment(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo2_reserved(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo2_country_code(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo2_code_page(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint16 units_per_week; */
/* IDL: 	[length_is(units_per_week/8)] [size_is(1260)] [unique(1)] uint8 *bits; */
/* IDL: } */

static unsigned
samr_dissect_element_LogonHours_units_per_week(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_LogonHours_units_per_week, 0);

	return offset;
}

static unsigned
samr_dissect_element_LogonHours_bits(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LogonHours_bits_, NDR_POINTER_UNIQUE, "Pointer to Bits (uint8)",hf_samr_samr_LogonHours_bits);

	return offset;
}

static unsigned
samr_dissect_element_LogonHours_bits_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LogonHours_bits__);

	return offset;
}

static unsigned
samr_dissect_element_LogonHours_bits__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_LogonHours_bits, 0);

	return offset;
}

unsigned
samr_dissect_struct_LogonHours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_LogonHours);
	}

	offset = samr_dissect_element_LogonHours_units_per_week(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_LogonHours_bits(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String account_name; */
/* IDL: 	lsa_String full_name; */
/* IDL: 	uint32 rid; */
/* IDL: 	uint32 primary_gid; */
/* IDL: 	lsa_String home_directory; */
/* IDL: 	lsa_String home_drive; */
/* IDL: 	lsa_String logon_script; */
/* IDL: 	lsa_String profile_path; */
/* IDL: 	lsa_String workstations; */
/* IDL: 	NTTIME last_logon; */
/* IDL: 	NTTIME last_logoff; */
/* IDL: 	NTTIME last_password_change; */
/* IDL: 	NTTIME allow_password_change; */
/* IDL: 	NTTIME force_password_change; */
/* IDL: 	samr_LogonHours logon_hours; */
/* IDL: 	uint16 bad_password_count; */
/* IDL: 	uint16 logon_count; */
/* IDL: 	samr_AcctFlags acct_flags; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo3_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo3_account_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo3_full_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_primary_gid, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_home_directory(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo3_home_directory);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_home_drive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo3_home_drive);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_logon_script(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo3_logon_script);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_profile_path(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo3_profile_path);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_workstations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo3_workstations);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_last_logon(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_last_logon);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_last_logoff(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_last_logoff);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_last_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_last_password_change);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_allow_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_allow_password_change);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_force_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_force_password_change);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_logon_hours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_LogonHours(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo3_logon_hours,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_bad_password_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_bad_password_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_logon_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_logon_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo3_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AcctFlags(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo3_acct_flags, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo3);
	}

	offset = samr_dissect_element_UserInfo3_account_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_full_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_rid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_primary_gid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_home_directory(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_home_drive(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_logon_script(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_profile_path(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_workstations(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_last_logon(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_last_logoff(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_last_password_change(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_allow_password_change(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_force_password_change(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_logon_hours(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_bad_password_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_logon_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo3_acct_flags(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_LogonHours logon_hours; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo4_logon_hours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_LogonHours(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo4_logon_hours,0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo4(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo4);
	}

	offset = samr_dissect_element_UserInfo4_logon_hours(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String account_name; */
/* IDL: 	lsa_String full_name; */
/* IDL: 	uint32 rid; */
/* IDL: 	uint32 primary_gid; */
/* IDL: 	lsa_String home_directory; */
/* IDL: 	lsa_String home_drive; */
/* IDL: 	lsa_String logon_script; */
/* IDL: 	lsa_String profile_path; */
/* IDL: 	lsa_String description; */
/* IDL: 	lsa_String workstations; */
/* IDL: 	NTTIME last_logon; */
/* IDL: 	NTTIME last_logoff; */
/* IDL: 	samr_LogonHours logon_hours; */
/* IDL: 	uint16 bad_password_count; */
/* IDL: 	uint16 logon_count; */
/* IDL: 	NTTIME last_password_change; */
/* IDL: 	NTTIME acct_expiry; */
/* IDL: 	samr_AcctFlags acct_flags; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo5_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo5_account_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo5_full_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo5_primary_gid, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_home_directory(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo5_home_directory);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_home_drive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo5_home_drive);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_logon_script(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo5_logon_script);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_profile_path(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo5_profile_path);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo5_description);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_workstations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo5_workstations);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_last_logon(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo5_last_logon);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_last_logoff(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo5_last_logoff);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_logon_hours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_LogonHours(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo5_logon_hours,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_bad_password_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo5_bad_password_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_logon_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo5_logon_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_last_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo5_last_password_change);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_acct_expiry(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo5_acct_expiry);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo5_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AcctFlags(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo5_acct_flags, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo5(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo5);
	}

	offset = samr_dissect_element_UserInfo5_account_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_full_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_rid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_primary_gid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_home_directory(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_home_drive(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_logon_script(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_profile_path(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_description(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_workstations(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_last_logon(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_last_logoff(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_logon_hours(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_bad_password_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_logon_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_last_password_change(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_acct_expiry(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo5_acct_flags(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String account_name; */
/* IDL: 	lsa_String full_name; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo6_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo6_account_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo6_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo6_full_name);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo6(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo6);
	}

	offset = samr_dissect_element_UserInfo6_account_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo6_full_name(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String account_name; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo7_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo7_account_name);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo7(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo7);
	}

	offset = samr_dissect_element_UserInfo7_account_name(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String full_name; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo8_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo8_full_name);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo8(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo8);
	}

	offset = samr_dissect_element_UserInfo8_full_name(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 primary_gid; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo9_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo9_primary_gid, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo9(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo9);
	}

	offset = samr_dissect_element_UserInfo9_primary_gid(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String home_directory; */
/* IDL: 	lsa_String home_drive; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo10_home_directory(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo10_home_directory);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo10_home_drive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo10_home_drive);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo10(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo10);
	}

	offset = samr_dissect_element_UserInfo10_home_directory(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo10_home_drive(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String logon_script; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo11_logon_script(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo11_logon_script);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo11(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo11);
	}

	offset = samr_dissect_element_UserInfo11_logon_script(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String profile_path; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo12_profile_path(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo12_profile_path);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo12(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo12);
	}

	offset = samr_dissect_element_UserInfo12_profile_path(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String description; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo13_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo13_description);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo13(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo13);
	}

	offset = samr_dissect_element_UserInfo13_description(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_String workstations; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo14_workstations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo14_workstations);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo14(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo14);
	}

	offset = samr_dissect_element_UserInfo14_workstations(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_AcctFlags acct_flags; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo16_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AcctFlags(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo16_acct_flags, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo16(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo16);
	}

	offset = samr_dissect_element_UserInfo16_acct_flags(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	NTTIME acct_expiry; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo17_acct_expiry(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo17_acct_expiry);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo17(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo17);
	}

	offset = samr_dissect_element_UserInfo17_acct_expiry(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint8 hash[16]; */
/* IDL: } */

static unsigned
samr_dissect_element_Password_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	int i;
	for (i = 0; i < 16; i++)
		offset = samr_dissect_element_Password_hash_(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

static unsigned
samr_dissect_element_Password_hash_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Password_hash, 0);

	return offset;
}

unsigned
samr_dissect_struct_Password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_Password);
	}

	offset = samr_dissect_element_Password_hash(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_Password nt_pwd; */
/* IDL: 	samr_Password lm_pwd; */
/* IDL: 	uint8 nt_pwd_active; */
/* IDL: 	uint8 lm_pwd_active; */
/* IDL: 	uint8 password_expired; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo18_nt_pwd(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo18_nt_pwd,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo18_lm_pwd(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo18_lm_pwd,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo18_nt_pwd_active(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo18_nt_pwd_active, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo18_lm_pwd_active(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo18_lm_pwd_active, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo18_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo18_password_expired, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo18(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo18);
	}

	offset = samr_dissect_element_UserInfo18_nt_pwd(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo18_lm_pwd(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo18_nt_pwd_active(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo18_lm_pwd_active(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo18_password_expired(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	return offset;
}


/* IDL: struct { */
/* IDL: 	lsa_BinaryString parameters; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo20_parameters(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=lsarpc_dissect_struct_lsa_BinaryString(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo20_parameters, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo20(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo20);
	}

	offset = samr_dissect_element_UserInfo20_parameters(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: bitmap { */
/* IDL: 	SAMR_FIELD_ACCOUNT_NAME =  0x00000001 , */
/* IDL: 	SAMR_FIELD_FULL_NAME =  0x00000002 , */
/* IDL: 	SAMR_FIELD_RID =  0x00000004 , */
/* IDL: 	SAMR_FIELD_PRIMARY_GID =  0x00000008 , */
/* IDL: 	SAMR_FIELD_DESCRIPTION =  0x00000010 , */
/* IDL: 	SAMR_FIELD_COMMENT =  0x00000020 , */
/* IDL: 	SAMR_FIELD_HOME_DIRECTORY =  0x00000040 , */
/* IDL: 	SAMR_FIELD_HOME_DRIVE =  0x00000080 , */
/* IDL: 	SAMR_FIELD_LOGON_SCRIPT =  0x00000100 , */
/* IDL: 	SAMR_FIELD_PROFILE_PATH =  0x00000200 , */
/* IDL: 	SAMR_FIELD_WORKSTATIONS =  0x00000400 , */
/* IDL: 	SAMR_FIELD_LAST_LOGON =  0x00000800 , */
/* IDL: 	SAMR_FIELD_LAST_LOGOFF =  0x00001000 , */
/* IDL: 	SAMR_FIELD_LOGON_HOURS =  0x00002000 , */
/* IDL: 	SAMR_FIELD_BAD_PWD_COUNT =  0x00004000 , */
/* IDL: 	SAMR_FIELD_NUM_LOGONS =  0x00008000 , */
/* IDL: 	SAMR_FIELD_ALLOW_PWD_CHANGE =  0x00010000 , */
/* IDL: 	SAMR_FIELD_FORCE_PWD_CHANGE =  0x00020000 , */
/* IDL: 	SAMR_FIELD_LAST_PWD_CHANGE =  0x00040000 , */
/* IDL: 	SAMR_FIELD_ACCT_EXPIRY =  0x00080000 , */
/* IDL: 	SAMR_FIELD_ACCT_FLAGS =  0x00100000 , */
/* IDL: 	SAMR_FIELD_PARAMETERS =  0x00200000 , */
/* IDL: 	SAMR_FIELD_COUNTRY_CODE =  0x00400000 , */
/* IDL: 	SAMR_FIELD_CODE_PAGE =  0x00800000 , */
/* IDL: 	SAMR_FIELD_NT_PASSWORD_PRESENT =  0x01000000 , */
/* IDL: 	SAMR_FIELD_LM_PASSWORD_PRESENT =  0x02000000 , */
/* IDL: 	SAMR_FIELD_PRIVATE_DATA =  0x04000000 , */
/* IDL: 	SAMR_FIELD_EXPIRED_FLAG =  0x08000000 , */
/* IDL: 	SAMR_FIELD_SEC_DESC =  0x10000000 , */
/* IDL: 	SAMR_FIELD_OWF_PWD =  0x20000000 , */
/* IDL: } */

unsigned
samr_dissect_bitmap_FieldsPresent(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item;
	static int * const samr_samr_FieldsPresent_fields[] = {
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCOUNT_NAME,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_FULL_NAME,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_RID,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_PRIMARY_GID,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_DESCRIPTION,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_COMMENT,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_HOME_DIRECTORY,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_HOME_DRIVE,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_LOGON_SCRIPT,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_PROFILE_PATH,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_WORKSTATIONS,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_LOGON,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_LOGOFF,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_LOGON_HOURS,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_BAD_PWD_COUNT,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_NUM_LOGONS,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_ALLOW_PWD_CHANGE,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_FORCE_PWD_CHANGE,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_PWD_CHANGE,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCT_EXPIRY,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCT_FLAGS,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_PARAMETERS,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_COUNTRY_CODE,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_CODE_PAGE,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_NT_PASSWORD_PRESENT,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_LM_PASSWORD_PRESENT,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_PRIVATE_DATA,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_EXPIRED_FLAG,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_SEC_DESC,
		&hf_samr_samr_FieldsPresent_SAMR_FIELD_OWF_PWD,
		NULL
	};
	uint32_t flags;
	ALIGN_TO_4_BYTES;

	item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
				ett_samr_samr_FieldsPresent, samr_samr_FieldsPresent_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);

	offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);

	if (!flags)
		proto_item_append_text(item, ": (No values set)");

	if (flags & (~0x3fffffff)) {
		flags &= (~0x3fffffff);
		proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	NTTIME last_logon; */
/* IDL: 	NTTIME last_logoff; */
/* IDL: 	NTTIME last_password_change; */
/* IDL: 	NTTIME acct_expiry; */
/* IDL: 	NTTIME allow_password_change; */
/* IDL: 	NTTIME force_password_change; */
/* IDL: 	lsa_String account_name; */
/* IDL: 	lsa_String full_name; */
/* IDL: 	lsa_String home_directory; */
/* IDL: 	lsa_String home_drive; */
/* IDL: 	lsa_String logon_script; */
/* IDL: 	lsa_String profile_path; */
/* IDL: 	lsa_String description; */
/* IDL: 	lsa_String workstations; */
/* IDL: 	lsa_String comment; */
/* IDL: 	lsa_BinaryString parameters; */
/* IDL: 	lsa_BinaryString lm_owf_password; */
/* IDL: 	lsa_BinaryString nt_owf_password; */
/* IDL: 	lsa_String private_data; */
/* IDL: 	uint32 buf_count; */
/* IDL: 	[size_is(buf_count)] [unique(1)] uint8 *buffer; */
/* IDL: 	uint32 rid; */
/* IDL: 	uint32 primary_gid; */
/* IDL: 	samr_AcctFlags acct_flags; */
/* IDL: 	samr_FieldsPresent fields_present; */
/* IDL: 	samr_LogonHours logon_hours; */
/* IDL: 	uint16 bad_password_count; */
/* IDL: 	uint16 logon_count; */
/* IDL: 	uint16 country_code; */
/* IDL: 	uint16 code_page; */
/* IDL: 	uint8 lm_password_set; */
/* IDL: 	uint8 nt_password_set; */
/* IDL: 	uint8 password_expired; */
/* IDL: 	uint8 private_data_sensitive; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo21_last_logon(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_last_logon);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_last_logoff(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_last_logoff);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_last_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_last_password_change);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_acct_expiry(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_acct_expiry);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_allow_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_allow_password_change);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_force_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_force_password_change);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_account_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_full_name);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_home_directory(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_home_directory);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_home_drive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_home_drive);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_logon_script(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_logon_script);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_profile_path(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_profile_path);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_description);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_workstations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_workstations);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_comment(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_comment);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_parameters(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=lsarpc_dissect_struct_lsa_BinaryString(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_parameters, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_lm_owf_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=lsarpc_dissect_struct_lsa_BinaryString(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_lm_owf_password, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_nt_owf_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=lsarpc_dissect_struct_lsa_BinaryString(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_nt_owf_password, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_private_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_UserInfo21_private_data);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_buf_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_buf_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_buffer(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_UserInfo21_buffer_, NDR_POINTER_UNIQUE, "Pointer to Buffer (uint8)",hf_samr_samr_UserInfo21_buffer);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_buffer_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_UserInfo21_buffer__);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_buffer__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_buffer, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_primary_gid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_primary_gid, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AcctFlags(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_acct_flags, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_fields_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_FieldsPresent(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_fields_present, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_logon_hours(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_LogonHours(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo21_logon_hours,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_bad_password_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_bad_password_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_logon_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_logon_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_country_code(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_country_code, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_code_page(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_code_page, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_lm_password_set(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_lm_password_set, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_nt_password_set(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_nt_password_set, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_password_expired, 0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo21_private_data_sensitive(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo21_private_data_sensitive, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo21(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo21);
	}

	offset = samr_dissect_element_UserInfo21_last_logon(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_last_logoff(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_last_password_change(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_acct_expiry(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_allow_password_change(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_force_password_change(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_account_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_full_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_home_directory(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_home_drive(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_logon_script(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_profile_path(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_description(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_workstations(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_comment(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_parameters(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_lm_owf_password(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_nt_owf_password(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_private_data(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_buf_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_buffer(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_rid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_primary_gid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_acct_flags(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_fields_present(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_logon_hours(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_bad_password_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_logon_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_country_code(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_code_page(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_lm_password_set(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_nt_password_set(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_password_expired(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo21_private_data_sensitive(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint8 data[516]; */
/* IDL: } */

static unsigned
samr_dissect_element_CryptPassword_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	int i;
	for (i = 0; i < 516; i++)
		offset = samr_dissect_element_CryptPassword_data_(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

static unsigned
samr_dissect_element_CryptPassword_data_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_CryptPassword_data, 0);

	return offset;
}

unsigned
samr_dissect_struct_CryptPassword(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_CryptPassword);
	}

	offset = samr_dissect_element_CryptPassword_data(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_UserInfo21 info; */
/* IDL: 	samr_CryptPassword password; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo23_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo21(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo23_info,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo23_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPassword(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo23_password,0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo23(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo23);
	}

	offset = samr_dissect_element_UserInfo23_info(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo23_password(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_CryptPassword password; */
/* IDL: 	uint8 password_expired; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo24_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPassword(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo24_password,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo24_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo24_password_expired, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo24(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo24);
	}

	offset = samr_dissect_element_UserInfo24_password(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo24_password_expired(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	return offset;
}


/* IDL: struct { */
/* IDL: 	uint8 data[532]; */
/* IDL: } */

static unsigned
samr_dissect_element_CryptPasswordEx_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	int i;
	for (i = 0; i < 532; i++)
		offset = samr_dissect_element_CryptPasswordEx_data_(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

static unsigned
samr_dissect_element_CryptPasswordEx_data_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_CryptPasswordEx_data, 0);

	return offset;
}

unsigned
samr_dissect_struct_CryptPasswordEx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_CryptPasswordEx);
	}

	offset = samr_dissect_element_CryptPasswordEx_data(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_UserInfo21 info; */
/* IDL: 	samr_CryptPasswordEx password; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo25_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo21(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo25_info,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo25_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPasswordEx(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo25_password,0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo25(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo25);
	}

	offset = samr_dissect_element_UserInfo25_info(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo25_password(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_CryptPasswordEx password; */
/* IDL: 	uint8 password_expired; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo26_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPasswordEx(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo26_password,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo26_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo26_password_expired, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo26(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo26);
	}

	offset = samr_dissect_element_UserInfo26_password(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo26_password_expired(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	return offset;
}


/* IDL: struct { */
/* IDL: 	uint8 auth_data[64]; */
/* IDL: 	uint8 salt[16]; */
/* IDL: 	uint32 cipher_len; */
/* IDL: 	[size_is(cipher_len)] [unique(1)] uint8 *cipher; */
/* IDL: 	hyper PBKDF2Iterations; */
/* IDL: } */

static unsigned
samr_dissect_element_EncryptedPasswordAES_auth_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	int i;
	for (i = 0; i < 64; i++)
		offset = samr_dissect_element_EncryptedPasswordAES_auth_data_(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

static unsigned
samr_dissect_element_EncryptedPasswordAES_auth_data_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EncryptedPasswordAES_auth_data, 0);

	return offset;
}

static unsigned
samr_dissect_element_EncryptedPasswordAES_salt(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	int i;
	for (i = 0; i < 16; i++)
		offset = samr_dissect_element_EncryptedPasswordAES_salt_(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

static unsigned
samr_dissect_element_EncryptedPasswordAES_salt_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EncryptedPasswordAES_salt, 0);

	return offset;
}

static unsigned
samr_dissect_element_EncryptedPasswordAES_cipher_len(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EncryptedPasswordAES_cipher_len, 0);

	return offset;
}

static unsigned
samr_dissect_element_EncryptedPasswordAES_cipher(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EncryptedPasswordAES_cipher_, NDR_POINTER_UNIQUE, "Pointer to Cipher (uint8)",hf_samr_samr_EncryptedPasswordAES_cipher);

	return offset;
}

static unsigned
samr_dissect_element_EncryptedPasswordAES_cipher_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EncryptedPasswordAES_cipher__);

	return offset;
}

static unsigned
samr_dissect_element_EncryptedPasswordAES_cipher__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EncryptedPasswordAES_cipher, 0);

	return offset;
}

static unsigned
samr_dissect_element_EncryptedPasswordAES_PBKDF2Iterations(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EncryptedPasswordAES_PBKDF2Iterations, NULL);

	return offset;
}

unsigned
samr_dissect_struct_EncryptedPasswordAES(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_EncryptedPasswordAES);
	}

	offset = samr_dissect_element_EncryptedPasswordAES_auth_data(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_EncryptedPasswordAES_salt(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_EncryptedPasswordAES_cipher_len(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_EncryptedPasswordAES_cipher(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_EncryptedPasswordAES_PBKDF2Iterations(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_EncryptedPasswordAES password; */
/* IDL: 	uint8 password_expired; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo31_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_EncryptedPasswordAES(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo31_password,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo31_password_expired(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_UserInfo31_password_expired, 0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo31(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo31);
	}

	offset = samr_dissect_element_UserInfo31_password(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo31_password_expired(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_UserInfo21 info; */
/* IDL: 	samr_EncryptedPasswordAES password; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo32_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo21(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo32_info,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo32_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_EncryptedPasswordAES(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo32_password,0);

	return offset;
}

unsigned
samr_dissect_struct_UserInfo32(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_UserInfo32);
	}

	offset = samr_dissect_element_UserInfo32_info(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_UserInfo32_password(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: [switch_type(uint16)] union { */
/* IDL: [case(1)] [case(1)] samr_UserInfo1 info1; */
/* IDL: [case(2)] [case(2)] samr_UserInfo2 info2; */
/* IDL: [case(3)] [case(3)] samr_UserInfo3 info3; */
/* IDL: [case(4)] [case(4)] samr_UserInfo4 info4; */
/* IDL: [case(5)] [case(5)] samr_UserInfo5 info5; */
/* IDL: [case(6)] [case(6)] samr_UserInfo6 info6; */
/* IDL: [case(7)] [case(7)] samr_UserInfo7 info7; */
/* IDL: [case(8)] [case(8)] samr_UserInfo8 info8; */
/* IDL: [case(9)] [case(9)] samr_UserInfo9 info9; */
/* IDL: [case(10)] [case(10)] samr_UserInfo10 info10; */
/* IDL: [case(11)] [case(11)] samr_UserInfo11 info11; */
/* IDL: [case(12)] [case(12)] samr_UserInfo12 info12; */
/* IDL: [case(13)] [case(13)] samr_UserInfo13 info13; */
/* IDL: [case(14)] [case(14)] samr_UserInfo14 info14; */
/* IDL: [case(16)] [case(16)] samr_UserInfo16 info16; */
/* IDL: [case(17)] [case(17)] samr_UserInfo17 info17; */
/* IDL: [case(18)] [case(18)] samr_UserInfo18 info18; */
/* IDL: [case(20)] [case(20)] samr_UserInfo20 info20; */
/* IDL: [case(21)] [case(21)] samr_UserInfo21 info21; */
/* IDL: [case(23)] [case(23)] samr_UserInfo23 info23; */
/* IDL: [case(24)] [case(24)] samr_UserInfo24 info24; */
/* IDL: [case(25)] [case(25)] samr_UserInfo25 info25; */
/* IDL: [case(26)] [case(26)] samr_UserInfo26 info26; */
/* IDL: [case(31)] [case(31)] samr_UserInfo31 info31; */
/* IDL: [case(32)] [case(32)] samr_UserInfo32 info32; */
/* IDL: } */

static unsigned
samr_dissect_element_UserInfo_info1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo1(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info1,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo2(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info2,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo3(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info3,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info4(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo4(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info4,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info5(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo5(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info5,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info6(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo6(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info6,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info7(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo7(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info7,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info8(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo8(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info8,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info9(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo9(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info9,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info10(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo10(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info10,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info11(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo11(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info11,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info12(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo12(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info12,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info13(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo13(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info13,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info14(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo14(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info14,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info16(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo16(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info16,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info17(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo17(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info17,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info18(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo18(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info18,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info20(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo20(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info20,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info21(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo21(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info21,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info23(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo23(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info23,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info24(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo24(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info24,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info25(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo25(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info25,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info26(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo26(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info26,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info31(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo31(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info31,0);

	return offset;
}

static unsigned
samr_dissect_element_UserInfo_info32(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_UserInfo32(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_UserInfo_info32,0);

	return offset;
}

static unsigned
samr_dissect_UserInfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;
	uint16_t level;

	old_offset = offset;
	if (parent_tree) {
		tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_UserInfo, &item, "samr_UserInfo");
	}

	offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
	ALIGN_TO_8_BYTES;

	switch(level) {
		case 1:
			offset = samr_dissect_element_UserInfo_info1(tvb, offset, pinfo, tree, di, drep);
		break;

		case 2:
			offset = samr_dissect_element_UserInfo_info2(tvb, offset, pinfo, tree, di, drep);
		break;

		case 3:
			offset = samr_dissect_element_UserInfo_info3(tvb, offset, pinfo, tree, di, drep);
		break;

		case 4:
			offset = samr_dissect_element_UserInfo_info4(tvb, offset, pinfo, tree, di, drep);
		break;

		case 5:
			offset = samr_dissect_element_UserInfo_info5(tvb, offset, pinfo, tree, di, drep);
		break;

		case 6:
			offset = samr_dissect_element_UserInfo_info6(tvb, offset, pinfo, tree, di, drep);
		break;

		case 7:
			offset = samr_dissect_element_UserInfo_info7(tvb, offset, pinfo, tree, di, drep);
		break;

		case 8:
			offset = samr_dissect_element_UserInfo_info8(tvb, offset, pinfo, tree, di, drep);
		break;

		case 9:
			offset = samr_dissect_element_UserInfo_info9(tvb, offset, pinfo, tree, di, drep);
		break;

		case 10:
			offset = samr_dissect_element_UserInfo_info10(tvb, offset, pinfo, tree, di, drep);
		break;

		case 11:
			offset = samr_dissect_element_UserInfo_info11(tvb, offset, pinfo, tree, di, drep);
		break;

		case 12:
			offset = samr_dissect_element_UserInfo_info12(tvb, offset, pinfo, tree, di, drep);
		break;

		case 13:
			offset = samr_dissect_element_UserInfo_info13(tvb, offset, pinfo, tree, di, drep);
		break;

		case 14:
			offset = samr_dissect_element_UserInfo_info14(tvb, offset, pinfo, tree, di, drep);
		break;

		case 16:
			offset = samr_dissect_element_UserInfo_info16(tvb, offset, pinfo, tree, di, drep);
		break;

		case 17:
			offset = samr_dissect_element_UserInfo_info17(tvb, offset, pinfo, tree, di, drep);
		break;

		case 18:
			offset = samr_dissect_element_UserInfo_info18(tvb, offset, pinfo, tree, di, drep);
		break;

		case 20:
			offset = samr_dissect_element_UserInfo_info20(tvb, offset, pinfo, tree, di, drep);
		break;

		case 21:
			offset = samr_dissect_element_UserInfo_info21(tvb, offset, pinfo, tree, di, drep);
		break;

		case 23:
			offset = samr_dissect_element_UserInfo_info23(tvb, offset, pinfo, tree, di, drep);
		break;

		case 24:
			offset = samr_dissect_element_UserInfo_info24(tvb, offset, pinfo, tree, di, drep);
		break;

		case 25:
			offset = samr_dissect_element_UserInfo_info25(tvb, offset, pinfo, tree, di, drep);
		break;

		case 26:
			offset = samr_dissect_element_UserInfo_info26(tvb, offset, pinfo, tree, di, drep);
		break;

		case 31:
			offset = samr_dissect_element_UserInfo_info31(tvb, offset, pinfo, tree, di, drep);
		break;

		case 32:
			offset = samr_dissect_element_UserInfo_info32(tvb, offset, pinfo, tree, di, drep);
		break;
	}
	proto_item_set_len(item, offset-old_offset);


	return offset;
}

/* IDL: struct { */
/* IDL: 	uint32 rid; */
/* IDL: 	samr_GroupAttrs attributes; */
/* IDL: } */

static unsigned
samr_dissect_element_RidWithAttribute_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_RidWithAttribute_attributes(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_GroupAttrs(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_RidWithAttribute_attributes, 0);

	return offset;
}

unsigned
samr_dissect_struct_RidWithAttribute(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_RidWithAttribute);
	}

	offset = samr_dissect_element_RidWithAttribute_rid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_RidWithAttribute_attributes(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] samr_RidWithAttribute *rids; */
/* IDL: } */

static unsigned
samr_dissect_element_RidWithAttributeArray_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_RidWithAttributeArray_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_RidWithAttributeArray_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidWithAttributeArray_rids_, NDR_POINTER_UNIQUE, "Pointer to Rids (samr_RidWithAttribute)",hf_samr_samr_RidWithAttributeArray_rids);

	return offset;
}

static unsigned
samr_dissect_element_RidWithAttributeArray_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidWithAttributeArray_rids__);

	return offset;
}

static unsigned
samr_dissect_element_RidWithAttributeArray_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_RidWithAttribute(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_RidWithAttributeArray_rids,0);

	return offset;
}

unsigned
samr_dissect_struct_RidWithAttributeArray(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_RidWithAttributeArray);
	}

	offset = samr_dissect_element_RidWithAttributeArray_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_RidWithAttributeArray_rids(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 idx; */
/* IDL: 	uint32 rid; */
/* IDL: 	samr_AcctFlags acct_flags; */
/* IDL: 	lsa_String account_name; */
/* IDL: 	lsa_String description; */
/* IDL: 	lsa_String full_name; */
/* IDL: } */

static unsigned
samr_dissect_element_DispEntryGeneral_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispEntryGeneral_idx, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryGeneral_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryGeneral_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AcctFlags(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispEntryGeneral_acct_flags, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryGeneral_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DispEntryGeneral_account_name);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryGeneral_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DispEntryGeneral_description);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryGeneral_full_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DispEntryGeneral_full_name);

	return offset;
}

unsigned
samr_dissect_struct_DispEntryGeneral(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DispEntryGeneral);
	}

	offset = samr_dissect_element_DispEntryGeneral_idx(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryGeneral_rid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryGeneral_acct_flags(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryGeneral_account_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryGeneral_description(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryGeneral_full_name(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] samr_DispEntryGeneral *entries; */
/* IDL: } */

static unsigned
samr_dissect_element_DispInfoGeneral_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispInfoGeneral_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoGeneral_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoGeneral_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (samr_DispEntryGeneral)",hf_samr_samr_DispInfoGeneral_entries);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoGeneral_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoGeneral_entries__);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoGeneral_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispEntryGeneral(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfoGeneral_entries,0);

	return offset;
}

unsigned
samr_dissect_struct_DispInfoGeneral(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DispInfoGeneral);
	}

	offset = samr_dissect_element_DispInfoGeneral_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispInfoGeneral_entries(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 idx; */
/* IDL: 	uint32 rid; */
/* IDL: 	samr_AcctFlags acct_flags; */
/* IDL: 	lsa_String account_name; */
/* IDL: 	lsa_String description; */
/* IDL: } */

static unsigned
samr_dissect_element_DispEntryFull_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispEntryFull_idx, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryFull_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryFull_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AcctFlags(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispEntryFull_acct_flags, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryFull_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DispEntryFull_account_name);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryFull_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DispEntryFull_description);

	return offset;
}

unsigned
samr_dissect_struct_DispEntryFull(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DispEntryFull);
	}

	offset = samr_dissect_element_DispEntryFull_idx(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryFull_rid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryFull_acct_flags(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryFull_account_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryFull_description(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] samr_DispEntryFull *entries; */
/* IDL: } */

static unsigned
samr_dissect_element_DispInfoFull_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispInfoFull_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoFull_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoFull_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (samr_DispEntryFull)",hf_samr_samr_DispInfoFull_entries);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoFull_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoFull_entries__);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoFull_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispEntryFull(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfoFull_entries,0);

	return offset;
}

unsigned
samr_dissect_struct_DispInfoFull(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DispInfoFull);
	}

	offset = samr_dissect_element_DispInfoFull_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispInfoFull_entries(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 idx; */
/* IDL: 	uint32 rid; */
/* IDL: 	samr_GroupAttrs acct_flags; */
/* IDL: 	lsa_String account_name; */
/* IDL: 	lsa_String description; */
/* IDL: } */

static unsigned
samr_dissect_element_DispEntryFullGroup_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispEntryFullGroup_idx, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryFullGroup_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryFullGroup_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_GroupAttrs(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispEntryFullGroup_acct_flags, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryFullGroup_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DispEntryFullGroup_account_name);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryFullGroup_description(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DispEntryFullGroup_description);

	return offset;
}

unsigned
samr_dissect_struct_DispEntryFullGroup(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DispEntryFullGroup);
	}

	offset = samr_dissect_element_DispEntryFullGroup_idx(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryFullGroup_rid(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryFullGroup_acct_flags(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryFullGroup_account_name(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryFullGroup_description(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] samr_DispEntryFullGroup *entries; */
/* IDL: } */

static unsigned
samr_dissect_element_DispInfoFullGroups_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispInfoFullGroups_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoFullGroups_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoFullGroups_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (samr_DispEntryFullGroup)",hf_samr_samr_DispInfoFullGroups_entries);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoFullGroups_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoFullGroups_entries__);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoFullGroups_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispEntryFullGroup(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfoFullGroups_entries,0);

	return offset;
}

unsigned
samr_dissect_struct_DispInfoFullGroups(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DispInfoFullGroups);
	}

	offset = samr_dissect_element_DispInfoFullGroups_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispInfoFullGroups_entries(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 idx; */
/* IDL: 	lsa_AsciiStringLarge account_name; */
/* IDL: } */

static unsigned
samr_dissect_element_DispEntryAscii_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispEntryAscii_idx, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispEntryAscii_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_lsa_AsciiString(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_DispEntryAscii_account_name);

	return offset;
}

unsigned
samr_dissect_struct_DispEntryAscii(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DispEntryAscii);
	}

	offset = samr_dissect_element_DispEntryAscii_idx(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispEntryAscii_account_name(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 count; */
/* IDL: 	[size_is(count)] [unique(1)] samr_DispEntryAscii *entries; */
/* IDL: } */

static unsigned
samr_dissect_element_DispInfoAscii_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_DispInfoAscii_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoAscii_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoAscii_entries_, NDR_POINTER_UNIQUE, "Pointer to Entries (samr_DispEntryAscii)",hf_samr_samr_DispInfoAscii_entries);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoAscii_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DispInfoAscii_entries__);

	return offset;
}

static unsigned
samr_dissect_element_DispInfoAscii_entries__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispEntryAscii(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfoAscii_entries,0);

	return offset;
}

unsigned
samr_dissect_struct_DispInfoAscii(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_DispInfoAscii);
	}

	offset = samr_dissect_element_DispInfoAscii_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_DispInfoAscii_entries(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	SAMR_DOMAIN_DISPLAY_USER=1, */
/* IDL: 	SAMR_DOMAIN_DISPLAY_MACHINE=2, */
/* IDL: 	SAMR_DOMAIN_DISPLAY_GROUP=3, */
/* IDL: 	SAMR_DOMAIN_DISPLAY_OEM_USER=4, */
/* IDL: 	SAMR_DOMAIN_DISPLAY_OEM_GROUP=5, */
/* IDL: } */

unsigned
samr_dissect_enum_DomainDisplayInformation(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: [switch_type(uint16)] union { */
/* IDL: [case(SAMR_DOMAIN_DISPLAY_USER)] [case(SAMR_DOMAIN_DISPLAY_USER)] samr_DispInfoGeneral info1; */
/* IDL: [case(SAMR_DOMAIN_DISPLAY_MACHINE)] [case(SAMR_DOMAIN_DISPLAY_MACHINE)] samr_DispInfoFull info2; */
/* IDL: [case(SAMR_DOMAIN_DISPLAY_GROUP)] [case(SAMR_DOMAIN_DISPLAY_GROUP)] samr_DispInfoFullGroups info3; */
/* IDL: [case(SAMR_DOMAIN_DISPLAY_OEM_USER)] [case(SAMR_DOMAIN_DISPLAY_OEM_USER)] samr_DispInfoAscii info4; */
/* IDL: [case(SAMR_DOMAIN_DISPLAY_OEM_GROUP)] [case(SAMR_DOMAIN_DISPLAY_OEM_GROUP)] samr_DispInfoAscii info5; */
/* IDL: } */

static unsigned
samr_dissect_element_DispInfo_info1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispInfoGeneral(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfo_info1,0);

	return offset;
}

static unsigned
samr_dissect_element_DispInfo_info2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispInfoFull(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfo_info2,0);

	return offset;
}

static unsigned
samr_dissect_element_DispInfo_info3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispInfoFullGroups(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfo_info3,0);

	return offset;
}

static unsigned
samr_dissect_element_DispInfo_info4(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispInfoAscii(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfo_info4,0);

	return offset;
}

static unsigned
samr_dissect_element_DispInfo_info5(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DispInfoAscii(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_DispInfo_info5,0);

	return offset;
}

static unsigned
samr_dissect_DispInfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;
	uint16_t level;

	old_offset = offset;
	if (parent_tree) {
		tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_DispInfo, &item, "samr_DispInfo");
	}

	offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
	ALIGN_TO_5_BYTES;

	switch(level) {
		case SAMR_DOMAIN_DISPLAY_USER:
			offset = samr_dissect_element_DispInfo_info1(tvb, offset, pinfo, tree, di, drep);
		break;

		case SAMR_DOMAIN_DISPLAY_MACHINE:
			offset = samr_dissect_element_DispInfo_info2(tvb, offset, pinfo, tree, di, drep);
		break;

		case SAMR_DOMAIN_DISPLAY_GROUP:
			offset = samr_dissect_element_DispInfo_info3(tvb, offset, pinfo, tree, di, drep);
		break;

		case SAMR_DOMAIN_DISPLAY_OEM_USER:
			offset = samr_dissect_element_DispInfo_info4(tvb, offset, pinfo, tree, di, drep);
		break;

		case SAMR_DOMAIN_DISPLAY_OEM_GROUP:
			offset = samr_dissect_element_DispInfo_info5(tvb, offset, pinfo, tree, di, drep);
		break;
	}
	proto_item_set_len(item, offset-old_offset);


	return offset;
}

/* IDL: struct { */
/* IDL: 	uint16 min_password_length; */
/* IDL: 	samr_PasswordProperties password_properties; */
/* IDL: } */

static unsigned
samr_dissect_element_PwInfo_min_password_length(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_PwInfo_min_password_length, 0);

	return offset;
}

static unsigned
samr_dissect_element_PwInfo_password_properties(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_PasswordProperties(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_PwInfo_password_properties, 0);

	return offset;
}

unsigned
samr_dissect_struct_PwInfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_PwInfo);
	}

	offset = samr_dissect_element_PwInfo_min_password_length(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_PwInfo_password_properties(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	SAMR_CONNECT_PRE_W2K=1, */
/* IDL: 	SAMR_CONNECT_W2K=2, */
/* IDL: 	SAMR_CONNECT_AFTER_W2K=3, */
/* IDL: } */

unsigned
samr_dissect_enum_ConnectVersion(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: enum { */
/* IDL: 	SAM_PWD_CHANGE_NO_ERROR=0, */
/* IDL: 	SAM_PWD_CHANGE_PASSWORD_TOO_SHORT=1, */
/* IDL: 	SAM_PWD_CHANGE_PWD_IN_HISTORY=2, */
/* IDL: 	SAM_PWD_CHANGE_USERNAME_IN_PASSWORD=3, */
/* IDL: 	SAM_PWD_CHANGE_FULLNAME_IN_PASSWORD=4, */
/* IDL: 	SAM_PWD_CHANGE_NOT_COMPLEX=5, */
/* IDL: 	SAM_PWD_CHANGE_MACHINE_NOT_DEFAULT=6, */
/* IDL: 	SAM_PWD_CHANGE_FAILED_BY_FILTER=7, */
/* IDL: 	SAM_PWD_CHANGE_PASSWORD_TOO_LONG=8, */
/* IDL: } */

unsigned
samr_dissect_enum_samPwdChangeReason(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: struct { */
/* IDL: 	samPwdChangeReason extendedFailureReason; */
/* IDL: 	lsa_String filterModuleName; */
/* IDL: } */

static unsigned
samr_dissect_element_userPwdChangeFailureInformation_extendedFailureReason(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_samPwdChangeReason(tvb, offset, pinfo, tree, di, drep, hf_samr_userPwdChangeFailureInformation_extendedFailureReason, 0);

	return offset;
}

static unsigned
samr_dissect_element_userPwdChangeFailureInformation_filterModuleName(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_userPwdChangeFailureInformation_filterModuleName);

	return offset;
}

unsigned
samr_dissect_struct_userPwdChangeFailureInformation(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_userPwdChangeFailureInformation);
	}

	offset = samr_dissect_element_userPwdChangeFailureInformation_extendedFailureReason(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_userPwdChangeFailureInformation_filterModuleName(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	SAMR_CONNECT_FEATURE_RID_ONLY=0x00000001, */
/* IDL: 	SAMR_CONNECT_FEATURE_RESRVED1=0x00000002, */
/* IDL: 	SAMR_CONNECT_FEATURE_RESRVED2=0x00000004, */
/* IDL: 	SAMR_CONNECT_FEATURE_USE_AES=0x00000010, */
/* IDL: } */

unsigned
samr_dissect_enum_SupportedFeatures(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_ConnectVersion client_version; */
/* IDL: 	samr_SupportedFeatures supported_features; */
/* IDL: } */

static unsigned
samr_dissect_element_ConnectInfo1_client_version(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_ConnectVersion(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ConnectInfo1_client_version, 0);

	return offset;
}

static unsigned
samr_dissect_element_ConnectInfo1_supported_features(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_SupportedFeatures(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ConnectInfo1_supported_features, 0);

	return offset;
}

unsigned
samr_dissect_struct_ConnectInfo1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_4_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_ConnectInfo1);
	}

	offset = samr_dissect_element_ConnectInfo1_client_version(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ConnectInfo1_supported_features(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_4_BYTES;
	}

	return offset;
}


/* IDL: union { */
/* IDL: [case(1)] [case(1)] samr_ConnectInfo1 info1; */
/* IDL: } */

static unsigned
samr_dissect_element_ConnectInfo_info1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ConnectInfo1(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ConnectInfo_info1,0);

	return offset;
}

static unsigned
samr_dissect_ConnectInfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;
	uint32_t level;

	old_offset = offset;
	if (parent_tree) {
		tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_ConnectInfo, &item, "samr_ConnectInfo");
	}

	offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
	ALIGN_TO_4_BYTES;

	switch(level) {
		case 1:
			offset = samr_dissect_element_ConnectInfo_info1(tvb, offset, pinfo, tree, di, drep);
		break;
	}
	proto_item_set_len(item, offset-old_offset);


	return offset;
}

/* IDL: bitmap { */
/* IDL: 	SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET =  0x00000001 , */
/* IDL: 	SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME =  0x00000002 , */
/* IDL: 	SAMR_VALIDATE_FIELD_LOCKOUT_TIME =  0x00000004 , */
/* IDL: 	SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT =  0x00000008 , */
/* IDL: 	SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH =  0x00000010 , */
/* IDL: 	SAMR_VALIDATE_FIELD_PASSWORD_HISTORY =  0x00000020 , */
/* IDL: } */

unsigned
samr_dissect_bitmap_ValidateFieldsPresent(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item;
	static int * const samr_samr_ValidateFieldsPresent_fields[] = {
		&hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET,
		&hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME,
		&hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_LOCKOUT_TIME,
		&hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT,
		&hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH,
		&hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY,
		NULL
	};
	uint32_t flags;
	ALIGN_TO_4_BYTES;

	item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
				ett_samr_samr_ValidateFieldsPresent, samr_samr_ValidateFieldsPresent_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);

	offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);

	if (!flags)
		proto_item_append_text(item, ": (No values set)");

	if (flags & (~0x0000003f)) {
		flags &= (~0x0000003f);
		proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
	}

	return offset;
}


/* IDL: enum { */
/* IDL: 	NetValidateAuthentication=1, */
/* IDL: 	NetValidatePasswordChange=2, */
/* IDL: 	NetValidatePasswordReset=3, */
/* IDL: } */

unsigned
samr_dissect_enum_ValidatePasswordLevel(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: enum { */
/* IDL: 	SAMR_VALIDATION_STATUS_SUCCESS=0, */
/* IDL: 	SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE=1, */
/* IDL: 	SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT=2, */
/* IDL: 	SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED=3, */
/* IDL: 	SAMR_VALIDATION_STATUS_BAD_PASSWORD=4, */
/* IDL: 	SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT=5, */
/* IDL: 	SAMR_VALIDATION_STATUS_PWD_TOO_SHORT=6, */
/* IDL: 	SAMR_VALIDATION_STATUS_PWD_TOO_LONG=7, */
/* IDL: 	SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH=8, */
/* IDL: 	SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT=9, */
/* IDL: 	SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR=10, */
/* IDL: } */

unsigned
samr_dissect_enum_ValidationStatus(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
{
	uint32_t parameter=0;
	if (param) {
		parameter = *param;
	}
	offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
	if (param) {
		*param = parameter;
	}
	return offset;
}


/* IDL: struct { */
/* IDL: 	uint32 length; */
/* IDL: 	[size_is(length)] [unique(1)] uint8 *data; */
/* IDL: } */

static unsigned
samr_dissect_element_ValidationBlob_length(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidationBlob_length, 0);

	return offset;
}

static unsigned
samr_dissect_element_ValidationBlob_data(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidationBlob_data_, NDR_POINTER_UNIQUE, "Pointer to Data (uint8)",hf_samr_samr_ValidationBlob_data);

	return offset;
}

static unsigned
samr_dissect_element_ValidationBlob_data_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidationBlob_data__);

	return offset;
}

static unsigned
samr_dissect_element_ValidationBlob_data__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidationBlob_data, 0);

	return offset;
}

unsigned
samr_dissect_struct_ValidationBlob(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_5_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_ValidationBlob);
	}

	offset = samr_dissect_element_ValidationBlob_length(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidationBlob_data(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_5_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_ValidateFieldsPresent fields_present; */
/* IDL: 	NTTIME_hyper last_password_change; */
/* IDL: 	NTTIME_hyper bad_password_time; */
/* IDL: 	NTTIME_hyper lockout_time; */
/* IDL: 	uint32 bad_pwd_count; */
/* IDL: 	uint32 pwd_history_len; */
/* IDL: 	[size_is(pwd_history_len)] [unique(1)] samr_ValidationBlob *pwd_history; */
/* IDL: } */

static unsigned
samr_dissect_element_ValidatePasswordInfo_fields_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_ValidateFieldsPresent(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordInfo_fields_present, 0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordInfo_last_password_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME_hyper(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordInfo_last_password_change);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordInfo_bad_password_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME_hyper(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordInfo_bad_password_time);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordInfo_lockout_time(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_nt_NTTIME_hyper(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordInfo_lockout_time);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordInfo_bad_pwd_count(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordInfo_bad_pwd_count, 0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordInfo_pwd_history_len(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordInfo_pwd_history_len, 0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordInfo_pwd_history(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidatePasswordInfo_pwd_history_, NDR_POINTER_UNIQUE, "Pointer to Pwd History (samr_ValidationBlob)",hf_samr_samr_ValidatePasswordInfo_pwd_history);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordInfo_pwd_history_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidatePasswordInfo_pwd_history__);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordInfo_pwd_history__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidationBlob(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordInfo_pwd_history,0);

	return offset;
}

unsigned
samr_dissect_struct_ValidatePasswordInfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_ValidatePasswordInfo);
	}

	offset = samr_dissect_element_ValidatePasswordInfo_fields_present(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordInfo_last_password_change(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordInfo_bad_password_time(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordInfo_lockout_time(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordInfo_bad_pwd_count(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordInfo_pwd_history_len(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordInfo_pwd_history(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_ValidatePasswordInfo info; */
/* IDL: 	samr_ValidationStatus status; */
/* IDL: } */

static unsigned
samr_dissect_element_ValidatePasswordRepCtr_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordInfo(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordRepCtr_info,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordRepCtr_status(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_ValidationStatus(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordRepCtr_status, 0);

	return offset;
}

unsigned
samr_dissect_struct_ValidatePasswordRepCtr(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_ValidatePasswordRepCtr);
	}

	offset = samr_dissect_element_ValidatePasswordRepCtr_info(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordRepCtr_status(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: [switch_type(uint16)] union { */
/* IDL: [case(1)] [case(1)] samr_ValidatePasswordRepCtr ctr1; */
/* IDL: [case(2)] [case(2)] samr_ValidatePasswordRepCtr ctr2; */
/* IDL: [case(3)] [case(3)] samr_ValidatePasswordRepCtr ctr3; */
/* IDL: } */

static unsigned
samr_dissect_element_ValidatePasswordRep_ctr1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordRepCtr(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordRep_ctr1,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordRep_ctr2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordRepCtr(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordRep_ctr2,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordRep_ctr3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordRepCtr(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordRep_ctr3,0);

	return offset;
}

static unsigned
samr_dissect_ValidatePasswordRep(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;
	uint16_t level;

	old_offset = offset;
	if (parent_tree) {
		tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_ValidatePasswordRep, &item, "samr_ValidatePasswordRep");
	}

	offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
	ALIGN_TO_8_BYTES;

	switch(level) {
		case 1:
			offset = samr_dissect_element_ValidatePasswordRep_ctr1(tvb, offset, pinfo, tree, di, drep);
		break;

		case 2:
			offset = samr_dissect_element_ValidatePasswordRep_ctr2(tvb, offset, pinfo, tree, di, drep);
		break;

		case 3:
			offset = samr_dissect_element_ValidatePasswordRep_ctr3(tvb, offset, pinfo, tree, di, drep);
		break;
	}
	proto_item_set_len(item, offset-old_offset);


	return offset;
}

/* IDL: struct { */
/* IDL: 	samr_ValidatePasswordInfo info; */
/* IDL: 	lsa_StringLarge password; */
/* IDL: 	lsa_StringLarge account; */
/* IDL: 	samr_ValidationBlob hash; */
/* IDL: 	uint8 pwd_must_change_at_next_logon; */
/* IDL: 	uint8 clear_lockout; */
/* IDL: } */

static unsigned
samr_dissect_element_ValidatePasswordReq3_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordInfo(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordReq3_info,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq3_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ValidatePasswordReq3_password);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq3_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ValidatePasswordReq3_account);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq3_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidationBlob(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordReq3_hash,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq3_pwd_must_change_at_next_logon(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordReq3_pwd_must_change_at_next_logon, 0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq3_clear_lockout(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordReq3_clear_lockout, 0);

	return offset;
}

unsigned
samr_dissect_struct_ValidatePasswordReq3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_ValidatePasswordReq3);
	}

	offset = samr_dissect_element_ValidatePasswordReq3_info(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq3_password(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq3_account(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq3_hash(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq3_pwd_must_change_at_next_logon(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq3_clear_lockout(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_ValidatePasswordInfo info; */
/* IDL: 	lsa_StringLarge password; */
/* IDL: 	lsa_StringLarge account; */
/* IDL: 	samr_ValidationBlob hash; */
/* IDL: 	uint8 password_matched; */
/* IDL: } */

static unsigned
samr_dissect_element_ValidatePasswordReq2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordInfo(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordReq2_info,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq2_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ValidatePasswordReq2_password);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq2_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ValidatePasswordReq2_account);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq2_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidationBlob(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordReq2_hash,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq2_password_matched(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordReq2_password_matched, 0);

	return offset;
}

unsigned
samr_dissect_struct_ValidatePasswordReq2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_ValidatePasswordReq2);
	}

	offset = samr_dissect_element_ValidatePasswordReq2_info(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq2_password(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq2_account(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq2_hash(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq2_password_matched(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: struct { */
/* IDL: 	samr_ValidatePasswordInfo info; */
/* IDL: 	uint8 password_matched; */
/* IDL: } */

static unsigned
samr_dissect_element_ValidatePasswordReq1_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordInfo(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordReq1_info,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq1_password_matched(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePasswordReq1_password_matched, 0);

	return offset;
}

unsigned
samr_dissect_struct_ValidatePasswordReq1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;

	ALIGN_TO_8_BYTES;

	old_offset = offset;

	if (parent_tree) {
		item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
		tree = proto_item_add_subtree(item, ett_samr_samr_ValidatePasswordReq1);
	}

	offset = samr_dissect_element_ValidatePasswordReq1_info(tvb, offset, pinfo, tree, di, drep);

	offset = samr_dissect_element_ValidatePasswordReq1_password_matched(tvb, offset, pinfo, tree, di, drep);


	proto_item_set_len(item, offset-old_offset);


	if (di->call_data->flags & DCERPC_IS_NDR64) {
		ALIGN_TO_8_BYTES;
	}

	return offset;
}


/* IDL: [switch_type(uint16)] union { */
/* IDL: [case(1)] [case(1)] samr_ValidatePasswordReq1 req1; */
/* IDL: [case(2)] [case(2)] samr_ValidatePasswordReq2 req2; */
/* IDL: [case(3)] [case(3)] samr_ValidatePasswordReq3 req3; */
/* IDL: } */

static unsigned
samr_dissect_element_ValidatePasswordReq_req1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordReq1(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordReq_req1,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq_req2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordReq2(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordReq_req2,0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePasswordReq_req3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_ValidatePasswordReq3(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ValidatePasswordReq_req3,0);

	return offset;
}

static unsigned
samr_dissect_ValidatePasswordReq(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
{
	proto_item *item = NULL;
	proto_tree *tree = NULL;
	unsigned old_offset;
	uint16_t level;

	old_offset = offset;
	if (parent_tree) {
		tree = proto_tree_add_subtree(parent_tree, tvb, offset, -1, ett_samr_samr_ValidatePasswordReq, &item, "samr_ValidatePasswordReq");
	}

	offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, di, drep, hf_index, &level);
	ALIGN_TO_8_BYTES;

	switch(level) {
		case 1:
			offset = samr_dissect_element_ValidatePasswordReq_req1(tvb, offset, pinfo, tree, di, drep);
		break;

		case 2:
			offset = samr_dissect_element_ValidatePasswordReq_req2(tvb, offset, pinfo, tree, di, drep);
		break;

		case 3:
			offset = samr_dissect_element_ValidatePasswordReq_req3(tvb, offset, pinfo, tree, di, drep);
		break;
	}
	proto_item_set_len(item, offset-old_offset);


	return offset;
}
static unsigned
samr_dissect_element_Connect_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_samr_samr_Connect_system_name);

	return offset;
}

static unsigned
samr_dissect_element_Connect_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Connect_system_name, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_Connect_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT);

	return offset;
}

/* IDL: NTSTATUS samr_Connect( */
/* IDL: [in] [unique(1)] uint16 *system_name, */
/* IDL: [in] samr_ConnectAccessMask access_mask, */
/* IDL: [out] [ref] policy_handle *connect_handle */
/* IDL: ); */

static unsigned
samr_dissect_Connect_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="Connect";
	offset = samr_dissect_element_Connect_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_Connect_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Connect";
	offset = samr_dissect_element_Connect_system_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_Close_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Close_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_samr_handle);

	return offset;
}

static unsigned
samr_dissect_element_Close_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_handle, PIDL_POLHND_CLOSE);

	return offset;
}

/* IDL: NTSTATUS samr_Close( */
/* IDL: [in] [out] [ref] policy_handle *handle */
/* IDL: ); */

static unsigned
samr_dissect_Close_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="Close";
	offset = samr_dissect_element_Close_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_Close_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Close";
	offset = samr_dissect_element_Close_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetSecurity_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetSecurity_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_samr_handle);

	return offset;
}

static unsigned
samr_dissect_element_SetSecurity_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetSecurity_sec_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_samr_security_secinfo(tvb, offset, pinfo, tree, drep);

	return offset;
}

static unsigned
samr_dissect_element_SetSecurity_sdbuf(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetSecurity_sdbuf_, NDR_POINTER_REF, "Pointer to Sdbuf (sec_desc_buf)",hf_samr_samr_SetSecurity_sdbuf);

	return offset;
}

static unsigned
samr_dissect_element_SetSecurity_sdbuf_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_SetSecurity( */
/* IDL: [in] [ref] policy_handle *handle, */
/* IDL: [in] security_secinfo sec_info, */
/* IDL: [in] [ref] sec_desc_buf *sdbuf */
/* IDL: ); */

static unsigned
samr_dissect_SetSecurity_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetSecurity";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetSecurity_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetSecurity";
	offset = samr_dissect_element_SetSecurity_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetSecurity_sec_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetSecurity_sdbuf(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QuerySecurity_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QuerySecurity_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_samr_handle);

	return offset;
}

static unsigned
samr_dissect_element_QuerySecurity_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QuerySecurity_sec_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_samr_security_secinfo(tvb, offset, pinfo, tree, drep);

	return offset;
}

static unsigned
samr_dissect_element_QuerySecurity_sdbuf(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QuerySecurity_sdbuf_, NDR_POINTER_REF, "Pointer to Sdbuf (sec_desc_buf)",hf_samr_samr_QuerySecurity_sdbuf);

	return offset;
}

static unsigned
samr_dissect_element_QuerySecurity_sdbuf_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QuerySecurity_sdbuf__, NDR_POINTER_UNIQUE, "Pointer to Sdbuf (sec_desc_buf)",hf_samr_samr_QuerySecurity_sdbuf);

	return offset;
}

static unsigned
samr_dissect_element_QuerySecurity_sdbuf__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_sec_desc_buf(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_QuerySecurity( */
/* IDL: [in] [ref] policy_handle *handle, */
/* IDL: [in] security_secinfo sec_info, */
/* IDL: [out] [ref] sec_desc_buf **sdbuf */
/* IDL: ); */

static unsigned
samr_dissect_QuerySecurity_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QuerySecurity";
	offset = samr_dissect_element_QuerySecurity_sdbuf(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QuerySecurity_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QuerySecurity";
	offset = samr_dissect_element_QuerySecurity_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QuerySecurity_sec_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_Shutdown_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Shutdown_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_Shutdown_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, PIDL_POLHND_CLOSE);

	return offset;
}

/* IDL: NTSTATUS samr_Shutdown( */
/* IDL: [in] [ref] policy_handle *connect_handle */
/* IDL: ); */

static unsigned
samr_dissect_Shutdown_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="Shutdown";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_Shutdown_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Shutdown";
	offset = samr_dissect_element_Shutdown_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_LookupDomain_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupDomain_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_LookupDomain_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_LookupDomain_domain_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupDomain_domain_name_, NDR_POINTER_REF, "Pointer to Domain Name (lsa_String)",hf_samr_samr_LookupDomain_domain_name);

	return offset;
}

static unsigned
samr_dissect_element_LookupDomain_domain_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 3|PIDL_SET_COL_INFO, hf_samr_samr_LookupDomain_domain_name);

	return offset;
}

static unsigned
samr_dissect_element_LookupDomain_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupDomain_sid_, NDR_POINTER_REF, "Pointer to Sid (dom_sid2)",hf_samr_samr_LookupDomain_sid);

	return offset;
}

static unsigned
samr_dissect_element_LookupDomain_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupDomain_sid__, NDR_POINTER_UNIQUE, "Pointer to Sid (dom_sid2)",hf_samr_samr_LookupDomain_sid);

	return offset;
}

static unsigned
samr_dissect_element_LookupDomain_sid__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_dom_sid2(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_LookupDomain( */
/* IDL: [in] [ref] policy_handle *connect_handle, */
/* IDL: [in] [ref] lsa_String *domain_name, */
/* IDL: [out] [ref] dom_sid2 **sid */
/* IDL: ); */

static unsigned
samr_dissect_LookupDomain_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="LookupDomain";
	offset = samr_dissect_element_LookupDomain_sid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_LookupDomain_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="LookupDomain";
	offset = samr_dissect_element_LookupDomain_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_LookupDomain_domain_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomains_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_resume_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomains_resume_handle_, NDR_POINTER_REF, "Pointer to Resume Handle (uint32)",hf_samr_samr_EnumDomains_resume_handle);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_resume_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomains_resume_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_sam(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomains_sam_, NDR_POINTER_REF, "Pointer to Sam (samr_SamArray)",hf_samr_samr_EnumDomains_sam);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_sam_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomains_sam__, NDR_POINTER_UNIQUE, "Pointer to Sam (samr_SamArray)",hf_samr_samr_EnumDomains_sam);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_sam__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_SamArray(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_EnumDomains_sam,0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_buf_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomains_buf_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_num_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomains_num_entries_, NDR_POINTER_REF, "Pointer to Num Entries (uint32)",hf_samr_samr_EnumDomains_num_entries);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomains_num_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomains_num_entries, 0);

	return offset;
}

/* IDL: NTSTATUS samr_EnumDomains( */
/* IDL: [in] [ref] policy_handle *connect_handle, */
/* IDL: [in] [out] [ref] uint32 *resume_handle, */
/* IDL: [out] [ref] samr_SamArray **sam, */
/* IDL: [in] uint32 buf_size, */
/* IDL: [out] [ref] uint32 *num_entries */
/* IDL: ); */

static unsigned
samr_dissect_EnumDomains_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="EnumDomains";
	offset = samr_dissect_element_EnumDomains_resume_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_EnumDomains_sam(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_EnumDomains_num_entries(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_EnumDomains_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="EnumDomains";
	offset = samr_dissect_element_EnumDomains_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomains_resume_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomains_buf_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_OpenDomain_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenDomain_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_OpenDomain_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenDomain_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_DomainAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenDomain_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenDomain_sid_, NDR_POINTER_REF, "Pointer to Sid (dom_sid2)",hf_samr_samr_OpenDomain_sid);

	return offset;
}

static unsigned
samr_dissect_element_OpenDomain_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_dom_sid2(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

static unsigned
samr_dissect_element_OpenDomain_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenDomain_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_OpenDomain_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_DOMAIN);

	return offset;
}

/* IDL: NTSTATUS samr_OpenDomain( */
/* IDL: [in] [ref] policy_handle *connect_handle, */
/* IDL: [in] samr_DomainAccessMask access_mask, */
/* IDL: [in] [ref] dom_sid2 *sid, */
/* IDL: [out] [ref] policy_handle *domain_handle */
/* IDL: ); */

static unsigned
samr_dissect_OpenDomain_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="OpenDomain";
	offset = samr_dissect_element_OpenDomain_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_OpenDomain_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="OpenDomain";
	offset = samr_dissect_element_OpenDomain_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OpenDomain_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OpenDomain_sid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDomainInfo_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainInfoClass(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDomainInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDomainInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_DomainInfo)",hf_samr_samr_QueryDomainInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDomainInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_DomainInfo)",hf_samr_samr_QueryDomainInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_DomainInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDomainInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryDomainInfo( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_DomainInfoClass level, */
/* IDL: [out] [ref] [switch_is(level)] samr_DomainInfo **info */
/* IDL: ); */

static unsigned
samr_dissect_QueryDomainInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryDomainInfo";
	offset = samr_dissect_element_QueryDomainInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryDomainInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryDomainInfo";
	offset = samr_dissect_element_QueryDomainInfo_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDomainInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetDomainInfo_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetDomainInfo_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_SetDomainInfo_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetDomainInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainInfoClass(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetDomainInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetDomainInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetDomainInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_DomainInfo)",hf_samr_samr_SetDomainInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_SetDomainInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_DomainInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetDomainInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_SetDomainInfo( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_DomainInfoClass level, */
/* IDL: [in] [ref] [switch_is(level)] samr_DomainInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_SetDomainInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetDomainInfo";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetDomainInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetDomainInfo";
	offset = samr_dissect_element_SetDomainInfo_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetDomainInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetDomainInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateDomainGroup_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateDomainGroup_name_, NDR_POINTER_REF, "Pointer to Name (lsa_String)",hf_samr_samr_CreateDomainGroup_name);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_CreateDomainGroup_name);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_GroupAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_group_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateDomainGroup_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_GROUP);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateDomainGroup_rid_, NDR_POINTER_REF, "Pointer to Rid (uint32)",hf_samr_rid);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomainGroup_rid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

/* IDL: NTSTATUS samr_CreateDomainGroup( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [ref] lsa_String *name, */
/* IDL: [in] samr_GroupAccessMask access_mask, */
/* IDL: [out] [ref] policy_handle *group_handle, */
/* IDL: [out] [ref] uint32 *rid */
/* IDL: ); */

static unsigned
samr_dissect_CreateDomainGroup_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="CreateDomainGroup";
	offset = samr_dissect_element_CreateDomainGroup_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_CreateDomainGroup_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_CreateDomainGroup_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="CreateDomainGroup";
	offset = samr_dissect_element_CreateDomainGroup_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateDomainGroup_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateDomainGroup_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainGroups_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_resume_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainGroups_resume_handle_, NDR_POINTER_REF, "Pointer to Resume Handle (uint32)",hf_samr_samr_EnumDomainGroups_resume_handle);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_resume_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainGroups_resume_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_sam(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainGroups_sam_, NDR_POINTER_REF, "Pointer to Sam (samr_SamArray)",hf_samr_samr_EnumDomainGroups_sam);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_sam_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainGroups_sam__, NDR_POINTER_UNIQUE, "Pointer to Sam (samr_SamArray)",hf_samr_samr_EnumDomainGroups_sam);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_sam__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_SamArray(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_EnumDomainGroups_sam,0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_max_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainGroups_max_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_num_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainGroups_num_entries_, NDR_POINTER_REF, "Pointer to Num Entries (uint32)",hf_samr_samr_EnumDomainGroups_num_entries);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainGroups_num_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainGroups_num_entries, 0);

	return offset;
}

/* IDL: NTSTATUS samr_EnumDomainGroups( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [out] [ref] uint32 *resume_handle, */
/* IDL: [out] [ref] samr_SamArray **sam, */
/* IDL: [in] uint32 max_size, */
/* IDL: [out] [ref] uint32 *num_entries */
/* IDL: ); */

static unsigned
samr_dissect_EnumDomainGroups_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="EnumDomainGroups";
	offset = samr_dissect_element_EnumDomainGroups_resume_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_EnumDomainGroups_sam(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_EnumDomainGroups_num_entries(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_EnumDomainGroups_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="EnumDomainGroups";
	offset = samr_dissect_element_EnumDomainGroups_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomainGroups_resume_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomainGroups_max_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_CreateUser_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser_account_name_, NDR_POINTER_REF, "Pointer to Account Name (lsa_String)",hf_samr_samr_CreateUser_account_name);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser_account_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 3|PIDL_SET_COL_INFO|PIDL_STR_SAVE, hf_samr_samr_CreateUser_account_name);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_UserAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_user_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_USER);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser_rid_, NDR_POINTER_REF, "Pointer to Rid (uint32)",hf_samr_rid);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser_rid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

/* IDL: NTSTATUS samr_CreateUser( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [ref] lsa_String *account_name, */
/* IDL: [in] samr_UserAccessMask access_mask, */
/* IDL: [out] [ref] policy_handle *user_handle, */
/* IDL: [out] [ref] uint32 *rid */
/* IDL: ); */

static unsigned
samr_dissect_CreateUser_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="CreateUser";
	offset = samr_dissect_element_CreateUser_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_CreateUser_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_CreateUser_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="CreateUser";
	offset = samr_dissect_element_CreateUser_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateUser_account_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateUser_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainUsers_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_resume_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainUsers_resume_handle_, NDR_POINTER_REF, "Pointer to Resume Handle (uint32)",hf_samr_samr_EnumDomainUsers_resume_handle);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_resume_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainUsers_resume_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AcctFlags(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainUsers_acct_flags, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_sam(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainUsers_sam_, NDR_POINTER_REF, "Pointer to Sam (samr_SamArray)",hf_samr_samr_EnumDomainUsers_sam);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_sam_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainUsers_sam__, NDR_POINTER_UNIQUE, "Pointer to Sam (samr_SamArray)",hf_samr_samr_EnumDomainUsers_sam);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_sam__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_SamArray(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_EnumDomainUsers_sam,0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_max_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainUsers_max_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_num_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainUsers_num_entries_, NDR_POINTER_REF, "Pointer to Num Entries (uint32)",hf_samr_samr_EnumDomainUsers_num_entries);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainUsers_num_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainUsers_num_entries, 0);

	return offset;
}

/* IDL: NTSTATUS samr_EnumDomainUsers( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [out] [ref] uint32 *resume_handle, */
/* IDL: [in] samr_AcctFlags acct_flags, */
/* IDL: [out] [ref] samr_SamArray **sam, */
/* IDL: [in] uint32 max_size, */
/* IDL: [out] [ref] uint32 *num_entries */
/* IDL: ); */

static unsigned
samr_dissect_EnumDomainUsers_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="EnumDomainUsers";
	offset = samr_dissect_element_EnumDomainUsers_resume_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_EnumDomainUsers_sam(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_EnumDomainUsers_num_entries(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_EnumDomainUsers_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="EnumDomainUsers";
	offset = samr_dissect_element_EnumDomainUsers_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomainUsers_resume_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomainUsers_acct_flags(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomainUsers_max_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateDomAlias_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_alias_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateDomAlias_alias_name_, NDR_POINTER_REF, "Pointer to Alias Name (lsa_String)",hf_samr_samr_CreateDomAlias_alias_name);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_alias_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_CreateDomAlias_alias_name);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AliasAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateDomAlias_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_ALIAS);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateDomAlias_rid_, NDR_POINTER_REF, "Pointer to Rid (uint32)",hf_samr_rid);

	return offset;
}

static unsigned
samr_dissect_element_CreateDomAlias_rid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

/* IDL: NTSTATUS samr_CreateDomAlias( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [ref] lsa_String *alias_name, */
/* IDL: [in] samr_AliasAccessMask access_mask, */
/* IDL: [out] [ref] policy_handle *alias_handle, */
/* IDL: [out] [ref] uint32 *rid */
/* IDL: ); */

static unsigned
samr_dissect_CreateDomAlias_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="CreateDomAlias";
	offset = samr_dissect_element_CreateDomAlias_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_CreateDomAlias_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_CreateDomAlias_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="CreateDomAlias";
	offset = samr_dissect_element_CreateDomAlias_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateDomAlias_alias_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateDomAlias_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainAliases_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_resume_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainAliases_resume_handle_, NDR_POINTER_REF, "Pointer to Resume Handle (uint32)",hf_samr_samr_EnumDomainAliases_resume_handle);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_resume_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainAliases_resume_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_sam(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainAliases_sam_, NDR_POINTER_REF, "Pointer to Sam (samr_SamArray)",hf_samr_samr_EnumDomainAliases_sam);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_sam_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainAliases_sam__, NDR_POINTER_UNIQUE, "Pointer to Sam (samr_SamArray)",hf_samr_samr_EnumDomainAliases_sam);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_sam__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_SamArray(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_EnumDomainAliases_sam,0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_max_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainAliases_max_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_num_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_EnumDomainAliases_num_entries_, NDR_POINTER_REF, "Pointer to Num Entries (uint32)",hf_samr_samr_EnumDomainAliases_num_entries);

	return offset;
}

static unsigned
samr_dissect_element_EnumDomainAliases_num_entries_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_EnumDomainAliases_num_entries, 0);

	return offset;
}

/* IDL: NTSTATUS samr_EnumDomainAliases( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [out] [ref] uint32 *resume_handle, */
/* IDL: [out] [ref] samr_SamArray **sam, */
/* IDL: [in] uint32 max_size, */
/* IDL: [out] [ref] uint32 *num_entries */
/* IDL: ); */

static unsigned
samr_dissect_EnumDomainAliases_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="EnumDomainAliases";
	offset = samr_dissect_element_EnumDomainAliases_resume_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_EnumDomainAliases_sam(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_EnumDomainAliases_num_entries(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_EnumDomainAliases_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="EnumDomainAliases";
	offset = samr_dissect_element_EnumDomainAliases_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomainAliases_resume_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_EnumDomainAliases_max_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_GetAliasMembership_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetAliasMembership_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_GetAliasMembership_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetAliasMembership_sids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetAliasMembership_sids_, NDR_POINTER_REF, "Pointer to Sids (lsa_SidArray)",hf_samr_samr_GetAliasMembership_sids);

	return offset;
}

static unsigned
samr_dissect_element_GetAliasMembership_sids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_lsa_SidArray(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

static unsigned
samr_dissect_element_GetAliasMembership_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetAliasMembership_rids_, NDR_POINTER_REF, "Pointer to Rids (samr_Ids)",hf_samr_samr_GetAliasMembership_rids);

	return offset;
}

static unsigned
samr_dissect_element_GetAliasMembership_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Ids(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_GetAliasMembership_rids,0);

	return offset;
}

/* IDL: NTSTATUS samr_GetAliasMembership( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [ref] lsa_SidArray *sids, */
/* IDL: [out] [ref] samr_Ids *rids */
/* IDL: ); */

static unsigned
samr_dissect_GetAliasMembership_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="GetAliasMembership";
	offset = samr_dissect_element_GetAliasMembership_rids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_GetAliasMembership_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="GetAliasMembership";
	offset = samr_dissect_element_GetAliasMembership_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_GetAliasMembership_sids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_LookupNames_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupNames_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_num_names(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_LookupNames_num_names, 0);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_names(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupNames_names_, NDR_POINTER_REF, "Pointer to Names (lsa_String)",hf_samr_samr_LookupNames_names);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_names_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupNames_names__);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_names__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_LookupNames_names);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupNames_rids_, NDR_POINTER_REF, "Pointer to Rids (samr_Ids)",hf_samr_samr_LookupNames_rids);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Ids(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_LookupNames_rids,0);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_types(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupNames_types_, NDR_POINTER_REF, "Pointer to Types (samr_Ids)",hf_samr_samr_LookupNames_types);

	return offset;
}

static unsigned
samr_dissect_element_LookupNames_types_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Ids(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_LookupNames_types,0);

	return offset;
}

/* IDL: NTSTATUS samr_LookupNames( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [range(0,1000)] uint32 num_names, */
/* IDL: [in] [length_is(num_names)] [ref] [size_is(1000)] lsa_String *names, */
/* IDL: [out] [ref] samr_Ids *rids, */
/* IDL: [out] [ref] samr_Ids *types */
/* IDL: ); */

static unsigned
samr_dissect_LookupNames_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="LookupNames";
	offset = samr_dissect_element_LookupNames_rids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_LookupNames_types(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_LookupNames_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="LookupNames";
	offset = samr_dissect_element_LookupNames_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_LookupNames_num_names(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_LookupNames_names(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_LookupRids_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupRids_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_num_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_LookupRids_num_rids, 0);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupRids_rids_, NDR_POINTER_REF, "Pointer to Rids (uint32)",hf_samr_rid);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupRids_rids__);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_names(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupRids_names_, NDR_POINTER_REF, "Pointer to Names (lsa_Strings)",hf_samr_samr_LookupRids_names);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_names_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_lsa_Strings(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_LookupRids_names,0);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_types(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_LookupRids_types_, NDR_POINTER_REF, "Pointer to Types (samr_Ids)",hf_samr_samr_LookupRids_types);

	return offset;
}

static unsigned
samr_dissect_element_LookupRids_types_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Ids(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_LookupRids_types,0);

	return offset;
}

/* IDL: NTSTATUS samr_LookupRids( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [range(0,1000)] uint32 num_rids, */
/* IDL: [in] [length_is(num_rids)] [ref] [size_is(1000)] uint32 *rids, */
/* IDL: [out] [ref] lsa_Strings *names, */
/* IDL: [out] [ref] samr_Ids *types */
/* IDL: ); */

static unsigned
samr_dissect_LookupRids_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="LookupRids";
	offset = samr_dissect_element_LookupRids_names(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_LookupRids_types(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_LookupRids_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="LookupRids";
	offset = samr_dissect_element_LookupRids_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_LookupRids_num_rids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_LookupRids_rids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_OpenGroup_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenGroup_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_OpenGroup_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenGroup_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_GroupAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_group_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenGroup_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenGroup_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenGroup_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_OpenGroup_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_GROUP);

	return offset;
}

/* IDL: NTSTATUS samr_OpenGroup( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_GroupAccessMask access_mask, */
/* IDL: [in] uint32 rid, */
/* IDL: [out] [ref] policy_handle *group_handle */
/* IDL: ); */

static unsigned
samr_dissect_OpenGroup_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="OpenGroup";
	offset = samr_dissect_element_OpenGroup_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_OpenGroup_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="OpenGroup";
	offset = samr_dissect_element_OpenGroup_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OpenGroup_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OpenGroup_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryGroupInfo_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryGroupInfo_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupInfo_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_GroupInfoEnum(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryGroupInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryGroupInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_GroupInfo)",hf_samr_samr_QueryGroupInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryGroupInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_GroupInfo)",hf_samr_samr_QueryGroupInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupInfo_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_GroupInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryGroupInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryGroupInfo( */
/* IDL: [in] [ref] policy_handle *group_handle, */
/* IDL: [in] samr_GroupInfoEnum level, */
/* IDL: [out] [ref] [switch_is(level)] samr_GroupInfo **info */
/* IDL: ); */

static unsigned
samr_dissect_QueryGroupInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryGroupInfo";
	offset = samr_dissect_element_QueryGroupInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryGroupInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryGroupInfo";
	offset = samr_dissect_element_QueryGroupInfo_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryGroupInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetGroupInfo_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetGroupInfo_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_SetGroupInfo_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetGroupInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_GroupInfoEnum(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetGroupInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetGroupInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetGroupInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_GroupInfo)",hf_samr_samr_SetGroupInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_SetGroupInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_GroupInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetGroupInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_SetGroupInfo( */
/* IDL: [in] [ref] policy_handle *group_handle, */
/* IDL: [in] samr_GroupInfoEnum level, */
/* IDL: [in] [ref] [switch_is(level)] samr_GroupInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_SetGroupInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetGroupInfo";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetGroupInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetGroupInfo";
	offset = samr_dissect_element_SetGroupInfo_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetGroupInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetGroupInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_AddGroupMember_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_AddGroupMember_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_AddGroupMember_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_AddGroupMember_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_AddGroupMember_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_AddGroupMember_flags, 0);

	return offset;
}

/* IDL: NTSTATUS samr_AddGroupMember( */
/* IDL: [in] [ref] policy_handle *group_handle, */
/* IDL: [in] uint32 rid, */
/* IDL: [in] uint32 flags */
/* IDL: ); */

static unsigned
samr_dissect_AddGroupMember_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="AddGroupMember";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_AddGroupMember_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="AddGroupMember";
	offset = samr_dissect_element_AddGroupMember_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_AddGroupMember_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_AddGroupMember_flags(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_DeleteDomainGroup_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DeleteDomainGroup_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_DeleteDomainGroup_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, PIDL_POLHND_CLOSE);

	return offset;
}

/* IDL: NTSTATUS samr_DeleteDomainGroup( */
/* IDL: [in] [out] [ref] policy_handle *group_handle */
/* IDL: ); */

static unsigned
samr_dissect_DeleteDomainGroup_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="DeleteDomainGroup";
	offset = samr_dissect_element_DeleteDomainGroup_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_DeleteDomainGroup_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="DeleteDomainGroup";
	offset = samr_dissect_element_DeleteDomainGroup_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_DeleteGroupMember_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DeleteGroupMember_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_DeleteGroupMember_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_DeleteGroupMember_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

/* IDL: NTSTATUS samr_DeleteGroupMember( */
/* IDL: [in] [ref] policy_handle *group_handle, */
/* IDL: [in] uint32 rid */
/* IDL: ); */

static unsigned
samr_dissect_DeleteGroupMember_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="DeleteGroupMember";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_DeleteGroupMember_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="DeleteGroupMember";
	offset = samr_dissect_element_DeleteGroupMember_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_DeleteGroupMember_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryGroupMember_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryGroupMember_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupMember_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupMember_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryGroupMember_rids_, NDR_POINTER_REF, "Pointer to Rids (samr_RidTypeArray)",hf_samr_samr_QueryGroupMember_rids);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupMember_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryGroupMember_rids__, NDR_POINTER_UNIQUE, "Pointer to Rids (samr_RidTypeArray)",hf_samr_samr_QueryGroupMember_rids);

	return offset;
}

static unsigned
samr_dissect_element_QueryGroupMember_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_RidTypeArray(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_QueryGroupMember_rids,0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryGroupMember( */
/* IDL: [in] [ref] policy_handle *group_handle, */
/* IDL: [out] [ref] samr_RidTypeArray **rids */
/* IDL: ); */

static unsigned
samr_dissect_QueryGroupMember_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryGroupMember";
	offset = samr_dissect_element_QueryGroupMember_rids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryGroupMember_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryGroupMember";
	offset = samr_dissect_element_QueryGroupMember_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetMemberAttributesOfGroup_group_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetMemberAttributesOfGroup_group_handle_, NDR_POINTER_REF, "Pointer to Group Handle (policy_handle)",hf_samr_group_handle);

	return offset;
}

static unsigned
samr_dissect_element_SetMemberAttributesOfGroup_group_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_group_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetMemberAttributesOfGroup_unknown1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetMemberAttributesOfGroup_unknown1, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetMemberAttributesOfGroup_unknown2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetMemberAttributesOfGroup_unknown2, 0);

	return offset;
}

/* IDL: NTSTATUS samr_SetMemberAttributesOfGroup( */
/* IDL: [in] [ref] policy_handle *group_handle, */
/* IDL: [in] uint32 unknown1, */
/* IDL: [in] uint32 unknown2 */
/* IDL: ); */

static unsigned
samr_dissect_SetMemberAttributesOfGroup_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetMemberAttributesOfGroup";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetMemberAttributesOfGroup_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetMemberAttributesOfGroup";
	offset = samr_dissect_element_SetMemberAttributesOfGroup_group_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetMemberAttributesOfGroup_unknown1(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetMemberAttributesOfGroup_unknown2(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_OpenAlias_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenAlias_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_OpenAlias_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenAlias_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AliasAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenAlias_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenAlias_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_OpenAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_ALIAS);

	return offset;
}

/* IDL: NTSTATUS samr_OpenAlias( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_AliasAccessMask access_mask, */
/* IDL: [in] uint32 rid, */
/* IDL: [out] [ref] policy_handle *alias_handle */
/* IDL: ); */

static unsigned
samr_dissect_OpenAlias_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="OpenAlias";
	offset = samr_dissect_element_OpenAlias_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_OpenAlias_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="OpenAlias";
	offset = samr_dissect_element_OpenAlias_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OpenAlias_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OpenAlias_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryAliasInfo_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryAliasInfo_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryAliasInfo_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryAliasInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_AliasInfoEnum(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryAliasInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryAliasInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryAliasInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_AliasInfo)",hf_samr_samr_QueryAliasInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryAliasInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryAliasInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_AliasInfo)",hf_samr_samr_QueryAliasInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryAliasInfo_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_AliasInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryAliasInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryAliasInfo( */
/* IDL: [in] [ref] policy_handle *alias_handle, */
/* IDL: [in] samr_AliasInfoEnum level, */
/* IDL: [out] [ref] [switch_is(level)] samr_AliasInfo **info */
/* IDL: ); */

static unsigned
samr_dissect_QueryAliasInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryAliasInfo";
	offset = samr_dissect_element_QueryAliasInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryAliasInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryAliasInfo";
	offset = samr_dissect_element_QueryAliasInfo_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryAliasInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetAliasInfo_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetAliasInfo_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_SetAliasInfo_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetAliasInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_AliasInfoEnum(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetAliasInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetAliasInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetAliasInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_AliasInfo)",hf_samr_samr_SetAliasInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_SetAliasInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_AliasInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetAliasInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_SetAliasInfo( */
/* IDL: [in] [ref] policy_handle *alias_handle, */
/* IDL: [in] samr_AliasInfoEnum level, */
/* IDL: [in] [ref] [switch_is(level)] samr_AliasInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_SetAliasInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetAliasInfo";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetAliasInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetAliasInfo";
	offset = samr_dissect_element_SetAliasInfo_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetAliasInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetAliasInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_DeleteDomAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DeleteDomAlias_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_DeleteDomAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, PIDL_POLHND_CLOSE);

	return offset;
}

/* IDL: NTSTATUS samr_DeleteDomAlias( */
/* IDL: [in] [out] [ref] policy_handle *alias_handle */
/* IDL: ); */

static unsigned
samr_dissect_DeleteDomAlias_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="DeleteDomAlias";
	offset = samr_dissect_element_DeleteDomAlias_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_DeleteDomAlias_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="DeleteDomAlias";
	offset = samr_dissect_element_DeleteDomAlias_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_AddAliasMember_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_AddAliasMember_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_AddAliasMember_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_AddAliasMember_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_AddAliasMember_sid_, NDR_POINTER_REF, "Pointer to Sid (dom_sid2)",hf_samr_samr_AddAliasMember_sid);

	return offset;
}

static unsigned
samr_dissect_element_AddAliasMember_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_dom_sid2(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_AddAliasMember( */
/* IDL: [in] [ref] policy_handle *alias_handle, */
/* IDL: [in] [ref] dom_sid2 *sid */
/* IDL: ); */

static unsigned
samr_dissect_AddAliasMember_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="AddAliasMember";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_AddAliasMember_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="AddAliasMember";
	offset = samr_dissect_element_AddAliasMember_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_AddAliasMember_sid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_DeleteAliasMember_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DeleteAliasMember_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_DeleteAliasMember_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_DeleteAliasMember_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DeleteAliasMember_sid_, NDR_POINTER_REF, "Pointer to Sid (dom_sid2)",hf_samr_samr_DeleteAliasMember_sid);

	return offset;
}

static unsigned
samr_dissect_element_DeleteAliasMember_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_dom_sid2(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_DeleteAliasMember( */
/* IDL: [in] [ref] policy_handle *alias_handle, */
/* IDL: [in] [ref] dom_sid2 *sid */
/* IDL: ); */

static unsigned
samr_dissect_DeleteAliasMember_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="DeleteAliasMember";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_DeleteAliasMember_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="DeleteAliasMember";
	offset = samr_dissect_element_DeleteAliasMember_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_DeleteAliasMember_sid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_GetMembersInAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetMembersInAlias_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_GetMembersInAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetMembersInAlias_sids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetMembersInAlias_sids_, NDR_POINTER_REF, "Pointer to Sids (lsa_SidArray)",hf_samr_samr_GetMembersInAlias_sids);

	return offset;
}

static unsigned
samr_dissect_element_GetMembersInAlias_sids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_lsa_SidArray(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_GetMembersInAlias( */
/* IDL: [in] [ref] policy_handle *alias_handle, */
/* IDL: [out] [ref] lsa_SidArray *sids */
/* IDL: ); */

static unsigned
samr_dissect_GetMembersInAlias_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="GetMembersInAlias";
	offset = samr_dissect_element_GetMembersInAlias_sids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_GetMembersInAlias_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="GetMembersInAlias";
	offset = samr_dissect_element_GetMembersInAlias_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_OpenUser_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenUser_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_OpenUser_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenUser_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_UserAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_user_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenUser_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_OpenUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OpenUser_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_OpenUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_USER);

	return offset;
}

/* IDL: NTSTATUS samr_OpenUser( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_UserAccessMask access_mask, */
/* IDL: [in] uint32 rid, */
/* IDL: [out] [ref] policy_handle *user_handle */
/* IDL: ); */

static unsigned
samr_dissect_OpenUser_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="OpenUser";
	offset = samr_dissect_element_OpenUser_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_OpenUser_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="OpenUser";
	offset = samr_dissect_element_OpenUser_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OpenUser_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OpenUser_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_DeleteUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_DeleteUser_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_DeleteUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, PIDL_POLHND_CLOSE);

	return offset;
}

/* IDL: NTSTATUS samr_DeleteUser( */
/* IDL: [in] [out] [ref] policy_handle *user_handle */
/* IDL: ); */

static unsigned
samr_dissect_DeleteUser_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="DeleteUser";
	offset = samr_dissect_element_DeleteUser_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_DeleteUser_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="DeleteUser";
	offset = samr_dissect_element_DeleteUser_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryUserInfo_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_UserInfoLevel(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryUserInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryUserInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryUserInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_UserInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryUserInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryUserInfo( */
/* IDL: [in] [ref] policy_handle *user_handle, */
/* IDL: [in] samr_UserInfoLevel level, */
/* IDL: [out] [ref] [switch_is(level)] samr_UserInfo **info */
/* IDL: ); */

static unsigned
samr_dissect_QueryUserInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryUserInfo";
	offset = samr_dissect_element_QueryUserInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryUserInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryUserInfo";
	offset = samr_dissect_element_QueryUserInfo_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryUserInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetUserInfo_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_UserInfoLevel(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetUserInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetUserInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_UserInfo)",hf_samr_samr_SetUserInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_UserInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetUserInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_SetUserInfo( */
/* IDL: [in] [ref] policy_handle *user_handle, */
/* IDL: [in] samr_UserInfoLevel level, */
/* IDL: [in] [ref] [switch_is(level)] samr_UserInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_SetUserInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetUserInfo";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetUserInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetUserInfo";
	offset = samr_dissect_element_SetUserInfo_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetUserInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetUserInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_lm_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ChangePasswordUser_lm_present, 0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_old_lm_crypted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser_old_lm_crypted_, NDR_POINTER_UNIQUE, "Pointer to Old Lm Crypted (samr_Password)",hf_samr_samr_ChangePasswordUser_old_lm_crypted);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_old_lm_crypted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser_old_lm_crypted,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_new_lm_crypted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser_new_lm_crypted_, NDR_POINTER_UNIQUE, "Pointer to New Lm Crypted (samr_Password)",hf_samr_samr_ChangePasswordUser_new_lm_crypted);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_new_lm_crypted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser_new_lm_crypted,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_nt_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ChangePasswordUser_nt_present, 0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_old_nt_crypted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser_old_nt_crypted_, NDR_POINTER_UNIQUE, "Pointer to Old Nt Crypted (samr_Password)",hf_samr_samr_ChangePasswordUser_old_nt_crypted);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_old_nt_crypted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser_old_nt_crypted,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_new_nt_crypted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser_new_nt_crypted_, NDR_POINTER_UNIQUE, "Pointer to New Nt Crypted (samr_Password)",hf_samr_samr_ChangePasswordUser_new_nt_crypted);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_new_nt_crypted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser_new_nt_crypted,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_cross1_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ChangePasswordUser_cross1_present, 0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_nt_cross(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser_nt_cross_, NDR_POINTER_UNIQUE, "Pointer to Nt Cross (samr_Password)",hf_samr_samr_ChangePasswordUser_nt_cross);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_nt_cross_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser_nt_cross,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_cross2_present(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ChangePasswordUser_cross2_present, 0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_lm_cross(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser_lm_cross_, NDR_POINTER_UNIQUE, "Pointer to Lm Cross (samr_Password)",hf_samr_samr_ChangePasswordUser_lm_cross);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser_lm_cross_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser_lm_cross,0);

	return offset;
}

/* IDL: NTSTATUS samr_ChangePasswordUser( */
/* IDL: [in] [ref] policy_handle *user_handle, */
/* IDL: [in] uint8 lm_present, */
/* IDL: [in] [unique(1)] samr_Password *old_lm_crypted, */
/* IDL: [in] [unique(1)] samr_Password *new_lm_crypted, */
/* IDL: [in] uint8 nt_present, */
/* IDL: [in] [unique(1)] samr_Password *old_nt_crypted, */
/* IDL: [in] [unique(1)] samr_Password *new_nt_crypted, */
/* IDL: [in] uint8 cross1_present, */
/* IDL: [in] [unique(1)] samr_Password *nt_cross, */
/* IDL: [in] uint8 cross2_present, */
/* IDL: [in] [unique(1)] samr_Password *lm_cross */
/* IDL: ); */

static unsigned
samr_dissect_ChangePasswordUser_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="ChangePasswordUser";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_ChangePasswordUser_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="ChangePasswordUser";
	offset = samr_dissect_element_ChangePasswordUser_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_lm_present(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_old_lm_crypted(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_new_lm_crypted(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_nt_present(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_old_nt_crypted(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_new_nt_crypted(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_cross1_present(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_nt_cross(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_cross2_present(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser_lm_cross(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_GetGroupsForUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetGroupsForUser_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_GetGroupsForUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetGroupsForUser_rids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetGroupsForUser_rids_, NDR_POINTER_REF, "Pointer to Rids (samr_RidWithAttributeArray)",hf_samr_samr_GetGroupsForUser_rids);

	return offset;
}

static unsigned
samr_dissect_element_GetGroupsForUser_rids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetGroupsForUser_rids__, NDR_POINTER_UNIQUE, "Pointer to Rids (samr_RidWithAttributeArray)",hf_samr_samr_GetGroupsForUser_rids);

	return offset;
}

static unsigned
samr_dissect_element_GetGroupsForUser_rids__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_RidWithAttributeArray(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_GetGroupsForUser_rids,0);

	return offset;
}

/* IDL: NTSTATUS samr_GetGroupsForUser( */
/* IDL: [in] [ref] policy_handle *user_handle, */
/* IDL: [out] [ref] samr_RidWithAttributeArray **rids */
/* IDL: ); */

static unsigned
samr_dissect_GetGroupsForUser_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="GetGroupsForUser";
	offset = samr_dissect_element_GetGroupsForUser_rids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_GetGroupsForUser_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="GetGroupsForUser";
	offset = samr_dissect_element_GetGroupsForUser_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainDisplayInformation(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_start_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo_start_idx, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_max_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo_max_entries, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_buf_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo_buf_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_total_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo_total_size_, NDR_POINTER_REF, "Pointer to Total Size (uint32)",hf_samr_samr_QueryDisplayInfo_total_size);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_total_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo_total_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_returned_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo_returned_size_, NDR_POINTER_REF, "Pointer to Returned Size (uint32)",hf_samr_samr_QueryDisplayInfo_returned_size);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_returned_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo_returned_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_DispInfo)",hf_samr_samr_QueryDisplayInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_DispInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryDisplayInfo( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_DomainDisplayInformation level, */
/* IDL: [in] uint32 start_idx, */
/* IDL: [in] uint32 max_entries, */
/* IDL: [in] uint32 buf_size, */
/* IDL: [out] [ref] uint32 *total_size, */
/* IDL: [out] [ref] uint32 *returned_size, */
/* IDL: [out] [ref] [switch_is(level)] samr_DispInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_QueryDisplayInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryDisplayInfo";
	offset = samr_dissect_element_QueryDisplayInfo_total_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_QueryDisplayInfo_returned_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_QueryDisplayInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryDisplayInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryDisplayInfo";
	offset = samr_dissect_element_QueryDisplayInfo_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo_start_idx(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo_max_entries(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo_buf_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetDisplayEnumerationIndex_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_GetDisplayEnumerationIndex_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetDisplayEnumerationIndex_name_, NDR_POINTER_REF, "Pointer to Name (lsa_String)",hf_samr_samr_GetDisplayEnumerationIndex_name);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_GetDisplayEnumerationIndex_name);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetDisplayEnumerationIndex_idx_, NDR_POINTER_REF, "Pointer to Idx (uint32)",hf_samr_samr_GetDisplayEnumerationIndex_idx);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex_idx_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_GetDisplayEnumerationIndex_idx, 0);

	return offset;
}

/* IDL: NTSTATUS samr_GetDisplayEnumerationIndex( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] uint16 level, */
/* IDL: [in] [ref] lsa_String *name, */
/* IDL: [out] [ref] uint32 *idx */
/* IDL: ); */

static unsigned
samr_dissect_GetDisplayEnumerationIndex_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="GetDisplayEnumerationIndex";
	offset = samr_dissect_element_GetDisplayEnumerationIndex_idx(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_GetDisplayEnumerationIndex_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="GetDisplayEnumerationIndex";
	offset = samr_dissect_element_GetDisplayEnumerationIndex_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_GetDisplayEnumerationIndex_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_GetDisplayEnumerationIndex_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_TestPrivateFunctionsDomain_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_TestPrivateFunctionsDomain_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_TestPrivateFunctionsDomain_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

/* IDL: NTSTATUS samr_TestPrivateFunctionsDomain( */
/* IDL: [in] [ref] policy_handle *domain_handle */
/* IDL: ); */

static unsigned
samr_dissect_TestPrivateFunctionsDomain_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="TestPrivateFunctionsDomain";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_TestPrivateFunctionsDomain_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="TestPrivateFunctionsDomain";
	offset = samr_dissect_element_TestPrivateFunctionsDomain_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_TestPrivateFunctionsUser_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_TestPrivateFunctionsUser_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_TestPrivateFunctionsUser_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, 0);

	return offset;
}

/* IDL: NTSTATUS samr_TestPrivateFunctionsUser( */
/* IDL: [in] [ref] policy_handle *user_handle */
/* IDL: ); */

static unsigned
samr_dissect_TestPrivateFunctionsUser_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="TestPrivateFunctionsUser";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_TestPrivateFunctionsUser_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="TestPrivateFunctionsUser";
	offset = samr_dissect_element_TestPrivateFunctionsUser_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_GetUserPwInfo_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetUserPwInfo_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_GetUserPwInfo_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetUserPwInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetUserPwInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_PwInfo)",hf_samr_samr_GetUserPwInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_GetUserPwInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_PwInfo(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_GetUserPwInfo_info,0);

	return offset;
}

/* IDL: NTSTATUS samr_GetUserPwInfo( */
/* IDL: [in] [ref] policy_handle *user_handle, */
/* IDL: [out] [ref] samr_PwInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_GetUserPwInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="GetUserPwInfo";
	offset = samr_dissect_element_GetUserPwInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_GetUserPwInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="GetUserPwInfo";
	offset = samr_dissect_element_GetUserPwInfo_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_RemoveMemberFromForeignDomain_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RemoveMemberFromForeignDomain_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_RemoveMemberFromForeignDomain_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_RemoveMemberFromForeignDomain_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RemoveMemberFromForeignDomain_sid_, NDR_POINTER_REF, "Pointer to Sid (dom_sid2)",hf_samr_samr_RemoveMemberFromForeignDomain_sid);

	return offset;
}

static unsigned
samr_dissect_element_RemoveMemberFromForeignDomain_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_dom_sid2(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_RemoveMemberFromForeignDomain( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [ref] dom_sid2 *sid */
/* IDL: ); */

static unsigned
samr_dissect_RemoveMemberFromForeignDomain_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="RemoveMemberFromForeignDomain";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_RemoveMemberFromForeignDomain_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="RemoveMemberFromForeignDomain";
	offset = samr_dissect_element_RemoveMemberFromForeignDomain_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_RemoveMemberFromForeignDomain_sid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo2_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDomainInfo2_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo2_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainInfoClass(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDomainInfo2_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDomainInfo2_info_, NDR_POINTER_REF, "Pointer to Info (samr_DomainInfo)",hf_samr_samr_QueryDomainInfo2_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo2_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDomainInfo2_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_DomainInfo)",hf_samr_samr_QueryDomainInfo2_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryDomainInfo2_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_DomainInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDomainInfo2_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryDomainInfo2( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_DomainInfoClass level, */
/* IDL: [out] [ref] [switch_is(level)] samr_DomainInfo **info */
/* IDL: ); */

static unsigned
samr_dissect_QueryDomainInfo2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryDomainInfo2";
	offset = samr_dissect_element_QueryDomainInfo2_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryDomainInfo2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryDomainInfo2";
	offset = samr_dissect_element_QueryDomainInfo2_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDomainInfo2_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo2_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryUserInfo2_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo2_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_UserInfoLevel(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryUserInfo2_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryUserInfo2_info_, NDR_POINTER_REF, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo2_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo2_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryUserInfo2_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo2_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryUserInfo2_info__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_UserInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryUserInfo2_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryUserInfo2( */
/* IDL: [in] [ref] policy_handle *user_handle, */
/* IDL: [in] samr_UserInfoLevel level, */
/* IDL: [out] [ref] [switch_is(level)] samr_UserInfo **info */
/* IDL: ); */

static unsigned
samr_dissect_QueryUserInfo2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryUserInfo2";
	offset = samr_dissect_element_QueryUserInfo2_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryUserInfo2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryUserInfo2";
	offset = samr_dissect_element_QueryUserInfo2_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryUserInfo2_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo2_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainDisplayInformation(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo2_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_start_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo2_start_idx, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_max_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo2_max_entries, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_buf_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo2_buf_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_total_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo2_total_size_, NDR_POINTER_REF, "Pointer to Total Size (uint32)",hf_samr_samr_QueryDisplayInfo2_total_size);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_total_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo2_total_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_returned_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo2_returned_size_, NDR_POINTER_REF, "Pointer to Returned Size (uint32)",hf_samr_samr_QueryDisplayInfo2_returned_size);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_returned_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo2_returned_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo2_info_, NDR_POINTER_REF, "Pointer to Info (samr_DispInfo)",hf_samr_samr_QueryDisplayInfo2_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo2_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_DispInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo2_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryDisplayInfo2( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_DomainDisplayInformation level, */
/* IDL: [in] uint32 start_idx, */
/* IDL: [in] uint32 max_entries, */
/* IDL: [in] uint32 buf_size, */
/* IDL: [out] [ref] uint32 *total_size, */
/* IDL: [out] [ref] uint32 *returned_size, */
/* IDL: [out] [ref] [switch_is(level)] samr_DispInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_QueryDisplayInfo2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryDisplayInfo2";
	offset = samr_dissect_element_QueryDisplayInfo2_total_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_QueryDisplayInfo2_returned_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_QueryDisplayInfo2_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryDisplayInfo2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryDisplayInfo2";
	offset = samr_dissect_element_QueryDisplayInfo2_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo2_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo2_start_idx(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo2_max_entries(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo2_buf_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex2_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetDisplayEnumerationIndex2_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex2_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainDisplayInformation(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_GetDisplayEnumerationIndex2_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex2_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetDisplayEnumerationIndex2_name_, NDR_POINTER_REF, "Pointer to Name (lsa_String)",hf_samr_samr_GetDisplayEnumerationIndex2_name);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex2_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_GetDisplayEnumerationIndex2_name);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex2_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetDisplayEnumerationIndex2_idx_, NDR_POINTER_REF, "Pointer to Idx (uint32)",hf_samr_samr_GetDisplayEnumerationIndex2_idx);

	return offset;
}

static unsigned
samr_dissect_element_GetDisplayEnumerationIndex2_idx_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_GetDisplayEnumerationIndex2_idx, 0);

	return offset;
}

/* IDL: NTSTATUS samr_GetDisplayEnumerationIndex2( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_DomainDisplayInformation level, */
/* IDL: [in] [ref] lsa_String *name, */
/* IDL: [out] [ref] uint32 *idx */
/* IDL: ); */

static unsigned
samr_dissect_GetDisplayEnumerationIndex2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="GetDisplayEnumerationIndex2";
	offset = samr_dissect_element_GetDisplayEnumerationIndex2_idx(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_GetDisplayEnumerationIndex2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="GetDisplayEnumerationIndex2";
	offset = samr_dissect_element_GetDisplayEnumerationIndex2_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_GetDisplayEnumerationIndex2_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_GetDisplayEnumerationIndex2_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser2_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_account_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser2_account_name_, NDR_POINTER_REF, "Pointer to Account Name (lsa_String)",hf_samr_samr_CreateUser2_account_name);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_account_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 3|PIDL_SET_COL_INFO|PIDL_STR_SAVE, hf_samr_samr_CreateUser2_account_name);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_acct_flags(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_AcctFlags(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_CreateUser2_acct_flags, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_UserAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_user_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser2_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_USER);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_access_granted(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser2_access_granted_, NDR_POINTER_REF, "Pointer to Access Granted (uint32)",hf_samr_samr_CreateUser2_access_granted);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_access_granted_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_CreateUser2_access_granted, 0);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_CreateUser2_rid_, NDR_POINTER_REF, "Pointer to Rid (uint32)",hf_samr_rid);

	return offset;
}

static unsigned
samr_dissect_element_CreateUser2_rid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

/* IDL: NTSTATUS samr_CreateUser2( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] [ref] lsa_String *account_name, */
/* IDL: [in] samr_AcctFlags acct_flags, */
/* IDL: [in] samr_UserAccessMask access_mask, */
/* IDL: [out] [ref] policy_handle *user_handle, */
/* IDL: [out] [ref] uint32 *access_granted, */
/* IDL: [out] [ref] uint32 *rid */
/* IDL: ); */

static unsigned
samr_dissect_CreateUser2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="CreateUser2";
	offset = samr_dissect_element_CreateUser2_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_CreateUser2_access_granted(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_CreateUser2_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_CreateUser2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="CreateUser2";
	offset = samr_dissect_element_CreateUser2_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateUser2_account_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateUser2_acct_flags(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_CreateUser2_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo3_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_DomainDisplayInformation(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo3_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_start_idx(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo3_start_idx, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_max_entries(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo3_max_entries, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_buf_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo3_buf_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_total_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo3_total_size_, NDR_POINTER_REF, "Pointer to Total Size (uint32)",hf_samr_samr_QueryDisplayInfo3_total_size);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_total_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo3_total_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_returned_size(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo3_returned_size_, NDR_POINTER_REF, "Pointer to Returned Size (uint32)",hf_samr_samr_QueryDisplayInfo3_returned_size);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_returned_size_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo3_returned_size, 0);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_QueryDisplayInfo3_info_, NDR_POINTER_REF, "Pointer to Info (samr_DispInfo)",hf_samr_samr_QueryDisplayInfo3_info);

	return offset;
}

static unsigned
samr_dissect_element_QueryDisplayInfo3_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_DispInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_QueryDisplayInfo3_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_QueryDisplayInfo3( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] samr_DomainDisplayInformation level, */
/* IDL: [in] uint32 start_idx, */
/* IDL: [in] uint32 max_entries, */
/* IDL: [in] uint32 buf_size, */
/* IDL: [out] [ref] uint32 *total_size, */
/* IDL: [out] [ref] uint32 *returned_size, */
/* IDL: [out] [ref] [switch_is(level)] samr_DispInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_QueryDisplayInfo3_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="QueryDisplayInfo3";
	offset = samr_dissect_element_QueryDisplayInfo3_total_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_QueryDisplayInfo3_returned_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_QueryDisplayInfo3_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_QueryDisplayInfo3_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="QueryDisplayInfo3";
	offset = samr_dissect_element_QueryDisplayInfo3_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo3_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo3_start_idx(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo3_max_entries(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_QueryDisplayInfo3_buf_size(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_AddMultipleMembersToAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_AddMultipleMembersToAlias_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_AddMultipleMembersToAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_AddMultipleMembersToAlias_sids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_AddMultipleMembersToAlias_sids_, NDR_POINTER_REF, "Pointer to Sids (lsa_SidArray)",hf_samr_samr_AddMultipleMembersToAlias_sids);

	return offset;
}

static unsigned
samr_dissect_element_AddMultipleMembersToAlias_sids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_lsa_SidArray(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_AddMultipleMembersToAlias( */
/* IDL: [in] [ref] policy_handle *alias_handle, */
/* IDL: [in] [ref] lsa_SidArray *sids */
/* IDL: ); */

static unsigned
samr_dissect_AddMultipleMembersToAlias_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="AddMultipleMembersToAlias";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_AddMultipleMembersToAlias_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="AddMultipleMembersToAlias";
	offset = samr_dissect_element_AddMultipleMembersToAlias_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_AddMultipleMembersToAlias_sids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_RemoveMultipleMembersFromAlias_alias_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RemoveMultipleMembersFromAlias_alias_handle_, NDR_POINTER_REF, "Pointer to Alias Handle (policy_handle)",hf_samr_alias_handle);

	return offset;
}

static unsigned
samr_dissect_element_RemoveMultipleMembersFromAlias_alias_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_alias_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_RemoveMultipleMembersFromAlias_sids(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RemoveMultipleMembersFromAlias_sids_, NDR_POINTER_REF, "Pointer to Sids (lsa_SidArray)",hf_samr_samr_RemoveMultipleMembersFromAlias_sids);

	return offset;
}

static unsigned
samr_dissect_element_RemoveMultipleMembersFromAlias_sids_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_lsa_SidArray(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_RemoveMultipleMembersFromAlias( */
/* IDL: [in] [ref] policy_handle *alias_handle, */
/* IDL: [in] [ref] lsa_SidArray *sids */
/* IDL: ); */

static unsigned
samr_dissect_RemoveMultipleMembersFromAlias_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="RemoveMultipleMembersFromAlias";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_RemoveMultipleMembersFromAlias_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="RemoveMultipleMembersFromAlias";
	offset = samr_dissect_element_RemoveMultipleMembersFromAlias_alias_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_RemoveMultipleMembersFromAlias_sids(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_OemChangePasswordUser2_server(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OemChangePasswordUser2_server_, NDR_POINTER_UNIQUE, "Pointer to Server (lsa_AsciiString)",hf_samr_samr_OemChangePasswordUser2_server);

	return offset;
}

static unsigned
samr_dissect_element_OemChangePasswordUser2_server_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_lsa_AsciiString(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_OemChangePasswordUser2_server);

	return offset;
}

static unsigned
samr_dissect_element_OemChangePasswordUser2_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OemChangePasswordUser2_account_, NDR_POINTER_REF, "Pointer to Account (lsa_AsciiString)",hf_samr_samr_OemChangePasswordUser2_account);

	return offset;
}

static unsigned
samr_dissect_element_OemChangePasswordUser2_account_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_lsa_AsciiString(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_OemChangePasswordUser2_account);

	return offset;
}

static unsigned
samr_dissect_element_OemChangePasswordUser2_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OemChangePasswordUser2_password_, NDR_POINTER_UNIQUE, "Pointer to Password (samr_CryptPassword)",hf_samr_samr_OemChangePasswordUser2_password);

	return offset;
}

static unsigned
samr_dissect_element_OemChangePasswordUser2_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPassword(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_OemChangePasswordUser2_password,0);

	return offset;
}

static unsigned
samr_dissect_element_OemChangePasswordUser2_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_OemChangePasswordUser2_hash_, NDR_POINTER_UNIQUE, "Pointer to Hash (samr_Password)",hf_samr_samr_OemChangePasswordUser2_hash);

	return offset;
}

static unsigned
samr_dissect_element_OemChangePasswordUser2_hash_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_OemChangePasswordUser2_hash,0);

	return offset;
}

/* IDL: NTSTATUS samr_OemChangePasswordUser2( */
/* IDL: [in] [unique(1)] lsa_AsciiString *server, */
/* IDL: [in] [ref] lsa_AsciiString *account, */
/* IDL: [in] [unique(1)] samr_CryptPassword *password, */
/* IDL: [in] [unique(1)] samr_Password *hash */
/* IDL: ); */

static unsigned
samr_dissect_OemChangePasswordUser2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="OemChangePasswordUser2";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_OemChangePasswordUser2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="OemChangePasswordUser2";
	offset = samr_dissect_element_OemChangePasswordUser2_server(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OemChangePasswordUser2_account(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OemChangePasswordUser2_password(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_OemChangePasswordUser2_hash(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_server(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser2_server_, NDR_POINTER_UNIQUE, "Pointer to Server (lsa_String)",hf_samr_samr_ChangePasswordUser2_server);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_server_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ChangePasswordUser2_server);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser2_account_, NDR_POINTER_REF, "Pointer to Account (lsa_String)",hf_samr_samr_ChangePasswordUser2_account);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_account_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ChangePasswordUser2_account);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_nt_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser2_nt_password_, NDR_POINTER_UNIQUE, "Pointer to Nt Password (samr_CryptPassword)",hf_samr_samr_ChangePasswordUser2_nt_password);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_nt_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPassword(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser2_nt_password,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_nt_verifier(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser2_nt_verifier_, NDR_POINTER_UNIQUE, "Pointer to Nt Verifier (samr_Password)",hf_samr_samr_ChangePasswordUser2_nt_verifier);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_nt_verifier_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser2_nt_verifier,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_lm_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ChangePasswordUser2_lm_change, 0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_lm_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser2_lm_password_, NDR_POINTER_UNIQUE, "Pointer to Lm Password (samr_CryptPassword)",hf_samr_samr_ChangePasswordUser2_lm_password);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_lm_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPassword(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser2_lm_password,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_lm_verifier(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser2_lm_verifier_, NDR_POINTER_UNIQUE, "Pointer to Lm Verifier (samr_Password)",hf_samr_samr_ChangePasswordUser2_lm_verifier);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser2_lm_verifier_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser2_lm_verifier,0);

	return offset;
}

/* IDL: NTSTATUS samr_ChangePasswordUser2( */
/* IDL: [in] [unique(1)] lsa_String *server, */
/* IDL: [in] [ref] lsa_String *account, */
/* IDL: [in] [unique(1)] samr_CryptPassword *nt_password, */
/* IDL: [in] [unique(1)] samr_Password *nt_verifier, */
/* IDL: [in] uint8 lm_change, */
/* IDL: [in] [unique(1)] samr_CryptPassword *lm_password, */
/* IDL: [in] [unique(1)] samr_Password *lm_verifier */
/* IDL: ); */

static unsigned
samr_dissect_ChangePasswordUser2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="ChangePasswordUser2";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_ChangePasswordUser2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="ChangePasswordUser2";
	offset = samr_dissect_element_ChangePasswordUser2_server(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser2_account(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser2_nt_password(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser2_nt_verifier(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser2_lm_change(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser2_lm_password(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser2_lm_verifier(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_GetDomPwInfo_domain_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetDomPwInfo_domain_name_, NDR_POINTER_UNIQUE, "Pointer to Domain Name (lsa_String)",hf_samr_samr_GetDomPwInfo_domain_name);

	return offset;
}

static unsigned
samr_dissect_element_GetDomPwInfo_domain_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 3|PIDL_SET_COL_INFO, hf_samr_samr_GetDomPwInfo_domain_name);

	return offset;
}

static unsigned
samr_dissect_element_GetDomPwInfo_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetDomPwInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_PwInfo)",hf_samr_samr_GetDomPwInfo_info);

	return offset;
}

static unsigned
samr_dissect_element_GetDomPwInfo_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_PwInfo(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_GetDomPwInfo_info,0);

	return offset;
}

/* IDL: NTSTATUS samr_GetDomPwInfo( */
/* IDL: [in] [unique(1)] lsa_String *domain_name, */
/* IDL: [out] [ref] samr_PwInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_GetDomPwInfo_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="GetDomPwInfo";
	offset = samr_dissect_element_GetDomPwInfo_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_GetDomPwInfo_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="GetDomPwInfo";
	offset = samr_dissect_element_GetDomPwInfo_domain_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_Connect2_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect2_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_samr_samr_Connect2_system_name);

	return offset;
}

static unsigned
samr_dissect_element_Connect2_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	char *data;

	offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect2_system_name, false, &data);
	proto_item_append_text(tree, ": %s", data);

	return offset;
}

static unsigned
samr_dissect_element_Connect2_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect2_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect2_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_Connect2_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT);

	return offset;
}

/* IDL: NTSTATUS samr_Connect2( */
/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *system_name, */
/* IDL: [in] samr_ConnectAccessMask access_mask, */
/* IDL: [out] [ref] policy_handle *connect_handle */
/* IDL: ); */

static unsigned
samr_dissect_Connect2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="Connect2";
	offset = samr_dissect_element_Connect2_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_Connect2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Connect2";
	offset = samr_dissect_element_Connect2_system_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect2_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo2_user_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetUserInfo2_user_handle_, NDR_POINTER_REF, "Pointer to User Handle (policy_handle)",hf_samr_user_handle);

	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo2_user_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_user_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo2_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_UserInfoLevel(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetUserInfo2_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo2_info(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetUserInfo2_info_, NDR_POINTER_REF, "Pointer to Info (samr_UserInfo)",hf_samr_samr_SetUserInfo2_info);

	return offset;
}

static unsigned
samr_dissect_element_SetUserInfo2_info_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_UserInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetUserInfo2_info, 0);

	return offset;
}

/* IDL: NTSTATUS samr_SetUserInfo2( */
/* IDL: [in] [ref] policy_handle *user_handle, */
/* IDL: [in] samr_UserInfoLevel level, */
/* IDL: [in] [ref] [switch_is(level)] samr_UserInfo *info */
/* IDL: ); */

static unsigned
samr_dissect_SetUserInfo2_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetUserInfo2";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetUserInfo2_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetUserInfo2";
	offset = samr_dissect_element_SetUserInfo2_user_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetUserInfo2_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetUserInfo2_info(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetBootKeyInformation_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetBootKeyInformation_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_SetBootKeyInformation_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetBootKeyInformation_unknown1(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetBootKeyInformation_unknown1, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetBootKeyInformation_unknown2(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetBootKeyInformation_unknown2, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetBootKeyInformation_unknown3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetBootKeyInformation_unknown3, 0);

	return offset;
}

/* IDL: NTSTATUS samr_SetBootKeyInformation( */
/* IDL: [in] [ref] policy_handle *connect_handle, */
/* IDL: [in] uint32 unknown1, */
/* IDL: [in] uint32 unknown2, */
/* IDL: [in] uint32 unknown3 */
/* IDL: ); */

static unsigned
samr_dissect_SetBootKeyInformation_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetBootKeyInformation";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetBootKeyInformation_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetBootKeyInformation";
	offset = samr_dissect_element_SetBootKeyInformation_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetBootKeyInformation_unknown1(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetBootKeyInformation_unknown2(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetBootKeyInformation_unknown3(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_GetBootKeyInformation_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetBootKeyInformation_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_GetBootKeyInformation_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_GetBootKeyInformation_unknown(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_GetBootKeyInformation_unknown_, NDR_POINTER_REF, "Pointer to Unknown (uint32)",hf_samr_samr_GetBootKeyInformation_unknown);

	return offset;
}

static unsigned
samr_dissect_element_GetBootKeyInformation_unknown_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_GetBootKeyInformation_unknown, 0);

	return offset;
}

/* IDL: NTSTATUS samr_GetBootKeyInformation( */
/* IDL: [in] [ref] policy_handle *connect_handle, */
/* IDL: [out] [ref] uint32 *unknown */
/* IDL: ); */

static unsigned
samr_dissect_GetBootKeyInformation_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="GetBootKeyInformation";
	offset = samr_dissect_element_GetBootKeyInformation_unknown(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_GetBootKeyInformation_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="GetBootKeyInformation";
	offset = samr_dissect_element_GetBootKeyInformation_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_Connect3_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect3_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_samr_samr_Connect3_system_name);

	return offset;
}

static unsigned
samr_dissect_element_Connect3_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	char *data;

	offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect3_system_name, false, &data);
	proto_item_append_text(tree, ": %s", data);

	return offset;
}

static unsigned
samr_dissect_element_Connect3_unknown(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Connect3_unknown, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect3_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect3_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect3_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_Connect3_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT);

	return offset;
}

/* IDL: NTSTATUS samr_Connect3( */
/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *system_name, */
/* IDL: [in] uint32 unknown, */
/* IDL: [in] samr_ConnectAccessMask access_mask, */
/* IDL: [out] [ref] policy_handle *connect_handle */
/* IDL: ); */

static unsigned
samr_dissect_Connect3_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="Connect3";
	offset = samr_dissect_element_Connect3_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_Connect3_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Connect3";
	offset = samr_dissect_element_Connect3_system_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect3_unknown(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect3_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_Connect4_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect4_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_samr_samr_Connect4_system_name);

	return offset;
}

static unsigned
samr_dissect_element_Connect4_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	char *data;

	offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect4_system_name, false, &data);
	proto_item_append_text(tree, ": %s", data);

	return offset;
}

static unsigned
samr_dissect_element_Connect4_client_version(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_ConnectVersion(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Connect4_client_version, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect4_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect4_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect4_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_Connect4_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT);

	return offset;
}

/* IDL: NTSTATUS samr_Connect4( */
/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *system_name, */
/* IDL: [in] samr_ConnectVersion client_version, */
/* IDL: [in] samr_ConnectAccessMask access_mask, */
/* IDL: [out] [ref] policy_handle *connect_handle */
/* IDL: ); */

static unsigned
samr_dissect_Connect4_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="Connect4";
	offset = samr_dissect_element_Connect4_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_Connect4_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Connect4";
	offset = samr_dissect_element_Connect4_system_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect4_client_version(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect4_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_server(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_server_, NDR_POINTER_UNIQUE, "Pointer to Server (lsa_String)",hf_samr_samr_ChangePasswordUser3_server);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_server_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ChangePasswordUser3_server);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_account_, NDR_POINTER_REF, "Pointer to Account (lsa_String)",hf_samr_samr_ChangePasswordUser3_account);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_account_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ChangePasswordUser3_account);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_nt_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_nt_password_, NDR_POINTER_UNIQUE, "Pointer to Nt Password (samr_CryptPassword)",hf_samr_samr_ChangePasswordUser3_nt_password);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_nt_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPassword(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser3_nt_password,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_nt_verifier(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_nt_verifier_, NDR_POINTER_UNIQUE, "Pointer to Nt Verifier (samr_Password)",hf_samr_samr_ChangePasswordUser3_nt_verifier);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_nt_verifier_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser3_nt_verifier,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_lm_change(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ChangePasswordUser3_lm_change, 0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_lm_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_lm_password_, NDR_POINTER_UNIQUE, "Pointer to Lm Password (samr_CryptPassword)",hf_samr_samr_ChangePasswordUser3_lm_password);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_lm_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPassword(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser3_lm_password,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_lm_verifier(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_lm_verifier_, NDR_POINTER_UNIQUE, "Pointer to Lm Verifier (samr_Password)",hf_samr_samr_ChangePasswordUser3_lm_verifier);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_lm_verifier_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser3_lm_verifier,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_password3(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_password3_, NDR_POINTER_UNIQUE, "Pointer to Password3 (samr_CryptPassword)",hf_samr_samr_ChangePasswordUser3_password3);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_password3_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_CryptPassword(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser3_password3,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_dominfo(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_dominfo_, NDR_POINTER_REF, "Pointer to Dominfo (samr_DomInfo1)",hf_samr_samr_ChangePasswordUser3_dominfo);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_dominfo_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_dominfo__, NDR_POINTER_UNIQUE, "Pointer to Dominfo (samr_DomInfo1)",hf_samr_samr_ChangePasswordUser3_dominfo);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_dominfo__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_DomInfo1(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser3_dominfo,0);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_reject(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_reject_, NDR_POINTER_REF, "Pointer to Reject (userPwdChangeFailureInformation)",hf_samr_samr_ChangePasswordUser3_reject);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_reject_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser3_reject__, NDR_POINTER_UNIQUE, "Pointer to Reject (userPwdChangeFailureInformation)",hf_samr_samr_ChangePasswordUser3_reject);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser3_reject__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_userPwdChangeFailureInformation(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser3_reject,0);

	return offset;
}

/* IDL: NTSTATUS samr_ChangePasswordUser3( */
/* IDL: [in] [unique(1)] lsa_String *server, */
/* IDL: [in] [ref] lsa_String *account, */
/* IDL: [in] [unique(1)] samr_CryptPassword *nt_password, */
/* IDL: [in] [unique(1)] samr_Password *nt_verifier, */
/* IDL: [in] uint8 lm_change, */
/* IDL: [in] [unique(1)] samr_CryptPassword *lm_password, */
/* IDL: [in] [unique(1)] samr_Password *lm_verifier, */
/* IDL: [in] [unique(1)] samr_CryptPassword *password3, */
/* IDL: [out] [ref] samr_DomInfo1 **dominfo, */
/* IDL: [out] [ref] userPwdChangeFailureInformation **reject */
/* IDL: ); */

static unsigned
samr_dissect_ChangePasswordUser3_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="ChangePasswordUser3";
	offset = samr_dissect_element_ChangePasswordUser3_dominfo(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_ChangePasswordUser3_reject(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_ChangePasswordUser3_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="ChangePasswordUser3";
	offset = samr_dissect_element_ChangePasswordUser3_server(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser3_account(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser3_nt_password(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser3_nt_verifier(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser3_lm_change(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser3_lm_password(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser3_lm_verifier(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser3_password3(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_Connect5_system_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect5_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_samr_samr_Connect5_system_name);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_system_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	char *data;

	offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_samr_samr_Connect5_system_name, false, &data);
	proto_item_append_text(tree, ": %s", data);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_access_mask(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_access_mask, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_level_in(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Connect5_level_in, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_info_in(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect5_info_in_, NDR_POINTER_REF, "Pointer to Info In (samr_ConnectInfo)",hf_samr_samr_Connect5_info_in);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_info_in_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_ConnectInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Connect5_info_in, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_level_out(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect5_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_samr_samr_Connect5_level_out);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_level_out_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Connect5_level_out, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_info_out(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect5_info_out_, NDR_POINTER_REF, "Pointer to Info Out (samr_ConnectInfo)",hf_samr_samr_Connect5_info_out);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_info_out_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_ConnectInfo(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_Connect5_info_out, 0);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_connect_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_Connect5_connect_handle_, NDR_POINTER_REF, "Pointer to Connect Handle (policy_handle)",hf_samr_connect_handle);

	return offset;
}

static unsigned
samr_dissect_element_Connect5_connect_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_connect_handle, PIDL_POLHND_OPEN|PIDL_POLHND_TYPE_SAMR_CONNECT);

	return offset;
}

/* IDL: NTSTATUS samr_Connect5( */
/* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *system_name, */
/* IDL: [in] samr_ConnectAccessMask access_mask, */
/* IDL: [in] uint32 level_in, */
/* IDL: [in] [ref] [switch_is(level_in)] samr_ConnectInfo *info_in, */
/* IDL: [out] [ref] uint32 *level_out, */
/* IDL: [out] [ref] [switch_is(*level_out)] samr_ConnectInfo *info_out, */
/* IDL: [out] [ref] policy_handle *connect_handle */
/* IDL: ); */

static unsigned
samr_dissect_Connect5_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="Connect5";
	offset = samr_dissect_element_Connect5_level_out(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_Connect5_info_out(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = samr_dissect_element_Connect5_connect_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_Connect5_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Connect5";
	offset = samr_dissect_element_Connect5_system_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect5_access_mask(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect5_level_in(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_Connect5_info_in(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_RidToSid_domain_handle(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidToSid_domain_handle_, NDR_POINTER_REF, "Pointer to Domain Handle (policy_handle)",hf_samr_domain_handle);

	return offset;
}

static unsigned
samr_dissect_element_RidToSid_domain_handle_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_samr_domain_handle, 0);

	return offset;
}

static unsigned
samr_dissect_element_RidToSid_rid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_rid, 0);

	return offset;
}

static unsigned
samr_dissect_element_RidToSid_sid(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidToSid_sid_, NDR_POINTER_REF, "Pointer to Sid (dom_sid2)",hf_samr_samr_RidToSid_sid);

	return offset;
}

static unsigned
samr_dissect_element_RidToSid_sid_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_RidToSid_sid__, NDR_POINTER_UNIQUE, "Pointer to Sid (dom_sid2)",hf_samr_samr_RidToSid_sid);

	return offset;
}

static unsigned
samr_dissect_element_RidToSid_sid__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=cnf_dissect_dom_sid2(tvb, offset, pinfo, tree, di, drep);

	return offset;
}

/* IDL: NTSTATUS samr_RidToSid( */
/* IDL: [in] [ref] policy_handle *domain_handle, */
/* IDL: [in] uint32 rid, */
/* IDL: [out] [ref] dom_sid2 **sid */
/* IDL: ); */

static unsigned
samr_dissect_RidToSid_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="RidToSid";
	offset = samr_dissect_element_RidToSid_sid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_RidToSid_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="RidToSid";
	offset = samr_dissect_element_RidToSid_domain_handle(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_RidToSid_rid(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_SetDsrmPassword_name(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetDsrmPassword_name_, NDR_POINTER_UNIQUE, "Pointer to Name (lsa_String)",hf_samr_samr_SetDsrmPassword_name);

	return offset;
}

static unsigned
samr_dissect_element_SetDsrmPassword_name_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_SetDsrmPassword_name);

	return offset;
}

static unsigned
samr_dissect_element_SetDsrmPassword_unknown(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_SetDsrmPassword_unknown, 0);

	return offset;
}

static unsigned
samr_dissect_element_SetDsrmPassword_hash(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_SetDsrmPassword_hash_, NDR_POINTER_UNIQUE, "Pointer to Hash (samr_Password)",hf_samr_samr_SetDsrmPassword_hash);

	return offset;
}

static unsigned
samr_dissect_element_SetDsrmPassword_hash_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_Password(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_SetDsrmPassword_hash,0);

	return offset;
}

/* IDL: NTSTATUS samr_SetDsrmPassword( */
/* IDL: [in] [unique(1)] lsa_String *name, */
/* IDL: [in] uint32 unknown, */
/* IDL: [in] [unique(1)] samr_Password *hash */
/* IDL: ); */

static unsigned
samr_dissect_SetDsrmPassword_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="SetDsrmPassword";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_SetDsrmPassword_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="SetDsrmPassword";
	offset = samr_dissect_element_SetDsrmPassword_name(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetDsrmPassword_unknown(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_SetDsrmPassword_hash(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

static unsigned
samr_dissect_element_ValidatePassword_level(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_enum_ValidatePasswordLevel(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePassword_level, 0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePassword_req(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidatePassword_req_, NDR_POINTER_REF, "Pointer to Req (samr_ValidatePasswordReq)",hf_samr_samr_ValidatePassword_req);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePassword_req_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_ValidatePasswordReq(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePassword_req, 0);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePassword_rep(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidatePassword_rep_, NDR_POINTER_REF, "Pointer to Rep (samr_ValidatePasswordRep)",hf_samr_samr_ValidatePassword_rep);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePassword_rep_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ValidatePassword_rep__, NDR_POINTER_UNIQUE, "Pointer to Rep (samr_ValidatePasswordRep)",hf_samr_samr_ValidatePassword_rep);

	return offset;
}

static unsigned
samr_dissect_element_ValidatePassword_rep__(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_ValidatePasswordRep(tvb, offset, pinfo, tree, di, drep, hf_samr_samr_ValidatePassword_rep, 0);

	return offset;
}

/* IDL: NTSTATUS samr_ValidatePassword( */
/* IDL: [in] samr_ValidatePasswordLevel level, */
/* IDL: [in] [ref] [switch_is(level)] samr_ValidatePasswordReq *req, */
/* IDL: [out] [ref] [switch_is(level)] samr_ValidatePasswordRep **rep */
/* IDL: ); */

static unsigned
samr_dissect_ValidatePassword_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="ValidatePassword";
	offset = samr_dissect_element_ValidatePassword_rep(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);

	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_ValidatePassword_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="ValidatePassword";
	offset = samr_dissect_element_ValidatePassword_level(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ValidatePassword_req(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}

/* IDL: void samr_Opnum68NotUsedOnWire( */
/* IDL:  */
/* IDL: ); */

static unsigned
samr_dissect_Opnum68NotUsedOnWire_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum68NotUsedOnWire";
	return offset;
}

static unsigned
samr_dissect_Opnum68NotUsedOnWire_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum68NotUsedOnWire";
	return offset;
}

/* IDL: void samr_Opnum69NotUsedOnWire( */
/* IDL:  */
/* IDL: ); */

static unsigned
samr_dissect_Opnum69NotUsedOnWire_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum69NotUsedOnWire";
	return offset;
}

static unsigned
samr_dissect_Opnum69NotUsedOnWire_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum69NotUsedOnWire";
	return offset;
}

/* IDL: void samr_Opnum70NotUsedOnWire( */
/* IDL:  */
/* IDL: ); */

static unsigned
samr_dissect_Opnum70NotUsedOnWire_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum70NotUsedOnWire";
	return offset;
}

static unsigned
samr_dissect_Opnum70NotUsedOnWire_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum70NotUsedOnWire";
	return offset;
}

/* IDL: void samr_Opnum71NotUsedOnWire( */
/* IDL:  */
/* IDL: ); */

static unsigned
samr_dissect_Opnum71NotUsedOnWire_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum71NotUsedOnWire";
	return offset;
}

static unsigned
samr_dissect_Opnum71NotUsedOnWire_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum71NotUsedOnWire";
	return offset;
}

/* IDL: void samr_Opnum72NotUsedOnWire( */
/* IDL:  */
/* IDL: ); */

static unsigned
samr_dissect_Opnum72NotUsedOnWire_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum72NotUsedOnWire";
	return offset;
}

static unsigned
samr_dissect_Opnum72NotUsedOnWire_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="Opnum72NotUsedOnWire";
	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser4_server(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser4_server_, NDR_POINTER_UNIQUE, "Pointer to Server (lsa_String)",hf_samr_samr_ChangePasswordUser4_server);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser4_server_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ChangePasswordUser4_server);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser4_account(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser4_account_, NDR_POINTER_REF, "Pointer to Account (lsa_String)",hf_samr_samr_ChangePasswordUser4_account);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser4_account_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset=dissect_ndr_lsa_String(tvb, offset, pinfo, tree, di, drep, 0, hf_samr_samr_ChangePasswordUser4_account);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser4_password(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, samr_dissect_element_ChangePasswordUser4_password_, NDR_POINTER_REF, "Pointer to Password (samr_EncryptedPasswordAES)",hf_samr_samr_ChangePasswordUser4_password);

	return offset;
}

static unsigned
samr_dissect_element_ChangePasswordUser4_password_(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	offset = samr_dissect_struct_EncryptedPasswordAES(tvb,offset,pinfo,tree,di,drep,hf_samr_samr_ChangePasswordUser4_password,0);

	return offset;
}

/* IDL: NTSTATUS samr_ChangePasswordUser4( */
/* IDL: [in] [unique(1)] lsa_String *server, */
/* IDL: [in] [ref] lsa_String *account, */
/* IDL: [in] [ref] samr_EncryptedPasswordAES *password */
/* IDL: ); */

static unsigned
samr_dissect_ChangePasswordUser4_response(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	uint32_t status;

	di->dcerpc_procedure_name="ChangePasswordUser4";
	offset = dissect_ntstatus(tvb, offset, pinfo, tree, di, drep, hf_samr_status, &status);

	if (status != 0)
		col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(pinfo->pool, status, &NT_errors_ext, "Unknown NT status 0x%08x"));

	return offset;
}

static unsigned
samr_dissect_ChangePasswordUser4_request(tvbuff_t *tvb _U_, unsigned offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
{
	di->dcerpc_procedure_name="ChangePasswordUser4";
	offset = samr_dissect_element_ChangePasswordUser4_server(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser4_account(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	offset = samr_dissect_element_ChangePasswordUser4_password(tvb, offset, pinfo, tree, di, drep);
	offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
	return offset;
}


static const dcerpc_sub_dissector samr_dissectors[] = {
	{ 0, "Connect",
	   samr_dissect_Connect_request, samr_dissect_Connect_response},
	{ 1, "Close",
	   samr_dissect_Close_request, samr_dissect_Close_response},
	{ 2, "SetSecurity",
	   samr_dissect_SetSecurity_request, samr_dissect_SetSecurity_response},
	{ 3, "QuerySecurity",
	   samr_dissect_QuerySecurity_request, samr_dissect_QuerySecurity_response},
	{ 4, "Shutdown",
	   samr_dissect_Shutdown_request, samr_dissect_Shutdown_response},
	{ 5, "LookupDomain",
	   samr_dissect_LookupDomain_request, samr_dissect_LookupDomain_response},
	{ 6, "EnumDomains",
	   samr_dissect_EnumDomains_request, samr_dissect_EnumDomains_response},
	{ 7, "OpenDomain",
	   samr_dissect_OpenDomain_request, samr_dissect_OpenDomain_response},
	{ 8, "QueryDomainInfo",
	   samr_dissect_QueryDomainInfo_request, samr_dissect_QueryDomainInfo_response},
	{ 9, "SetDomainInfo",
	   samr_dissect_SetDomainInfo_request, samr_dissect_SetDomainInfo_response},
	{ 10, "CreateDomainGroup",
	   samr_dissect_CreateDomainGroup_request, samr_dissect_CreateDomainGroup_response},
	{ 11, "EnumDomainGroups",
	   samr_dissect_EnumDomainGroups_request, samr_dissect_EnumDomainGroups_response},
	{ 12, "CreateUser",
	   samr_dissect_CreateUser_request, samr_dissect_CreateUser_response},
	{ 13, "EnumDomainUsers",
	   samr_dissect_EnumDomainUsers_request, samr_dissect_EnumDomainUsers_response},
	{ 14, "CreateDomAlias",
	   samr_dissect_CreateDomAlias_request, samr_dissect_CreateDomAlias_response},
	{ 15, "EnumDomainAliases",
	   samr_dissect_EnumDomainAliases_request, samr_dissect_EnumDomainAliases_response},
	{ 16, "GetAliasMembership",
	   samr_dissect_GetAliasMembership_request, samr_dissect_GetAliasMembership_response},
	{ 17, "LookupNames",
	   samr_dissect_LookupNames_request, samr_dissect_LookupNames_response},
	{ 18, "LookupRids",
	   samr_dissect_LookupRids_request, samr_dissect_LookupRids_response},
	{ 19, "OpenGroup",
	   samr_dissect_OpenGroup_request, samr_dissect_OpenGroup_response},
	{ 20, "QueryGroupInfo",
	   samr_dissect_QueryGroupInfo_request, samr_dissect_QueryGroupInfo_response},
	{ 21, "SetGroupInfo",
	   samr_dissect_SetGroupInfo_request, samr_dissect_SetGroupInfo_response},
	{ 22, "AddGroupMember",
	   samr_dissect_AddGroupMember_request, samr_dissect_AddGroupMember_response},
	{ 23, "DeleteDomainGroup",
	   samr_dissect_DeleteDomainGroup_request, samr_dissect_DeleteDomainGroup_response},
	{ 24, "DeleteGroupMember",
	   samr_dissect_DeleteGroupMember_request, samr_dissect_DeleteGroupMember_response},
	{ 25, "QueryGroupMember",
	   samr_dissect_QueryGroupMember_request, samr_dissect_QueryGroupMember_response},
	{ 26, "SetMemberAttributesOfGroup",
	   samr_dissect_SetMemberAttributesOfGroup_request, samr_dissect_SetMemberAttributesOfGroup_response},
	{ 27, "OpenAlias",
	   samr_dissect_OpenAlias_request, samr_dissect_OpenAlias_response},
	{ 28, "QueryAliasInfo",
	   samr_dissect_QueryAliasInfo_request, samr_dissect_QueryAliasInfo_response},
	{ 29, "SetAliasInfo",
	   samr_dissect_SetAliasInfo_request, samr_dissect_SetAliasInfo_response},
	{ 30, "DeleteDomAlias",
	   samr_dissect_DeleteDomAlias_request, samr_dissect_DeleteDomAlias_response},
	{ 31, "AddAliasMember",
	   samr_dissect_AddAliasMember_request, samr_dissect_AddAliasMember_response},
	{ 32, "DeleteAliasMember",
	   samr_dissect_DeleteAliasMember_request, samr_dissect_DeleteAliasMember_response},
	{ 33, "GetMembersInAlias",
	   samr_dissect_GetMembersInAlias_request, samr_dissect_GetMembersInAlias_response},
	{ 34, "OpenUser",
	   samr_dissect_OpenUser_request, samr_dissect_OpenUser_response},
	{ 35, "DeleteUser",
	   samr_dissect_DeleteUser_request, samr_dissect_DeleteUser_response},
	{ 36, "QueryUserInfo",
	   samr_dissect_QueryUserInfo_request, samr_dissect_QueryUserInfo_response},
	{ 37, "SetUserInfo",
	   samr_dissect_SetUserInfo_request, samr_dissect_SetUserInfo_response},
	{ 38, "ChangePasswordUser",
	   samr_dissect_ChangePasswordUser_request, samr_dissect_ChangePasswordUser_response},
	{ 39, "GetGroupsForUser",
	   samr_dissect_GetGroupsForUser_request, samr_dissect_GetGroupsForUser_response},
	{ 40, "QueryDisplayInfo",
	   samr_dissect_QueryDisplayInfo_request, samr_dissect_QueryDisplayInfo_response},
	{ 41, "GetDisplayEnumerationIndex",
	   samr_dissect_GetDisplayEnumerationIndex_request, samr_dissect_GetDisplayEnumerationIndex_response},
	{ 42, "TestPrivateFunctionsDomain",
	   samr_dissect_TestPrivateFunctionsDomain_request, samr_dissect_TestPrivateFunctionsDomain_response},
	{ 43, "TestPrivateFunctionsUser",
	   samr_dissect_TestPrivateFunctionsUser_request, samr_dissect_TestPrivateFunctionsUser_response},
	{ 44, "GetUserPwInfo",
	   samr_dissect_GetUserPwInfo_request, samr_dissect_GetUserPwInfo_response},
	{ 45, "RemoveMemberFromForeignDomain",
	   samr_dissect_RemoveMemberFromForeignDomain_request, samr_dissect_RemoveMemberFromForeignDomain_response},
	{ 46, "QueryDomainInfo2",
	   samr_dissect_QueryDomainInfo2_request, samr_dissect_QueryDomainInfo2_response},
	{ 47, "QueryUserInfo2",
	   samr_dissect_QueryUserInfo2_request, samr_dissect_QueryUserInfo2_response},
	{ 48, "QueryDisplayInfo2",
	   samr_dissect_QueryDisplayInfo2_request, samr_dissect_QueryDisplayInfo2_response},
	{ 49, "GetDisplayEnumerationIndex2",
	   samr_dissect_GetDisplayEnumerationIndex2_request, samr_dissect_GetDisplayEnumerationIndex2_response},
	{ 50, "CreateUser2",
	   samr_dissect_CreateUser2_request, samr_dissect_CreateUser2_response},
	{ 51, "QueryDisplayInfo3",
	   samr_dissect_QueryDisplayInfo3_request, samr_dissect_QueryDisplayInfo3_response},
	{ 52, "AddMultipleMembersToAlias",
	   samr_dissect_AddMultipleMembersToAlias_request, samr_dissect_AddMultipleMembersToAlias_response},
	{ 53, "RemoveMultipleMembersFromAlias",
	   samr_dissect_RemoveMultipleMembersFromAlias_request, samr_dissect_RemoveMultipleMembersFromAlias_response},
	{ 54, "OemChangePasswordUser2",
	   samr_dissect_OemChangePasswordUser2_request, samr_dissect_OemChangePasswordUser2_response},
	{ 55, "ChangePasswordUser2",
	   samr_dissect_ChangePasswordUser2_request, samr_dissect_ChangePasswordUser2_response},
	{ 56, "GetDomPwInfo",
	   samr_dissect_GetDomPwInfo_request, samr_dissect_GetDomPwInfo_response},
	{ 57, "Connect2",
	   samr_dissect_Connect2_request, samr_dissect_Connect2_response},
	{ 58, "SetUserInfo2",
	   samr_dissect_SetUserInfo2_request, samr_dissect_SetUserInfo2_response},
	{ 59, "SetBootKeyInformation",
	   samr_dissect_SetBootKeyInformation_request, samr_dissect_SetBootKeyInformation_response},
	{ 60, "GetBootKeyInformation",
	   samr_dissect_GetBootKeyInformation_request, samr_dissect_GetBootKeyInformation_response},
	{ 61, "Connect3",
	   samr_dissect_Connect3_request, samr_dissect_Connect3_response},
	{ 62, "Connect4",
	   samr_dissect_Connect4_request, samr_dissect_Connect4_response},
	{ 63, "ChangePasswordUser3",
	   samr_dissect_ChangePasswordUser3_request, samr_dissect_ChangePasswordUser3_response},
	{ 64, "Connect5",
	   samr_dissect_Connect5_request, samr_dissect_Connect5_response},
	{ 65, "RidToSid",
	   samr_dissect_RidToSid_request, samr_dissect_RidToSid_response},
	{ 66, "SetDsrmPassword",
	   samr_dissect_SetDsrmPassword_request, samr_dissect_SetDsrmPassword_response},
	{ 67, "ValidatePassword",
	   samr_dissect_ValidatePassword_request, samr_dissect_ValidatePassword_response},
	{ 68, "Opnum68NotUsedOnWire",
	   samr_dissect_Opnum68NotUsedOnWire_request, samr_dissect_Opnum68NotUsedOnWire_response},
	{ 69, "Opnum69NotUsedOnWire",
	   samr_dissect_Opnum69NotUsedOnWire_request, samr_dissect_Opnum69NotUsedOnWire_response},
	{ 70, "Opnum70NotUsedOnWire",
	   samr_dissect_Opnum70NotUsedOnWire_request, samr_dissect_Opnum70NotUsedOnWire_response},
	{ 71, "Opnum71NotUsedOnWire",
	   samr_dissect_Opnum71NotUsedOnWire_request, samr_dissect_Opnum71NotUsedOnWire_response},
	{ 72, "Opnum72NotUsedOnWire",
	   samr_dissect_Opnum72NotUsedOnWire_request, samr_dissect_Opnum72NotUsedOnWire_response},
	{ 73, "ChangePasswordUser4",
	   samr_dissect_ChangePasswordUser4_request, samr_dissect_ChangePasswordUser4_response},
	{ 0, NULL, NULL, NULL }
};

void proto_register_dcerpc_samr(void)
{
	static hf_register_info hf[] = {
	{ &hf_samr_alias_access_mask,
	  { "Access Mask", "samr.alias.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_alias_handle,
	  { "Alias Handle", "samr.alias_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_connect_access_mask,
	  { "Access Mask", "samr.connect.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_connect_handle,
	  { "Connect Handle", "samr.connect_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_domain_access_mask,
	  { "Access Mask", "samr.domain.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_domain_handle,
	  { "Domain Handle", "samr.domain_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_group_access_mask,
	  { "Access Mask", "samr.group.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_group_handle,
	  { "Group Handle", "samr.group_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_handle,
	  { "Handle", "samr.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_lsa_Strings_count,
	  { "Count", "samr.lsa_Strings.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_lsa_Strings_names,
	  { "Names", "samr.lsa_Strings.names", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_opnum,
	  { "Operation", "samr.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_rid,
	  { "RID", "samr.rid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_AUTOLOCK,
	  { "ACB AUTOLOCK", "samr.samr_AcctFlags.ACB_AUTOLOCK", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_AUTOLOCK_tfs), ( 0x00000400 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_DISABLED,
	  { "ACB DISABLED", "samr.samr_AcctFlags.ACB_DISABLED", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_DISABLED_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_DOMTRUST,
	  { "ACB DOMTRUST", "samr.samr_AcctFlags.ACB_DOMTRUST", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_DOMTRUST_tfs), ( 0x00000040 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_DONT_REQUIRE_PREAUTH,
	  { "ACB DONT REQUIRE PREAUTH", "samr.samr_AcctFlags.ACB_DONT_REQUIRE_PREAUTH", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_DONT_REQUIRE_PREAUTH_tfs), ( 0x00010000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_ENC_TXT_PWD_ALLOWED,
	  { "ACB ENC TXT PWD ALLOWED", "samr.samr_AcctFlags.ACB_ENC_TXT_PWD_ALLOWED", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_ENC_TXT_PWD_ALLOWED_tfs), ( 0x00000800 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_HOMDIRREQ,
	  { "ACB HOMDIRREQ", "samr.samr_AcctFlags.ACB_HOMDIRREQ", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_HOMDIRREQ_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_MNS,
	  { "ACB MNS", "samr.samr_AcctFlags.ACB_MNS", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_MNS_tfs), ( 0x00000020 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_NORMAL,
	  { "ACB NORMAL", "samr.samr_AcctFlags.ACB_NORMAL", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_NORMAL_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_NOT_DELEGATED,
	  { "ACB NOT DELEGATED", "samr.samr_AcctFlags.ACB_NOT_DELEGATED", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_NOT_DELEGATED_tfs), ( 0x00004000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_NO_AUTH_DATA_REQD,
	  { "ACB NO AUTH DATA REQD", "samr.samr_AcctFlags.ACB_NO_AUTH_DATA_REQD", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_NO_AUTH_DATA_REQD_tfs), ( 0x00080000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_PARTIAL_SECRETS_ACCOUNT,
	  { "ACB PARTIAL SECRETS ACCOUNT", "samr.samr_AcctFlags.ACB_PARTIAL_SECRETS_ACCOUNT", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_PARTIAL_SECRETS_ACCOUNT_tfs), ( 0x00100000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_PWNOEXP,
	  { "ACB PWNOEXP", "samr.samr_AcctFlags.ACB_PWNOEXP", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_PWNOEXP_tfs), ( 0x00000200 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_PWNOTREQ,
	  { "ACB PWNOTREQ", "samr.samr_AcctFlags.ACB_PWNOTREQ", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_PWNOTREQ_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_PW_EXPIRED,
	  { "ACB PW EXPIRED", "samr.samr_AcctFlags.ACB_PW_EXPIRED", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_PW_EXPIRED_tfs), ( 0x00020000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_SMARTCARD_REQUIRED,
	  { "ACB SMARTCARD REQUIRED", "samr.samr_AcctFlags.ACB_SMARTCARD_REQUIRED", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_SMARTCARD_REQUIRED_tfs), ( 0x00001000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_SVRTRUST,
	  { "ACB SVRTRUST", "samr.samr_AcctFlags.ACB_SVRTRUST", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_SVRTRUST_tfs), ( 0x00000100 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_TEMPDUP,
	  { "ACB TEMPDUP", "samr.samr_AcctFlags.ACB_TEMPDUP", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_TEMPDUP_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_TRUSTED_FOR_DELEGATION,
	  { "ACB TRUSTED FOR DELEGATION", "samr.samr_AcctFlags.ACB_TRUSTED_FOR_DELEGATION", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_TRUSTED_FOR_DELEGATION_tfs), ( 0x00002000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION,
	  { "ACB TRUSTED TO AUTHENTICATE FOR DELEGATION", "samr.samr_AcctFlags.ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION_tfs), ( 0x00040000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_USE_AES_KEYS,
	  { "ACB USE AES KEYS", "samr.samr_AcctFlags.ACB_USE_AES_KEYS", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_USE_AES_KEYS_tfs), ( 0x00200000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_USE_DES_KEY_ONLY,
	  { "ACB USE DES KEY ONLY", "samr.samr_AcctFlags.ACB_USE_DES_KEY_ONLY", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_USE_DES_KEY_ONLY_tfs), ( 0x00008000 ), NULL, HFILL }},
	{ &hf_samr_samr_AcctFlags_ACB_WSTRUST,
	  { "ACB WSTRUST", "samr.samr_AcctFlags.ACB_WSTRUST", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_WSTRUST_tfs), ( 0x00000080 ), NULL, HFILL }},
	{ &hf_samr_samr_AddAliasMember_sid,
	  { "Sid", "samr.samr_AddAliasMember.sid", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AddGroupMember_flags,
	  { "Flags", "samr.samr_AddGroupMember.flags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AddMultipleMembersToAlias_sids,
	  { "Sids", "samr.samr_AddMultipleMembersToAlias.sids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_ADD_MEMBER,
	  { "SAMR ALIAS ACCESS ADD MEMBER", "samr.samr_AliasAccessMask.SAMR_ALIAS_ACCESS_ADD_MEMBER", FT_BOOLEAN, 32, TFS(&samr_AliasAccessMask_SAMR_ALIAS_ACCESS_ADD_MEMBER_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_GET_MEMBERS,
	  { "SAMR ALIAS ACCESS GET MEMBERS", "samr.samr_AliasAccessMask.SAMR_ALIAS_ACCESS_GET_MEMBERS", FT_BOOLEAN, 32, TFS(&samr_AliasAccessMask_SAMR_ALIAS_ACCESS_GET_MEMBERS_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_LOOKUP_INFO,
	  { "SAMR ALIAS ACCESS LOOKUP INFO", "samr.samr_AliasAccessMask.SAMR_ALIAS_ACCESS_LOOKUP_INFO", FT_BOOLEAN, 32, TFS(&samr_AliasAccessMask_SAMR_ALIAS_ACCESS_LOOKUP_INFO_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_REMOVE_MEMBER,
	  { "SAMR ALIAS ACCESS REMOVE MEMBER", "samr.samr_AliasAccessMask.SAMR_ALIAS_ACCESS_REMOVE_MEMBER", FT_BOOLEAN, 32, TFS(&samr_AliasAccessMask_SAMR_ALIAS_ACCESS_REMOVE_MEMBER_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_SET_INFO,
	  { "SAMR ALIAS ACCESS SET INFO", "samr.samr_AliasAccessMask.SAMR_ALIAS_ACCESS_SET_INFO", FT_BOOLEAN, 32, TFS(&samr_AliasAccessMask_SAMR_ALIAS_ACCESS_SET_INFO_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_AliasInfoAll_description,
	  { "Description", "samr.samr_AliasInfoAll.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AliasInfoAll_name,
	  { "Name", "samr.samr_AliasInfoAll.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AliasInfoAll_num_members,
	  { "Num Members", "samr.samr_AliasInfoAll.num_members", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AliasInfo_all,
	  { "All", "samr.samr_AliasInfo.all", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AliasInfo_description,
	  { "Description", "samr.samr_AliasInfo.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_AliasInfo_name,
	  { "Name", "samr.samr_AliasInfo.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser2_account,
	  { "Account", "samr.samr_ChangePasswordUser2.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser2_lm_change,
	  { "Lm Change", "samr.samr_ChangePasswordUser2.lm_change", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser2_lm_password,
	  { "Lm Password", "samr.samr_ChangePasswordUser2.lm_password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser2_lm_verifier,
	  { "Lm Verifier", "samr.samr_ChangePasswordUser2.lm_verifier", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser2_nt_password,
	  { "Nt Password", "samr.samr_ChangePasswordUser2.nt_password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser2_nt_verifier,
	  { "Nt Verifier", "samr.samr_ChangePasswordUser2.nt_verifier", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser2_server,
	  { "Server", "samr.samr_ChangePasswordUser2.server", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_account,
	  { "Account", "samr.samr_ChangePasswordUser3.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_dominfo,
	  { "Dominfo", "samr.samr_ChangePasswordUser3.dominfo", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_lm_change,
	  { "Lm Change", "samr.samr_ChangePasswordUser3.lm_change", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_lm_password,
	  { "Lm Password", "samr.samr_ChangePasswordUser3.lm_password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_lm_verifier,
	  { "Lm Verifier", "samr.samr_ChangePasswordUser3.lm_verifier", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_nt_password,
	  { "Nt Password", "samr.samr_ChangePasswordUser3.nt_password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_nt_verifier,
	  { "Nt Verifier", "samr.samr_ChangePasswordUser3.nt_verifier", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_password3,
	  { "Password3", "samr.samr_ChangePasswordUser3.password3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_reject,
	  { "Reject", "samr.samr_ChangePasswordUser3.reject", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser3_server,
	  { "Server", "samr.samr_ChangePasswordUser3.server", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser4_account,
	  { "Account", "samr.samr_ChangePasswordUser4.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser4_password,
	  { "Password", "samr.samr_ChangePasswordUser4.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser4_server,
	  { "Server", "samr.samr_ChangePasswordUser4.server", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_cross1_present,
	  { "Cross1 Present", "samr.samr_ChangePasswordUser.cross1_present", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_cross2_present,
	  { "Cross2 Present", "samr.samr_ChangePasswordUser.cross2_present", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_lm_cross,
	  { "Lm Cross", "samr.samr_ChangePasswordUser.lm_cross", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_lm_present,
	  { "Lm Present", "samr.samr_ChangePasswordUser.lm_present", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_new_lm_crypted,
	  { "New Lm Crypted", "samr.samr_ChangePasswordUser.new_lm_crypted", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_new_nt_crypted,
	  { "New Nt Crypted", "samr.samr_ChangePasswordUser.new_nt_crypted", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_nt_cross,
	  { "Nt Cross", "samr.samr_ChangePasswordUser.nt_cross", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_nt_present,
	  { "Nt Present", "samr.samr_ChangePasswordUser.nt_present", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_old_lm_crypted,
	  { "Old Lm Crypted", "samr.samr_ChangePasswordUser.old_lm_crypted", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ChangePasswordUser_old_nt_crypted,
	  { "Old Nt Crypted", "samr.samr_ChangePasswordUser.old_nt_crypted", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect2_system_name,
	  { "System Name", "samr.samr_Connect2.system_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect3_system_name,
	  { "System Name", "samr.samr_Connect3.system_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect3_unknown,
	  { "Unknown", "samr.samr_Connect3.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect4_client_version,
	  { "Client Version", "samr.samr_Connect4.client_version", FT_UINT32, BASE_DEC, VALS(samr_samr_ConnectVersion_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect4_system_name,
	  { "System Name", "samr.samr_Connect4.system_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect5_info_in,
	  { "Info In", "samr.samr_Connect5.info_in", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect5_info_out,
	  { "Info Out", "samr.samr_Connect5.info_out", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect5_level_in,
	  { "Level In", "samr.samr_Connect5.level_in", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect5_level_out,
	  { "Level Out", "samr.samr_Connect5.level_out", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect5_system_name,
	  { "System Name", "samr.samr_Connect5.system_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER,
	  { "SAMR ACCESS CONNECT TO SERVER", "samr.samr_ConnectAccessMask.SAMR_ACCESS_CONNECT_TO_SERVER", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN,
	  { "SAMR ACCESS CREATE DOMAIN", "samr.samr_ConnectAccessMask.SAMR_ACCESS_CREATE_DOMAIN", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS,
	  { "SAMR ACCESS ENUM DOMAINS", "samr.samr_ConnectAccessMask.SAMR_ACCESS_ENUM_DOMAINS", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER,
	  { "SAMR ACCESS INITIALIZE SERVER", "samr.samr_ConnectAccessMask.SAMR_ACCESS_INITIALIZE_SERVER", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN,
	  { "SAMR ACCESS LOOKUP DOMAIN", "samr.samr_ConnectAccessMask.SAMR_ACCESS_LOOKUP_DOMAIN", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN_tfs), ( 0x00000020 ), NULL, HFILL }},
	{ &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER,
	  { "SAMR ACCESS SHUTDOWN SERVER", "samr.samr_ConnectAccessMask.SAMR_ACCESS_SHUTDOWN_SERVER", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_ConnectInfo1_client_version,
	  { "Client Version", "samr.samr_ConnectInfo1.client_version", FT_UINT32, BASE_DEC, VALS(samr_samr_ConnectVersion_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_ConnectInfo1_supported_features,
	  { "Supported Features", "samr.samr_ConnectInfo1.supported_features", FT_UINT32, BASE_DEC, VALS(samr_samr_SupportedFeatures_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_ConnectInfo_info1,
	  { "Info1", "samr.samr_ConnectInfo.info1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Connect_system_name,
	  { "System Name", "samr.samr_Connect.system_name", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_CreateDomAlias_alias_name,
	  { "Alias Name", "samr.samr_CreateDomAlias.alias_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_CreateDomainGroup_name,
	  { "Name", "samr.samr_CreateDomainGroup.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_CreateUser2_access_granted,
	  { "Access Granted", "samr.samr_CreateUser2.access_granted", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_CreateUser2_account_name,
	  { "Account Name", "samr.samr_CreateUser2.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_CreateUser2_acct_flags,
	  { "Acct Flags", "samr.samr_CreateUser2.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_CreateUser_account_name,
	  { "Account Name", "samr.samr_CreateUser.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_CryptPasswordEx_data,
	  { "Data", "samr.samr_CryptPasswordEx.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_CryptPassword_data,
	  { "Data", "samr.samr_CryptPassword.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DeleteAliasMember_sid,
	  { "Sid", "samr.samr_DeleteAliasMember.sid", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryAscii_account_name,
	  { "Account Name", "samr.samr_DispEntryAscii.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryAscii_idx,
	  { "Idx", "samr.samr_DispEntryAscii.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryFullGroup_account_name,
	  { "Account Name", "samr.samr_DispEntryFullGroup.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryFullGroup_acct_flags,
	  { "Acct Flags", "samr.samr_DispEntryFullGroup.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryFullGroup_description,
	  { "Description", "samr.samr_DispEntryFullGroup.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryFullGroup_idx,
	  { "Idx", "samr.samr_DispEntryFullGroup.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryFull_account_name,
	  { "Account Name", "samr.samr_DispEntryFull.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryFull_acct_flags,
	  { "Acct Flags", "samr.samr_DispEntryFull.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryFull_description,
	  { "Description", "samr.samr_DispEntryFull.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryFull_idx,
	  { "Idx", "samr.samr_DispEntryFull.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryGeneral_account_name,
	  { "Account Name", "samr.samr_DispEntryGeneral.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryGeneral_acct_flags,
	  { "Acct Flags", "samr.samr_DispEntryGeneral.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryGeneral_description,
	  { "Description", "samr.samr_DispEntryGeneral.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryGeneral_full_name,
	  { "Full Name", "samr.samr_DispEntryGeneral.full_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispEntryGeneral_idx,
	  { "Idx", "samr.samr_DispEntryGeneral.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfoAscii_count,
	  { "Count", "samr.samr_DispInfoAscii.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfoAscii_entries,
	  { "Entries", "samr.samr_DispInfoAscii.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfoFullGroups_count,
	  { "Count", "samr.samr_DispInfoFullGroups.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfoFullGroups_entries,
	  { "Entries", "samr.samr_DispInfoFullGroups.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfoFull_count,
	  { "Count", "samr.samr_DispInfoFull.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfoFull_entries,
	  { "Entries", "samr.samr_DispInfoFull.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfoGeneral_count,
	  { "Count", "samr.samr_DispInfoGeneral.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfoGeneral_entries,
	  { "Entries", "samr.samr_DispInfoGeneral.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfo_info1,
	  { "Info1", "samr.samr_DispInfo.info1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfo_info2,
	  { "Info2", "samr.samr_DispInfo.info2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfo_info3,
	  { "Info3", "samr.samr_DispInfo.info3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfo_info4,
	  { "Info4", "samr.samr_DispInfo.info4", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DispInfo_info5,
	  { "Info5", "samr.samr_DispInfo.info5", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation2_general,
	  { "General", "samr.samr_DomGeneralInformation2.general", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation2_lockout_duration,
	  { "Lockout Duration", "samr.samr_DomGeneralInformation2.lockout_duration", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation2_lockout_threshold,
	  { "Lockout Threshold", "samr.samr_DomGeneralInformation2.lockout_threshold", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation2_lockout_window,
	  { "Lockout Window", "samr.samr_DomGeneralInformation2.lockout_window", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_domain_name,
	  { "Domain Name", "samr.samr_DomGeneralInformation.domain_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_domain_server_state,
	  { "Domain Server State", "samr.samr_DomGeneralInformation.domain_server_state", FT_UINT32, BASE_DEC, VALS(samr_samr_DomainServerState_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_force_logoff_time,
	  { "Force Logoff Time", "samr.samr_DomGeneralInformation.force_logoff_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_num_aliases,
	  { "Num Aliases", "samr.samr_DomGeneralInformation.num_aliases", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_num_groups,
	  { "Num Groups", "samr.samr_DomGeneralInformation.num_groups", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_num_users,
	  { "Num Users", "samr.samr_DomGeneralInformation.num_users", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_oem_information,
	  { "Oem Information", "samr.samr_DomGeneralInformation.oem_information", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_primary,
	  { "Primary", "samr.samr_DomGeneralInformation.primary", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_role,
	  { "Role", "samr.samr_DomGeneralInformation.role", FT_UINT32, BASE_DEC, VALS(samr_samr_Role_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_sequence_num,
	  { "Sequence Num", "samr.samr_DomGeneralInformation.sequence_num", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomGeneralInformation_unknown3,
	  { "Unknown3", "samr.samr_DomGeneralInformation.unknown3", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo12_lockout_duration,
	  { "Lockout Duration", "samr.samr_DomInfo12.lockout_duration", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo12_lockout_threshold,
	  { "Lockout Threshold", "samr.samr_DomInfo12.lockout_threshold", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo12_lockout_window,
	  { "Lockout Window", "samr.samr_DomInfo12.lockout_window", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo13_domain_create_time,
	  { "Domain Create Time", "samr.samr_DomInfo13.domain_create_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo13_modified_count_at_last_promotion,
	  { "Modified Count At Last Promotion", "samr.samr_DomInfo13.modified_count_at_last_promotion", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo13_sequence_num,
	  { "Sequence Num", "samr.samr_DomInfo13.sequence_num", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo1_max_password_age,
	  { "Max Password Age", "samr.samr_DomInfo1.max_password_age", FT_INT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo1_min_password_age,
	  { "Min Password Age", "samr.samr_DomInfo1.min_password_age", FT_INT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo1_min_password_length,
	  { "Min Password Length", "samr.samr_DomInfo1.min_password_length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo1_password_history_length,
	  { "Password History Length", "samr.samr_DomInfo1.password_history_length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo1_password_properties,
	  { "Password Properties", "samr.samr_DomInfo1.password_properties", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo3_force_logoff_time,
	  { "Force Logoff Time", "samr.samr_DomInfo3.force_logoff_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo5_domain_name,
	  { "Domain Name", "samr.samr_DomInfo5.domain_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo6_primary,
	  { "Primary", "samr.samr_DomInfo6.primary", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo7_role,
	  { "Role", "samr.samr_DomInfo7.role", FT_UINT32, BASE_DEC, VALS(samr_samr_Role_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo8_domain_create_time,
	  { "Domain Create Time", "samr.samr_DomInfo8.domain_create_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo8_sequence_num,
	  { "Sequence Num", "samr.samr_DomInfo8.sequence_num", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomInfo9_domain_server_state,
	  { "Domain Server State", "samr.samr_DomInfo9.domain_server_state", FT_UINT32, BASE_DEC, VALS(samr_samr_DomainServerState_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_DomOEMInformation_oem_information,
	  { "Oem Information", "samr.samr_DomOEMInformation.oem_information", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_ALIAS,
	  { "SAMR DOMAIN ACCESS CREATE ALIAS", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_CREATE_ALIAS", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_ALIAS_tfs), ( 0x00000040 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_GROUP,
	  { "SAMR DOMAIN ACCESS CREATE GROUP", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_CREATE_GROUP", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_GROUP_tfs), ( 0x00000020 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_USER,
	  { "SAMR DOMAIN ACCESS CREATE USER", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_CREATE_USER", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_USER_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS,
	  { "SAMR DOMAIN ACCESS ENUM ACCOUNTS", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_ENUM_ACCOUNTS_tfs), ( 0x00000100 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS,
	  { "SAMR DOMAIN ACCESS LOOKUP ALIAS", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_ALIAS_tfs), ( 0x00000080 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1,
	  { "SAMR DOMAIN ACCESS LOOKUP INFO 1", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_1_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2,
	  { "SAMR DOMAIN ACCESS LOOKUP INFO 2", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_LOOKUP_INFO_2_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT,
	  { "SAMR DOMAIN ACCESS OPEN ACCOUNT", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT_tfs), ( 0x00000200 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_1,
	  { "SAMR DOMAIN ACCESS SET INFO 1", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_SET_INFO_1", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_1_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_2,
	  { "SAMR DOMAIN ACCESS SET INFO 2", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_SET_INFO_2", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_2_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_3,
	  { "SAMR DOMAIN ACCESS SET INFO 3", "samr.samr_DomainAccessMask.SAMR_DOMAIN_ACCESS_SET_INFO_3", FT_BOOLEAN, 32, TFS(&samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_3_tfs), ( 0x00000400 ), NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_general,
	  { "General", "samr.samr_DomainInfo.general", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_general2,
	  { "General2", "samr.samr_DomainInfo.general2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info1,
	  { "Info1", "samr.samr_DomainInfo.info1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info12,
	  { "Info12", "samr.samr_DomainInfo.info12", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info13,
	  { "Info13", "samr.samr_DomainInfo.info13", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info3,
	  { "Info3", "samr.samr_DomainInfo.info3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info5,
	  { "Info5", "samr.samr_DomainInfo.info5", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info6,
	  { "Info6", "samr.samr_DomainInfo.info6", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info7,
	  { "Info7", "samr.samr_DomainInfo.info7", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info8,
	  { "Info8", "samr.samr_DomainInfo.info8", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_info9,
	  { "Info9", "samr.samr_DomainInfo.info9", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_DomainInfo_oem,
	  { "Oem", "samr.samr_DomainInfo.oem", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EncryptedPasswordAES_PBKDF2Iterations,
	  { "PBKDF2Iterations", "samr.samr_EncryptedPasswordAES.PBKDF2Iterations", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EncryptedPasswordAES_auth_data,
	  { "Auth Data", "samr.samr_EncryptedPasswordAES.auth_data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EncryptedPasswordAES_cipher,
	  { "Cipher", "samr.samr_EncryptedPasswordAES.cipher", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EncryptedPasswordAES_cipher_len,
	  { "Cipher Len", "samr.samr_EncryptedPasswordAES.cipher_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EncryptedPasswordAES_salt,
	  { "Salt", "samr.samr_EncryptedPasswordAES.salt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainAliases_max_size,
	  { "Max Size", "samr.samr_EnumDomainAliases.max_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainAliases_num_entries,
	  { "Num Entries", "samr.samr_EnumDomainAliases.num_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainAliases_resume_handle,
	  { "Resume Handle", "samr.samr_EnumDomainAliases.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainAliases_sam,
	  { "Sam", "samr.samr_EnumDomainAliases.sam", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainGroups_max_size,
	  { "Max Size", "samr.samr_EnumDomainGroups.max_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainGroups_num_entries,
	  { "Num Entries", "samr.samr_EnumDomainGroups.num_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainGroups_resume_handle,
	  { "Resume Handle", "samr.samr_EnumDomainGroups.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainGroups_sam,
	  { "Sam", "samr.samr_EnumDomainGroups.sam", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainUsers_acct_flags,
	  { "Acct Flags", "samr.samr_EnumDomainUsers.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainUsers_max_size,
	  { "Max Size", "samr.samr_EnumDomainUsers.max_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainUsers_num_entries,
	  { "Num Entries", "samr.samr_EnumDomainUsers.num_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainUsers_resume_handle,
	  { "Resume Handle", "samr.samr_EnumDomainUsers.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomainUsers_sam,
	  { "Sam", "samr.samr_EnumDomainUsers.sam", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomains_buf_size,
	  { "Buf Size", "samr.samr_EnumDomains.buf_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomains_num_entries,
	  { "Num Entries", "samr.samr_EnumDomains.num_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomains_resume_handle,
	  { "Resume Handle", "samr.samr_EnumDomains.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_EnumDomains_sam,
	  { "Sam", "samr.samr_EnumDomains.sam", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCOUNT_NAME,
	  { "SAMR FIELD ACCOUNT NAME", "samr.samr_FieldsPresent.SAMR_FIELD_ACCOUNT_NAME", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_ACCOUNT_NAME_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCT_EXPIRY,
	  { "SAMR FIELD ACCT EXPIRY", "samr.samr_FieldsPresent.SAMR_FIELD_ACCT_EXPIRY", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_ACCT_EXPIRY_tfs), ( 0x00080000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCT_FLAGS,
	  { "SAMR FIELD ACCT FLAGS", "samr.samr_FieldsPresent.SAMR_FIELD_ACCT_FLAGS", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_ACCT_FLAGS_tfs), ( 0x00100000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_ALLOW_PWD_CHANGE,
	  { "SAMR FIELD ALLOW PWD CHANGE", "samr.samr_FieldsPresent.SAMR_FIELD_ALLOW_PWD_CHANGE", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_ALLOW_PWD_CHANGE_tfs), ( 0x00010000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_BAD_PWD_COUNT,
	  { "SAMR FIELD BAD PWD COUNT", "samr.samr_FieldsPresent.SAMR_FIELD_BAD_PWD_COUNT", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_BAD_PWD_COUNT_tfs), ( 0x00004000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_CODE_PAGE,
	  { "SAMR FIELD CODE PAGE", "samr.samr_FieldsPresent.SAMR_FIELD_CODE_PAGE", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_CODE_PAGE_tfs), ( 0x00800000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_COMMENT,
	  { "SAMR FIELD COMMENT", "samr.samr_FieldsPresent.SAMR_FIELD_COMMENT", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_COMMENT_tfs), ( 0x00000020 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_COUNTRY_CODE,
	  { "SAMR FIELD COUNTRY CODE", "samr.samr_FieldsPresent.SAMR_FIELD_COUNTRY_CODE", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_COUNTRY_CODE_tfs), ( 0x00400000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_DESCRIPTION,
	  { "SAMR FIELD DESCRIPTION", "samr.samr_FieldsPresent.SAMR_FIELD_DESCRIPTION", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_DESCRIPTION_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_EXPIRED_FLAG,
	  { "SAMR FIELD EXPIRED FLAG", "samr.samr_FieldsPresent.SAMR_FIELD_EXPIRED_FLAG", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_EXPIRED_FLAG_tfs), ( 0x08000000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_FORCE_PWD_CHANGE,
	  { "SAMR FIELD FORCE PWD CHANGE", "samr.samr_FieldsPresent.SAMR_FIELD_FORCE_PWD_CHANGE", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_FORCE_PWD_CHANGE_tfs), ( 0x00020000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_FULL_NAME,
	  { "SAMR FIELD FULL NAME", "samr.samr_FieldsPresent.SAMR_FIELD_FULL_NAME", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_FULL_NAME_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_HOME_DIRECTORY,
	  { "SAMR FIELD HOME DIRECTORY", "samr.samr_FieldsPresent.SAMR_FIELD_HOME_DIRECTORY", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_HOME_DIRECTORY_tfs), ( 0x00000040 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_HOME_DRIVE,
	  { "SAMR FIELD HOME DRIVE", "samr.samr_FieldsPresent.SAMR_FIELD_HOME_DRIVE", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_HOME_DRIVE_tfs), ( 0x00000080 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_LOGOFF,
	  { "SAMR FIELD LAST LOGOFF", "samr.samr_FieldsPresent.SAMR_FIELD_LAST_LOGOFF", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_LAST_LOGOFF_tfs), ( 0x00001000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_LOGON,
	  { "SAMR FIELD LAST LOGON", "samr.samr_FieldsPresent.SAMR_FIELD_LAST_LOGON", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_LAST_LOGON_tfs), ( 0x00000800 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_PWD_CHANGE,
	  { "SAMR FIELD LAST PWD CHANGE", "samr.samr_FieldsPresent.SAMR_FIELD_LAST_PWD_CHANGE", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_LAST_PWD_CHANGE_tfs), ( 0x00040000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_LM_PASSWORD_PRESENT,
	  { "SAMR FIELD LM PASSWORD PRESENT", "samr.samr_FieldsPresent.SAMR_FIELD_LM_PASSWORD_PRESENT", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_LM_PASSWORD_PRESENT_tfs), ( 0x02000000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_LOGON_HOURS,
	  { "SAMR FIELD LOGON HOURS", "samr.samr_FieldsPresent.SAMR_FIELD_LOGON_HOURS", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_LOGON_HOURS_tfs), ( 0x00002000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_LOGON_SCRIPT,
	  { "SAMR FIELD LOGON SCRIPT", "samr.samr_FieldsPresent.SAMR_FIELD_LOGON_SCRIPT", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_LOGON_SCRIPT_tfs), ( 0x00000100 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_NT_PASSWORD_PRESENT,
	  { "SAMR FIELD NT PASSWORD PRESENT", "samr.samr_FieldsPresent.SAMR_FIELD_NT_PASSWORD_PRESENT", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_NT_PASSWORD_PRESENT_tfs), ( 0x01000000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_NUM_LOGONS,
	  { "SAMR FIELD NUM LOGONS", "samr.samr_FieldsPresent.SAMR_FIELD_NUM_LOGONS", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_NUM_LOGONS_tfs), ( 0x00008000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_OWF_PWD,
	  { "SAMR FIELD OWF PWD", "samr.samr_FieldsPresent.SAMR_FIELD_OWF_PWD", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_OWF_PWD_tfs), ( 0x20000000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_PARAMETERS,
	  { "SAMR FIELD PARAMETERS", "samr.samr_FieldsPresent.SAMR_FIELD_PARAMETERS", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_PARAMETERS_tfs), ( 0x00200000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_PRIMARY_GID,
	  { "SAMR FIELD PRIMARY GID", "samr.samr_FieldsPresent.SAMR_FIELD_PRIMARY_GID", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_PRIMARY_GID_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_PRIVATE_DATA,
	  { "SAMR FIELD PRIVATE DATA", "samr.samr_FieldsPresent.SAMR_FIELD_PRIVATE_DATA", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_PRIVATE_DATA_tfs), ( 0x04000000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_PROFILE_PATH,
	  { "SAMR FIELD PROFILE PATH", "samr.samr_FieldsPresent.SAMR_FIELD_PROFILE_PATH", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_PROFILE_PATH_tfs), ( 0x00000200 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_RID,
	  { "SAMR FIELD RID", "samr.samr_FieldsPresent.SAMR_FIELD_RID", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_RID_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_SEC_DESC,
	  { "SAMR FIELD SEC DESC", "samr.samr_FieldsPresent.SAMR_FIELD_SEC_DESC", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_SEC_DESC_tfs), ( 0x10000000 ), NULL, HFILL }},
	{ &hf_samr_samr_FieldsPresent_SAMR_FIELD_WORKSTATIONS,
	  { "SAMR FIELD WORKSTATIONS", "samr.samr_FieldsPresent.SAMR_FIELD_WORKSTATIONS", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_WORKSTATIONS_tfs), ( 0x00000400 ), NULL, HFILL }},
	{ &hf_samr_samr_GetAliasMembership_rids,
	  { "Rids", "samr.samr_GetAliasMembership.rids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetAliasMembership_sids,
	  { "Sids", "samr.samr_GetAliasMembership.sids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetBootKeyInformation_unknown,
	  { "Unknown", "samr.samr_GetBootKeyInformation.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetDisplayEnumerationIndex2_idx,
	  { "Idx", "samr.samr_GetDisplayEnumerationIndex2.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetDisplayEnumerationIndex2_level,
	  { "Level", "samr.samr_GetDisplayEnumerationIndex2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_GetDisplayEnumerationIndex2_name,
	  { "Name", "samr.samr_GetDisplayEnumerationIndex2.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetDisplayEnumerationIndex_idx,
	  { "Idx", "samr.samr_GetDisplayEnumerationIndex.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetDisplayEnumerationIndex_level,
	  { "Level", "samr.samr_GetDisplayEnumerationIndex.level", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetDisplayEnumerationIndex_name,
	  { "Name", "samr.samr_GetDisplayEnumerationIndex.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetDomPwInfo_domain_name,
	  { "Domain Name", "samr.samr_GetDomPwInfo.domain_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetDomPwInfo_info,
	  { "Info", "samr.samr_GetDomPwInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetGroupsForUser_rids,
	  { "Rids", "samr.samr_GetGroupsForUser.rids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetMembersInAlias_sids,
	  { "Sids", "samr.samr_GetMembersInAlias.sids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GetUserPwInfo_info,
	  { "Info", "samr.samr_GetUserPwInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_ADD_MEMBER,
	  { "SAMR GROUP ACCESS ADD MEMBER", "samr.samr_GroupAccessMask.SAMR_GROUP_ACCESS_ADD_MEMBER", FT_BOOLEAN, 32, TFS(&samr_GroupAccessMask_SAMR_GROUP_ACCESS_ADD_MEMBER_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_GET_MEMBERS,
	  { "SAMR GROUP ACCESS GET MEMBERS", "samr.samr_GroupAccessMask.SAMR_GROUP_ACCESS_GET_MEMBERS", FT_BOOLEAN, 32, TFS(&samr_GroupAccessMask_SAMR_GROUP_ACCESS_GET_MEMBERS_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_LOOKUP_INFO,
	  { "SAMR GROUP ACCESS LOOKUP INFO", "samr.samr_GroupAccessMask.SAMR_GROUP_ACCESS_LOOKUP_INFO", FT_BOOLEAN, 32, TFS(&samr_GroupAccessMask_SAMR_GROUP_ACCESS_LOOKUP_INFO_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_REMOVE_MEMBER,
	  { "SAMR GROUP ACCESS REMOVE MEMBER", "samr.samr_GroupAccessMask.SAMR_GROUP_ACCESS_REMOVE_MEMBER", FT_BOOLEAN, 32, TFS(&samr_GroupAccessMask_SAMR_GROUP_ACCESS_REMOVE_MEMBER_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_SET_INFO,
	  { "SAMR GROUP ACCESS SET INFO", "samr.samr_GroupAccessMask.SAMR_GROUP_ACCESS_SET_INFO", FT_BOOLEAN, 32, TFS(&samr_GroupAccessMask_SAMR_GROUP_ACCESS_SET_INFO_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAttrs_SE_GROUP_ENABLED,
	  { "SE GROUP ENABLED", "samr.samr_GroupAttrs.SE_GROUP_ENABLED", FT_BOOLEAN, 32, TFS(&samr_GroupAttrs_SE_GROUP_ENABLED_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAttrs_SE_GROUP_ENABLED_BY_DEFAULT,
	  { "SE GROUP ENABLED BY DEFAULT", "samr.samr_GroupAttrs.SE_GROUP_ENABLED_BY_DEFAULT", FT_BOOLEAN, 32, TFS(&samr_GroupAttrs_SE_GROUP_ENABLED_BY_DEFAULT_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAttrs_SE_GROUP_LOGON_ID,
	  { "SE GROUP LOGON ID", "samr.samr_GroupAttrs.SE_GROUP_LOGON_ID", FT_BOOLEAN, 32, TFS(&samr_GroupAttrs_SE_GROUP_LOGON_ID_tfs), ( 0xC0000000 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAttrs_SE_GROUP_MANDATORY,
	  { "SE GROUP MANDATORY", "samr.samr_GroupAttrs.SE_GROUP_MANDATORY", FT_BOOLEAN, 32, TFS(&samr_GroupAttrs_SE_GROUP_MANDATORY_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAttrs_SE_GROUP_OWNER,
	  { "SE GROUP OWNER", "samr.samr_GroupAttrs.SE_GROUP_OWNER", FT_BOOLEAN, 32, TFS(&samr_GroupAttrs_SE_GROUP_OWNER_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAttrs_SE_GROUP_RESOURCE,
	  { "SE GROUP RESOURCE", "samr.samr_GroupAttrs.SE_GROUP_RESOURCE", FT_BOOLEAN, 32, TFS(&samr_GroupAttrs_SE_GROUP_RESOURCE_tfs), ( 0x20000000 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupAttrs_SE_GROUP_USE_FOR_DENY_ONLY,
	  { "SE GROUP USE FOR DENY ONLY", "samr.samr_GroupAttrs.SE_GROUP_USE_FOR_DENY_ONLY", FT_BOOLEAN, 32, TFS(&samr_GroupAttrs_SE_GROUP_USE_FOR_DENY_ONLY_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_GroupInfoAll_attributes,
	  { "Attributes", "samr.samr_GroupInfoAll.attributes", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfoAll_description,
	  { "Description", "samr.samr_GroupInfoAll.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfoAll_name,
	  { "Name", "samr.samr_GroupInfoAll.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfoAll_num_members,
	  { "Num Members", "samr.samr_GroupInfoAll.num_members", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfoAttributes_attributes,
	  { "Attributes", "samr.samr_GroupInfoAttributes.attributes", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfoDescription_description,
	  { "Description", "samr.samr_GroupInfoDescription.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfo_all,
	  { "All", "samr.samr_GroupInfo.all", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfo_all2,
	  { "All2", "samr.samr_GroupInfo.all2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfo_attributes,
	  { "Attributes", "samr.samr_GroupInfo.attributes", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfo_description,
	  { "Description", "samr.samr_GroupInfo.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_GroupInfo_name,
	  { "Name", "samr.samr_GroupInfo.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_Ids_count,
	  { "Count", "samr.samr_Ids.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LogonHours_bits,
	  { "Bits", "samr.samr_LogonHours.bits", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LogonHours_units_per_week,
	  { "Units Per Week", "samr.samr_LogonHours.units_per_week", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupDomain_domain_name,
	  { "Domain Name", "samr.samr_LookupDomain.domain_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupDomain_sid,
	  { "Sid", "samr.samr_LookupDomain.sid", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupNames_names,
	  { "Names", "samr.samr_LookupNames.names", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupNames_num_names,
	  { "Num Names", "samr.samr_LookupNames.num_names", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupNames_rids,
	  { "Rids", "samr.samr_LookupNames.rids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupNames_types,
	  { "Types", "samr.samr_LookupNames.types", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupRids_names,
	  { "Names", "samr.samr_LookupRids.names", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupRids_num_rids,
	  { "Num Rids", "samr.samr_LookupRids.num_rids", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_LookupRids_types,
	  { "Types", "samr.samr_LookupRids.types", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_OemChangePasswordUser2_account,
	  { "Account", "samr.samr_OemChangePasswordUser2.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_OemChangePasswordUser2_hash,
	  { "Hash", "samr.samr_OemChangePasswordUser2.hash", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_OemChangePasswordUser2_password,
	  { "Password", "samr.samr_OemChangePasswordUser2.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_OemChangePasswordUser2_server,
	  { "Server", "samr.samr_OemChangePasswordUser2.server", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_OpenDomain_sid,
	  { "Sid", "samr.samr_OpenDomain.sid", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_COMPLEX,
	  { "DOMAIN PASSWORD COMPLEX", "samr.samr_PasswordProperties.DOMAIN_PASSWORD_COMPLEX", FT_BOOLEAN, 32, TFS(&samr_PasswordProperties_DOMAIN_PASSWORD_COMPLEX_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_LOCKOUT_ADMINS,
	  { "DOMAIN PASSWORD LOCKOUT ADMINS", "samr.samr_PasswordProperties.DOMAIN_PASSWORD_LOCKOUT_ADMINS", FT_BOOLEAN, 32, TFS(&samr_PasswordProperties_DOMAIN_PASSWORD_LOCKOUT_ADMINS_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_NO_ANON_CHANGE,
	  { "DOMAIN PASSWORD NO ANON CHANGE", "samr.samr_PasswordProperties.DOMAIN_PASSWORD_NO_ANON_CHANGE", FT_BOOLEAN, 32, TFS(&samr_PasswordProperties_DOMAIN_PASSWORD_NO_ANON_CHANGE_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_NO_CLEAR_CHANGE,
	  { "DOMAIN PASSWORD NO CLEAR CHANGE", "samr.samr_PasswordProperties.DOMAIN_PASSWORD_NO_CLEAR_CHANGE", FT_BOOLEAN, 32, TFS(&samr_PasswordProperties_DOMAIN_PASSWORD_NO_CLEAR_CHANGE_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_PasswordProperties_DOMAIN_PASSWORD_STORE_CLEARTEXT,
	  { "DOMAIN PASSWORD STORE CLEARTEXT", "samr.samr_PasswordProperties.DOMAIN_PASSWORD_STORE_CLEARTEXT", FT_BOOLEAN, 32, TFS(&samr_PasswordProperties_DOMAIN_PASSWORD_STORE_CLEARTEXT_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_PasswordProperties_DOMAIN_REFUSE_PASSWORD_CHANGE,
	  { "DOMAIN REFUSE PASSWORD CHANGE", "samr.samr_PasswordProperties.DOMAIN_REFUSE_PASSWORD_CHANGE", FT_BOOLEAN, 32, TFS(&samr_PasswordProperties_DOMAIN_REFUSE_PASSWORD_CHANGE_tfs), ( 0x00000020 ), NULL, HFILL }},
	{ &hf_samr_samr_Password_hash,
	  { "Hash", "samr.samr_Password.hash", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_PwInfo_min_password_length,
	  { "Min Password Length", "samr.samr_PwInfo.min_password_length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_PwInfo_password_properties,
	  { "Password Properties", "samr.samr_PwInfo.password_properties", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryAliasInfo_info,
	  { "Info", "samr.samr_QueryAliasInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryAliasInfo_level,
	  { "Level", "samr.samr_QueryAliasInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_AliasInfoEnum_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo2_buf_size,
	  { "Buf Size", "samr.samr_QueryDisplayInfo2.buf_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo2_info,
	  { "Info", "samr.samr_QueryDisplayInfo2.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo2_level,
	  { "Level", "samr.samr_QueryDisplayInfo2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo2_max_entries,
	  { "Max Entries", "samr.samr_QueryDisplayInfo2.max_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo2_returned_size,
	  { "Returned Size", "samr.samr_QueryDisplayInfo2.returned_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo2_start_idx,
	  { "Start Idx", "samr.samr_QueryDisplayInfo2.start_idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo2_total_size,
	  { "Total Size", "samr.samr_QueryDisplayInfo2.total_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo3_buf_size,
	  { "Buf Size", "samr.samr_QueryDisplayInfo3.buf_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo3_info,
	  { "Info", "samr.samr_QueryDisplayInfo3.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo3_level,
	  { "Level", "samr.samr_QueryDisplayInfo3.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo3_max_entries,
	  { "Max Entries", "samr.samr_QueryDisplayInfo3.max_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo3_returned_size,
	  { "Returned Size", "samr.samr_QueryDisplayInfo3.returned_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo3_start_idx,
	  { "Start Idx", "samr.samr_QueryDisplayInfo3.start_idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo3_total_size,
	  { "Total Size", "samr.samr_QueryDisplayInfo3.total_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo_buf_size,
	  { "Buf Size", "samr.samr_QueryDisplayInfo.buf_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo_info,
	  { "Info", "samr.samr_QueryDisplayInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo_level,
	  { "Level", "samr.samr_QueryDisplayInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo_max_entries,
	  { "Max Entries", "samr.samr_QueryDisplayInfo.max_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo_returned_size,
	  { "Returned Size", "samr.samr_QueryDisplayInfo.returned_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo_start_idx,
	  { "Start Idx", "samr.samr_QueryDisplayInfo.start_idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDisplayInfo_total_size,
	  { "Total Size", "samr.samr_QueryDisplayInfo.total_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDomainInfo2_info,
	  { "Info", "samr.samr_QueryDomainInfo2.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDomainInfo2_level,
	  { "Level", "samr.samr_QueryDomainInfo2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainInfoClass_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDomainInfo_info,
	  { "Info", "samr.samr_QueryDomainInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryDomainInfo_level,
	  { "Level", "samr.samr_QueryDomainInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainInfoClass_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryGroupInfo_info,
	  { "Info", "samr.samr_QueryGroupInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryGroupInfo_level,
	  { "Level", "samr.samr_QueryGroupInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_GroupInfoEnum_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryGroupMember_rids,
	  { "Rids", "samr.samr_QueryGroupMember.rids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QuerySecurity_sdbuf,
	  { "Sdbuf", "samr.samr_QuerySecurity.sdbuf", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QuerySecurity_sec_info,
	  { "Sec Info", "samr.samr_QuerySecurity.sec_info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryUserInfo2_info,
	  { "Info", "samr.samr_QueryUserInfo2.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryUserInfo2_level,
	  { "Level", "samr.samr_QueryUserInfo2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_UserInfoLevel_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryUserInfo_info,
	  { "Info", "samr.samr_QueryUserInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_QueryUserInfo_level,
	  { "Level", "samr.samr_QueryUserInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_UserInfoLevel_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_RemoveMemberFromForeignDomain_sid,
	  { "Sid", "samr.samr_RemoveMemberFromForeignDomain.sid", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_RemoveMultipleMembersFromAlias_sids,
	  { "Sids", "samr.samr_RemoveMultipleMembersFromAlias.sids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_RidToSid_sid,
	  { "Sid", "samr.samr_RidToSid.sid", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_RidTypeArray_count,
	  { "Count", "samr.samr_RidTypeArray.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_RidTypeArray_types,
	  { "Types", "samr.samr_RidTypeArray.types", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_RidWithAttributeArray_count,
	  { "Count", "samr.samr_RidWithAttributeArray.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_RidWithAttributeArray_rids,
	  { "Rids", "samr.samr_RidWithAttributeArray.rids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_RidWithAttribute_attributes,
	  { "Attributes", "samr.samr_RidWithAttribute.attributes", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SamArray_count,
	  { "Count", "samr.samr_SamArray.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SamArray_entries,
	  { "Entries", "samr.samr_SamArray.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SamEntry_idx,
	  { "Idx", "samr.samr_SamEntry.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SamEntry_name,
	  { "Name", "samr.samr_SamEntry.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetAliasInfo_info,
	  { "Info", "samr.samr_SetAliasInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetAliasInfo_level,
	  { "Level", "samr.samr_SetAliasInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_AliasInfoEnum_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_SetBootKeyInformation_unknown1,
	  { "Unknown1", "samr.samr_SetBootKeyInformation.unknown1", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetBootKeyInformation_unknown2,
	  { "Unknown2", "samr.samr_SetBootKeyInformation.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetBootKeyInformation_unknown3,
	  { "Unknown3", "samr.samr_SetBootKeyInformation.unknown3", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetDomainInfo_info,
	  { "Info", "samr.samr_SetDomainInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetDomainInfo_level,
	  { "Level", "samr.samr_SetDomainInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainInfoClass_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_SetDsrmPassword_hash,
	  { "Hash", "samr.samr_SetDsrmPassword.hash", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetDsrmPassword_name,
	  { "Name", "samr.samr_SetDsrmPassword.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetDsrmPassword_unknown,
	  { "Unknown", "samr.samr_SetDsrmPassword.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetGroupInfo_info,
	  { "Info", "samr.samr_SetGroupInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetGroupInfo_level,
	  { "Level", "samr.samr_SetGroupInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_GroupInfoEnum_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_SetMemberAttributesOfGroup_unknown1,
	  { "Unknown1", "samr.samr_SetMemberAttributesOfGroup.unknown1", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetMemberAttributesOfGroup_unknown2,
	  { "Unknown2", "samr.samr_SetMemberAttributesOfGroup.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetSecurity_sdbuf,
	  { "Sdbuf", "samr.samr_SetSecurity.sdbuf", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetSecurity_sec_info,
	  { "Sec Info", "samr.samr_SetSecurity.sec_info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetUserInfo2_info,
	  { "Info", "samr.samr_SetUserInfo2.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetUserInfo2_level,
	  { "Level", "samr.samr_SetUserInfo2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_UserInfoLevel_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_SetUserInfo_info,
	  { "Info", "samr.samr_SetUserInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_SetUserInfo_level,
	  { "Level", "samr.samr_SetUserInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_UserInfoLevel_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP,
	  { "SAMR USER ACCESS CHANGE GROUP MEMBERSHIP", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_GROUP_MEMBERSHIP_tfs), ( 0x00000400 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_PASSWORD,
	  { "SAMR USER ACCESS CHANGE PASSWORD", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_CHANGE_PASSWORD", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_CHANGE_PASSWORD_tfs), ( 0x00000040 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_ATTRIBUTES,
	  { "SAMR USER ACCESS GET ATTRIBUTES", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_GET_ATTRIBUTES", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_GET_ATTRIBUTES_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUPS,
	  { "SAMR USER ACCESS GET GROUPS", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_GET_GROUPS", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUPS_tfs), ( 0x00000100 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP,
	  { "SAMR USER ACCESS GET GROUP MEMBERSHIP", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUP_MEMBERSHIP_tfs), ( 0x00000200 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOCALE,
	  { "SAMR USER ACCESS GET LOCALE", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_GET_LOCALE", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOCALE_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOGONINFO,
	  { "SAMR USER ACCESS GET LOGONINFO", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_GET_LOGONINFO", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOGONINFO_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC,
	  { "SAMR USER ACCESS GET NAME ETC", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_GET_NAME_ETC", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_ATTRIBUTES,
	  { "SAMR USER ACCESS SET ATTRIBUTES", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_SET_ATTRIBUTES", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_SET_ATTRIBUTES_tfs), ( 0x00000020 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_LOC_COM,
	  { "SAMR USER ACCESS SET LOC COM", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_SET_LOC_COM", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_SET_LOC_COM_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD,
	  { "SAMR USER ACCESS SET PASSWORD", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_SET_PASSWORD", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD_tfs), ( 0x00000080 ), NULL, HFILL }},
	{ &hf_samr_samr_UserInfo10_home_directory,
	  { "Home Directory", "samr.samr_UserInfo10.home_directory", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo10_home_drive,
	  { "Home Drive", "samr.samr_UserInfo10.home_drive", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo11_logon_script,
	  { "Logon Script", "samr.samr_UserInfo11.logon_script", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo12_profile_path,
	  { "Profile Path", "samr.samr_UserInfo12.profile_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo13_description,
	  { "Description", "samr.samr_UserInfo13.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo14_workstations,
	  { "Workstations", "samr.samr_UserInfo14.workstations", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo16_acct_flags,
	  { "Acct Flags", "samr.samr_UserInfo16.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo17_acct_expiry,
	  { "Acct Expiry", "samr.samr_UserInfo17.acct_expiry", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo18_lm_pwd,
	  { "Lm Pwd", "samr.samr_UserInfo18.lm_pwd", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo18_lm_pwd_active,
	  { "Lm Pwd Active", "samr.samr_UserInfo18.lm_pwd_active", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo18_nt_pwd,
	  { "Nt Pwd", "samr.samr_UserInfo18.nt_pwd", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo18_nt_pwd_active,
	  { "Nt Pwd Active", "samr.samr_UserInfo18.nt_pwd_active", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo18_password_expired,
	  { "Password Expired", "samr.samr_UserInfo18.password_expired", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo1_account_name,
	  { "Account Name", "samr.samr_UserInfo1.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo1_comment,
	  { "Comment", "samr.samr_UserInfo1.comment", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo1_description,
	  { "Description", "samr.samr_UserInfo1.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo1_full_name,
	  { "Full Name", "samr.samr_UserInfo1.full_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo1_primary_gid,
	  { "Primary Gid", "samr.samr_UserInfo1.primary_gid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo20_parameters,
	  { "Parameters", "samr.samr_UserInfo20.parameters", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_account_name,
	  { "Account Name", "samr.samr_UserInfo21.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_acct_expiry,
	  { "Acct Expiry", "samr.samr_UserInfo21.acct_expiry", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_acct_flags,
	  { "Acct Flags", "samr.samr_UserInfo21.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_allow_password_change,
	  { "Allow Password Change", "samr.samr_UserInfo21.allow_password_change", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_bad_password_count,
	  { "Bad Password Count", "samr.samr_UserInfo21.bad_password_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_buf_count,
	  { "Buf Count", "samr.samr_UserInfo21.buf_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_buffer,
	  { "Buffer", "samr.samr_UserInfo21.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_code_page,
	  { "Code Page", "samr.samr_UserInfo21.code_page", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_comment,
	  { "Comment", "samr.samr_UserInfo21.comment", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_country_code,
	  { "Country Code", "samr.samr_UserInfo21.country_code", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_description,
	  { "Description", "samr.samr_UserInfo21.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_fields_present,
	  { "Fields Present", "samr.samr_UserInfo21.fields_present", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_force_password_change,
	  { "Force Password Change", "samr.samr_UserInfo21.force_password_change", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_full_name,
	  { "Full Name", "samr.samr_UserInfo21.full_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_home_directory,
	  { "Home Directory", "samr.samr_UserInfo21.home_directory", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_home_drive,
	  { "Home Drive", "samr.samr_UserInfo21.home_drive", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_last_logoff,
	  { "Last Logoff", "samr.samr_UserInfo21.last_logoff", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_last_logon,
	  { "Last Logon", "samr.samr_UserInfo21.last_logon", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_last_password_change,
	  { "Last Password Change", "samr.samr_UserInfo21.last_password_change", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_lm_owf_password,
	  { "Lm Owf Password", "samr.samr_UserInfo21.lm_owf_password", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_lm_password_set,
	  { "Lm Password Set", "samr.samr_UserInfo21.lm_password_set", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_logon_count,
	  { "Logon Count", "samr.samr_UserInfo21.logon_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_logon_hours,
	  { "Logon Hours", "samr.samr_UserInfo21.logon_hours", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_logon_script,
	  { "Logon Script", "samr.samr_UserInfo21.logon_script", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_nt_owf_password,
	  { "Nt Owf Password", "samr.samr_UserInfo21.nt_owf_password", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_nt_password_set,
	  { "Nt Password Set", "samr.samr_UserInfo21.nt_password_set", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_parameters,
	  { "Parameters", "samr.samr_UserInfo21.parameters", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_password_expired,
	  { "Password Expired", "samr.samr_UserInfo21.password_expired", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_primary_gid,
	  { "Primary Gid", "samr.samr_UserInfo21.primary_gid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_private_data,
	  { "Private Data", "samr.samr_UserInfo21.private_data", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_private_data_sensitive,
	  { "Private Data Sensitive", "samr.samr_UserInfo21.private_data_sensitive", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_profile_path,
	  { "Profile Path", "samr.samr_UserInfo21.profile_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo21_workstations,
	  { "Workstations", "samr.samr_UserInfo21.workstations", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo23_info,
	  { "Info", "samr.samr_UserInfo23.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo23_password,
	  { "Password", "samr.samr_UserInfo23.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo24_password,
	  { "Password", "samr.samr_UserInfo24.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo24_password_expired,
	  { "Password Expired", "samr.samr_UserInfo24.password_expired", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo25_info,
	  { "Info", "samr.samr_UserInfo25.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo25_password,
	  { "Password", "samr.samr_UserInfo25.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo26_password,
	  { "Password", "samr.samr_UserInfo26.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo26_password_expired,
	  { "Password Expired", "samr.samr_UserInfo26.password_expired", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo2_code_page,
	  { "Code Page", "samr.samr_UserInfo2.code_page", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo2_comment,
	  { "Comment", "samr.samr_UserInfo2.comment", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo2_country_code,
	  { "Country Code", "samr.samr_UserInfo2.country_code", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo2_reserved,
	  { "Reserved", "samr.samr_UserInfo2.reserved", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo31_password,
	  { "Password", "samr.samr_UserInfo31.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo31_password_expired,
	  { "Password Expired", "samr.samr_UserInfo31.password_expired", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo32_info,
	  { "Info", "samr.samr_UserInfo32.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo32_password,
	  { "Password", "samr.samr_UserInfo32.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_account_name,
	  { "Account Name", "samr.samr_UserInfo3.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_acct_flags,
	  { "Acct Flags", "samr.samr_UserInfo3.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_allow_password_change,
	  { "Allow Password Change", "samr.samr_UserInfo3.allow_password_change", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_bad_password_count,
	  { "Bad Password Count", "samr.samr_UserInfo3.bad_password_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_force_password_change,
	  { "Force Password Change", "samr.samr_UserInfo3.force_password_change", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_full_name,
	  { "Full Name", "samr.samr_UserInfo3.full_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_home_directory,
	  { "Home Directory", "samr.samr_UserInfo3.home_directory", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_home_drive,
	  { "Home Drive", "samr.samr_UserInfo3.home_drive", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_last_logoff,
	  { "Last Logoff", "samr.samr_UserInfo3.last_logoff", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_last_logon,
	  { "Last Logon", "samr.samr_UserInfo3.last_logon", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_last_password_change,
	  { "Last Password Change", "samr.samr_UserInfo3.last_password_change", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_logon_count,
	  { "Logon Count", "samr.samr_UserInfo3.logon_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_logon_hours,
	  { "Logon Hours", "samr.samr_UserInfo3.logon_hours", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_logon_script,
	  { "Logon Script", "samr.samr_UserInfo3.logon_script", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_primary_gid,
	  { "Primary Gid", "samr.samr_UserInfo3.primary_gid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_profile_path,
	  { "Profile Path", "samr.samr_UserInfo3.profile_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo3_workstations,
	  { "Workstations", "samr.samr_UserInfo3.workstations", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo4_logon_hours,
	  { "Logon Hours", "samr.samr_UserInfo4.logon_hours", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_account_name,
	  { "Account Name", "samr.samr_UserInfo5.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_acct_expiry,
	  { "Acct Expiry", "samr.samr_UserInfo5.acct_expiry", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_acct_flags,
	  { "Acct Flags", "samr.samr_UserInfo5.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_bad_password_count,
	  { "Bad Password Count", "samr.samr_UserInfo5.bad_password_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_description,
	  { "Description", "samr.samr_UserInfo5.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_full_name,
	  { "Full Name", "samr.samr_UserInfo5.full_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_home_directory,
	  { "Home Directory", "samr.samr_UserInfo5.home_directory", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_home_drive,
	  { "Home Drive", "samr.samr_UserInfo5.home_drive", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_last_logoff,
	  { "Last Logoff", "samr.samr_UserInfo5.last_logoff", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_last_logon,
	  { "Last Logon", "samr.samr_UserInfo5.last_logon", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_last_password_change,
	  { "Last Password Change", "samr.samr_UserInfo5.last_password_change", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_logon_count,
	  { "Logon Count", "samr.samr_UserInfo5.logon_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_logon_hours,
	  { "Logon Hours", "samr.samr_UserInfo5.logon_hours", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_logon_script,
	  { "Logon Script", "samr.samr_UserInfo5.logon_script", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_primary_gid,
	  { "Primary Gid", "samr.samr_UserInfo5.primary_gid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_profile_path,
	  { "Profile Path", "samr.samr_UserInfo5.profile_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo5_workstations,
	  { "Workstations", "samr.samr_UserInfo5.workstations", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo6_account_name,
	  { "Account Name", "samr.samr_UserInfo6.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo6_full_name,
	  { "Full Name", "samr.samr_UserInfo6.full_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo7_account_name,
	  { "Account Name", "samr.samr_UserInfo7.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo8_full_name,
	  { "Full Name", "samr.samr_UserInfo8.full_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo9_primary_gid,
	  { "Primary Gid", "samr.samr_UserInfo9.primary_gid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info1,
	  { "Info1", "samr.samr_UserInfo.info1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info10,
	  { "Info10", "samr.samr_UserInfo.info10", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info11,
	  { "Info11", "samr.samr_UserInfo.info11", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info12,
	  { "Info12", "samr.samr_UserInfo.info12", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info13,
	  { "Info13", "samr.samr_UserInfo.info13", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info14,
	  { "Info14", "samr.samr_UserInfo.info14", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info16,
	  { "Info16", "samr.samr_UserInfo.info16", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info17,
	  { "Info17", "samr.samr_UserInfo.info17", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info18,
	  { "Info18", "samr.samr_UserInfo.info18", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info2,
	  { "Info2", "samr.samr_UserInfo.info2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info20,
	  { "Info20", "samr.samr_UserInfo.info20", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info21,
	  { "Info21", "samr.samr_UserInfo.info21", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info23,
	  { "Info23", "samr.samr_UserInfo.info23", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info24,
	  { "Info24", "samr.samr_UserInfo.info24", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info25,
	  { "Info25", "samr.samr_UserInfo.info25", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info26,
	  { "Info26", "samr.samr_UserInfo.info26", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info3,
	  { "Info3", "samr.samr_UserInfo.info3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info31,
	  { "Info31", "samr.samr_UserInfo.info31", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info32,
	  { "Info32", "samr.samr_UserInfo.info32", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info4,
	  { "Info4", "samr.samr_UserInfo.info4", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info5,
	  { "Info5", "samr.samr_UserInfo.info5", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info6,
	  { "Info6", "samr.samr_UserInfo.info6", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info7,
	  { "Info7", "samr.samr_UserInfo.info7", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info8,
	  { "Info8", "samr.samr_UserInfo.info8", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_UserInfo_info9,
	  { "Info9", "samr.samr_UserInfo.info9", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT,
	  { "SAMR VALIDATE FIELD BAD PASSWORD COUNT", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT_tfs), ( 0x00000008 ), NULL, HFILL }},
	{ &hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME,
	  { "SAMR VALIDATE FIELD BAD PASSWORD TIME", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME_tfs), ( 0x00000002 ), NULL, HFILL }},
	{ &hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_LOCKOUT_TIME,
	  { "SAMR VALIDATE FIELD LOCKOUT TIME", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_LOCKOUT_TIME", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_LOCKOUT_TIME_tfs), ( 0x00000004 ), NULL, HFILL }},
	{ &hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY,
	  { "SAMR VALIDATE FIELD PASSWORD HISTORY", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_PASSWORD_HISTORY", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_tfs), ( 0x00000020 ), NULL, HFILL }},
	{ &hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH,
	  { "SAMR VALIDATE FIELD PASSWORD HISTORY LENGTH", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH_tfs), ( 0x00000010 ), NULL, HFILL }},
	{ &hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET,
	  { "SAMR VALIDATE FIELD PASSWORD LAST SET", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET_tfs), ( 0x00000001 ), NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordInfo_bad_password_time,
	  { "Bad Password Time", "samr.samr_ValidatePasswordInfo.bad_password_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordInfo_bad_pwd_count,
	  { "Bad Pwd Count", "samr.samr_ValidatePasswordInfo.bad_pwd_count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordInfo_fields_present,
	  { "Fields Present", "samr.samr_ValidatePasswordInfo.fields_present", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordInfo_last_password_change,
	  { "Last Password Change", "samr.samr_ValidatePasswordInfo.last_password_change", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordInfo_lockout_time,
	  { "Lockout Time", "samr.samr_ValidatePasswordInfo.lockout_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordInfo_pwd_history,
	  { "Pwd History", "samr.samr_ValidatePasswordInfo.pwd_history", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordInfo_pwd_history_len,
	  { "Pwd History Len", "samr.samr_ValidatePasswordInfo.pwd_history_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordRepCtr_info,
	  { "Info", "samr.samr_ValidatePasswordRepCtr.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordRepCtr_status,
	  { "Status", "samr.samr_ValidatePasswordRepCtr.status", FT_UINT1632, BASE_DEC, VALS(samr_samr_ValidationStatus_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordRep_ctr1,
	  { "Ctr1", "samr.samr_ValidatePasswordRep.ctr1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordRep_ctr2,
	  { "Ctr2", "samr.samr_ValidatePasswordRep.ctr2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordRep_ctr3,
	  { "Ctr3", "samr.samr_ValidatePasswordRep.ctr3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq1_info,
	  { "Info", "samr.samr_ValidatePasswordReq1.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq1_password_matched,
	  { "Password Matched", "samr.samr_ValidatePasswordReq1.password_matched", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq2_account,
	  { "Account", "samr.samr_ValidatePasswordReq2.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq2_hash,
	  { "Hash", "samr.samr_ValidatePasswordReq2.hash", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq2_info,
	  { "Info", "samr.samr_ValidatePasswordReq2.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq2_password,
	  { "Password", "samr.samr_ValidatePasswordReq2.password", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq2_password_matched,
	  { "Password Matched", "samr.samr_ValidatePasswordReq2.password_matched", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq3_account,
	  { "Account", "samr.samr_ValidatePasswordReq3.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq3_clear_lockout,
	  { "Clear Lockout", "samr.samr_ValidatePasswordReq3.clear_lockout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq3_hash,
	  { "Hash", "samr.samr_ValidatePasswordReq3.hash", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq3_info,
	  { "Info", "samr.samr_ValidatePasswordReq3.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq3_password,
	  { "Password", "samr.samr_ValidatePasswordReq3.password", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq3_pwd_must_change_at_next_logon,
	  { "Pwd Must Change At Next Logon", "samr.samr_ValidatePasswordReq3.pwd_must_change_at_next_logon", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq_req1,
	  { "Req1", "samr.samr_ValidatePasswordReq.req1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq_req2,
	  { "Req2", "samr.samr_ValidatePasswordReq.req2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePasswordReq_req3,
	  { "Req3", "samr.samr_ValidatePasswordReq.req3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePassword_level,
	  { "Level", "samr.samr_ValidatePassword.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_ValidatePasswordLevel_vals), 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePassword_rep,
	  { "Rep", "samr.samr_ValidatePassword.rep", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidatePassword_req,
	  { "Req", "samr.samr_ValidatePassword.req", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidationBlob_data,
	  { "Data", "samr.samr_ValidationBlob.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_samr_ValidationBlob_length,
	  { "Length", "samr.samr_ValidationBlob.length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_sec_desc_buf_len,
	  { "Sec Desc Buf Len", "samr.sec_desc_buf_len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
	{ &hf_samr_status,
	  { "NT Error", "samr.status", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &NT_errors_ext, 0, NULL, HFILL }},
	{ &hf_samr_userPwdChangeFailureInformation_extendedFailureReason,
	  { "ExtendedFailureReason", "samr.userPwdChangeFailureInformation.extendedFailureReason", FT_UINT32, BASE_DEC, VALS(samr_samPwdChangeReason_vals), 0, NULL, HFILL }},
	{ &hf_samr_userPwdChangeFailureInformation_filterModuleName,
	  { "FilterModuleName", "samr.userPwdChangeFailureInformation.filterModuleName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
	{ &hf_samr_user_access_mask,
	  { "Access Mask", "samr.user.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
	{ &hf_samr_user_handle,
	  { "User Handle", "samr.user_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
	};


	static int *ett[] = {
		&ett_dcerpc_samr,
		&ett_samr_lsa_Strings,
		&ett_samr_samr_AcctFlags,
		&ett_samr_samr_ConnectAccessMask,
		&ett_samr_samr_UserAccessMask,
		&ett_samr_samr_DomainAccessMask,
		&ett_samr_samr_GroupAccessMask,
		&ett_samr_samr_AliasAccessMask,
		&ett_samr_samr_SamEntry,
		&ett_samr_samr_SamArray,
		&ett_samr_samr_PasswordProperties,
		&ett_samr_samr_DomInfo1,
		&ett_samr_samr_DomGeneralInformation,
		&ett_samr_samr_DomInfo3,
		&ett_samr_samr_DomOEMInformation,
		&ett_samr_samr_DomInfo5,
		&ett_samr_samr_DomInfo6,
		&ett_samr_samr_DomInfo7,
		&ett_samr_samr_DomInfo8,
		&ett_samr_samr_DomInfo9,
		&ett_samr_samr_DomGeneralInformation2,
		&ett_samr_samr_DomInfo12,
		&ett_samr_samr_DomInfo13,
		&ett_samr_samr_DomainInfo,
		&ett_samr_samr_Ids,
		&ett_samr_samr_GroupAttrs,
		&ett_samr_samr_GroupInfoAll,
		&ett_samr_samr_GroupInfoAttributes,
		&ett_samr_samr_GroupInfoDescription,
		&ett_samr_samr_GroupInfo,
		&ett_samr_samr_RidTypeArray,
		&ett_samr_samr_AliasInfoAll,
		&ett_samr_samr_AliasInfo,
		&ett_samr_samr_UserInfo1,
		&ett_samr_samr_UserInfo2,
		&ett_samr_samr_LogonHours,
		&ett_samr_samr_UserInfo3,
		&ett_samr_samr_UserInfo4,
		&ett_samr_samr_UserInfo5,
		&ett_samr_samr_UserInfo6,
		&ett_samr_samr_UserInfo7,
		&ett_samr_samr_UserInfo8,
		&ett_samr_samr_UserInfo9,
		&ett_samr_samr_UserInfo10,
		&ett_samr_samr_UserInfo11,
		&ett_samr_samr_UserInfo12,
		&ett_samr_samr_UserInfo13,
		&ett_samr_samr_UserInfo14,
		&ett_samr_samr_UserInfo16,
		&ett_samr_samr_UserInfo17,
		&ett_samr_samr_Password,
		&ett_samr_samr_UserInfo18,
		&ett_samr_samr_UserInfo20,
		&ett_samr_samr_FieldsPresent,
		&ett_samr_samr_UserInfo21,
		&ett_samr_samr_CryptPassword,
		&ett_samr_samr_UserInfo23,
		&ett_samr_samr_UserInfo24,
		&ett_samr_samr_CryptPasswordEx,
		&ett_samr_samr_UserInfo25,
		&ett_samr_samr_UserInfo26,
		&ett_samr_samr_EncryptedPasswordAES,
		&ett_samr_samr_UserInfo31,
		&ett_samr_samr_UserInfo32,
		&ett_samr_samr_UserInfo,
		&ett_samr_samr_RidWithAttribute,
		&ett_samr_samr_RidWithAttributeArray,
		&ett_samr_samr_DispEntryGeneral,
		&ett_samr_samr_DispInfoGeneral,
		&ett_samr_samr_DispEntryFull,
		&ett_samr_samr_DispInfoFull,
		&ett_samr_samr_DispEntryFullGroup,
		&ett_samr_samr_DispInfoFullGroups,
		&ett_samr_samr_DispEntryAscii,
		&ett_samr_samr_DispInfoAscii,
		&ett_samr_samr_DispInfo,
		&ett_samr_samr_PwInfo,
		&ett_samr_userPwdChangeFailureInformation,
		&ett_samr_samr_ConnectInfo1,
		&ett_samr_samr_ConnectInfo,
		&ett_samr_samr_ValidateFieldsPresent,
		&ett_samr_samr_ValidationBlob,
		&ett_samr_samr_ValidatePasswordInfo,
		&ett_samr_samr_ValidatePasswordRepCtr,
		&ett_samr_samr_ValidatePasswordRep,
		&ett_samr_samr_ValidatePasswordReq3,
		&ett_samr_samr_ValidatePasswordReq2,
		&ett_samr_samr_ValidatePasswordReq1,
		&ett_samr_samr_ValidatePasswordReq,
	};

	proto_dcerpc_samr = proto_register_protocol("SAMR (pidl)", "SAMR", "samr");
	proto_register_field_array(proto_dcerpc_samr, hf, array_length (hf));
	proto_register_subtree_array(ett, array_length(ett));

	module_t* samr_module = prefs_register_protocol_obsolete(proto_dcerpc_samr);
	prefs_register_obsolete_preference(samr_module, "nt_password");
}

void proto_reg_handoff_dcerpc_samr(void)
{
	dcerpc_init_uuid(proto_dcerpc_samr, ett_dcerpc_samr,
		&uuid_dcerpc_samr, ver_dcerpc_samr,
		samr_dissectors, hf_samr_opnum);
}
