/* packet-saphdb.c
 * Routines for SAP Diag (SAP GUI Protocol) dissection
 * Copyright 2022, Martin Gallo <martin.gallo [AT] gmail.com>
 * Code contributed by SecureAuth Corp.
 *
 * Wireshark - Network traffic analyzer
 * By Gerald Combs <gerald@wireshark.org>
 * Copyright 1998 Gerald Combs
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */

#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/expert.h>
#include <wsutil/wmem/wmem.h>

#include "packet-sapsnc.h"

/* Define default ports. It right range shold be 32NN, but as prot numbers are
 * proprietary and not IANA assigned, we leave only the one corresponding to the
 * instance 00. In addition, 3298 it's generally used for the niping tool and 3299
 * is associated to SAP Router.
 */
#define SAPDIAG_PORT_RANGE "3200"

/* SAP Diag Header Communication Flag values */
#define SAPDIAG_COM_FLAG_TERM_EOS   0x01
#define SAPDIAG_COM_FLAG_TERM_EOC   0x02
#define SAPDIAG_COM_FLAG_TERM_NOP   0x04
#define SAPDIAG_COM_FLAG_TERM_EOP   0x08
#define SAPDIAG_COM_FLAG_TERM_INI   0x10
#define SAPDIAG_COM_FLAG_TERM_CAS   0x20
#define SAPDIAG_COM_FLAG_TERM_NNM   0x40
#define SAPDIAG_COM_FLAG_TERM_GRA   0x80


/* SAP Diag Header Compression field values */
static const value_string sapdiag_compress_vals[] = {
	{ 0x0, "Compression switched off" },
	{ 0x1, "Compression switched on" },
	{ 0x2, "Data encrypted" },
	{ 0x3, "Data encrypted wrap" },
	/* NULL */
	{ 0x0, NULL }
};

/* SAP Diag Header Algorithm field values */
static const value_string sapdiag_algorithm_vals[] = {
	{ 0x10, "LZC" },
	{ 0x12, "LZH" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag DP Header Request ID values */
static const value_string sapdiag_dp_request_id_vals[] = {
	{ 0x00000000, "NOWP" },
	{ 0x00000001, "DIA" },
	{ 0x00000002, "DUPD" },
	{ 0x00000003, "DENQ" },
	{ 0x00000004, "DBTC" },
	{ 0x00000005, "DSPO" },
	{ 0x00000006, "DUP2" },
	/* NULL */
	{ 0x00000000, NULL}
};

/* SAP Diag DP Header Sender ID values */
static const value_string sapdiag_dp_sender_id_vals[] = {
	{ 0x01, "DISPATCHER" },
	{ 0x02, "WORK_PROCESS" },
	{ 0x04, "REMOTE_TERMINAL" },
	{ 0x20, "APPC_TERMINAL" },
	{ 0x40, "APPC_GATEWAY" },
	{ 0xC8, "ICMAN" },
	{ 0xC9, "IC_MONITOR" },
	{ 0xCB, "LCOM" },
	/* NULL */
	{ 0x00, NULL}
};

/* SAP Diag DP Header Action Type values */
static const value_string sapdiag_dp_action_type_vals[] = {
	{ 0x01, "SEND_TO_DP" },
	{ 0x02, "SEND_TO_WP" },
	{ 0x03, "SEND_TO_TM" },
	{ 0x04, "SEND_TO_APPC" },
	{ 0x05, "SEND_TO_APPCTM" },
	{ 0x06, "SEND_MSG_TYPE" },
	{ 0x07, "SEND_MSG_REQUES" },
	{ 0x08, "SEND_MSG_REPLY" },
	{ 0x09, "SEND_MSG_ONEWAY" },
	{ 0x0A, "SEND_MSG_ADMIN" },
	{ 0x0B, "WAKE_UP_WPS" },
	{ 0x0C, "SET_TIMEOUT" },
	{ 0x0D, "DEL_SCHEDULE" },
	{ 0x0E, "ADD_SOFT_SERV" },
	{ 0x0F, "SUB_SOFT_SERV" },
	{ 0x10, "SHUTDOWN" },
	{ 0x11, "SEND_TO_MSGSERV" },
	{ 0x12, "SEND_TO_PLUGIN" },
	/* NULL */
	{ 0x00, NULL}
};

/* SAP Diag DP Header Request Info Flag constants */
#define SAPDIAG_DP_REQ_INFO_UNDEFINED 		0x00
#define SAPDIAG_DP_REQ_INFO_LOGIN		0x01
#define SAPDIAG_DP_REQ_INFO_LOGOFF		0x02
#define SAPDIAG_DP_REQ_INFO_SHUTDOWN		0x04
#define SAPDIAG_DP_REQ_INFO_GRAPHIC_TM		0x08
#define SAPDIAG_DP_REQ_INFO_ALPHA_TM		0x10
#define SAPDIAG_DP_REQ_INFO_ERROR_FROM_APPC	0x20
#define SAPDIAG_DP_REQ_INFO_CANCELMODE		0x40
#define SAPDIAG_DP_REQ_INFO_MSG_WITH_REQ_BUF	0x80

#define SAPDIAG_DP_REQ_INFO_MSG_WITH_OH		0x01
#define SAPDIAG_DP_REQ_INFO_BUFFER_REFRESH	0x02
#define SAPDIAG_DP_REQ_INFO_BTC_SCHEDULER	0x04
#define SAPDIAG_DP_REQ_INFO_APPC_SERVER_DOWN	0x08
#define SAPDIAG_DP_REQ_INFO_MS_ERROR		0x10
#define SAPDIAG_DP_REQ_INFO_SET_SYSTEM_USER	0x20
#define SAPDIAG_DP_REQ_INFO_DP_CANT_HANDLE_REQ	0x40
#define SAPDIAG_DP_REQ_INFO_DP_AUTO_ABAP	0x80

#define SAPDIAG_DP_REQ_INFO_DP_APPL_SERV_INFO	0x01
#define SAPDIAG_DP_REQ_INFO_DP_ADMIN		0x02
#define SAPDIAG_DP_REQ_INFO_DP_SPOOL_ALRM	0x04
#define SAPDIAG_DP_REQ_INFO_DP_HAND_SHAKE	0x08
#define SAPDIAG_DP_REQ_INFO_DP_CANCEL_PRIV	0x10
#define SAPDIAG_DP_REQ_INFO_DP_RAISE_TIMEOUT	0x20
#define SAPDIAG_DP_REQ_INFO_DP_NEW_MODE		0x40
#define SAPDIAG_DP_REQ_INFO_DP_SOFT_CANCEL	0x80

#define SAPDIAG_DP_REQ_INFO_DP_TM_INPUT		0x01
#define SAPDIAG_DP_REQ_INFO_DP_TM_OUTPUT	0x02
#define SAPDIAG_DP_REQ_INFO_DP_ASYNC_RFC	0x04
#define SAPDIAG_DP_REQ_INFO_DP_ICM_EVENT	0x08
#define SAPDIAG_DP_REQ_INFO_DP_AUTO_TH		0x10
#define SAPDIAG_DP_REQ_INFO_DP_RFC_CANCEL	0x20
#define SAPDIAG_DP_REQ_INFO_DP_MS_ADM		0x40

/* SAP Diag Support Bits */
#define SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR	0x01  /* 0 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS	0x02  /* 1 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION	0x04  /* 2 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT	0x08  /* 3 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT	0x10  /* 4 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC	0x20  /* 5 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED	0x40  /* 6 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE	0x80  /* 7 */

#define SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE	0x01  /* 8 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE	0x02  /* 9 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1	0x04  /* 10 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1	0x08  /* 11 */
#define SAPDIAG_SUPPORT_BIT_UPPERCASE	0x10  /* 12 */
#define SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY	0x20  /* 13 */
#define SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE	0x40  /* 14 */
#define SAPDIAG_SUPPORT_BIT_RFC_DIALOG	0x80  /* 15 */

#define SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT	0x01  /* 16 */
#define SAPDIAG_SUPPORT_BIT_FKEY_TABLE	0x02  /* 17 */
#define SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT	0x04  /* 18 */
#define SAPDIAG_SUPPORT_BIT_STOP_TRANS	0x08  /* 19 */
#define SAPDIAG_SUPPORT_BIT_FULL_MENU	0x10  /* 20 */
#define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES	0x20  /* 21 */
#define SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE	0x40  /* 22 */
#define SAPDIAG_SUPPORT_BIT_DLGH_FLAGS	0x80  /* 23 */

#define SAPDIAG_SUPPORT_BIT_APPL_MNU	0x01  /* 24 */
#define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO	0x02  /* 25 */
#define SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1	0x04  /* 26 */
#define SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB	0x08  /* 27 */
#define SAPDIAG_SUPPORT_BIT_GUIAPI	0x10  /* 28 */
#define SAPDIAG_SUPPORT_BIT_NOGRAPH	0x20  /* 29 */
#define SAPDIAG_SUPPORT_BIT_NOMESSAGES	0x40  /* 30 */
#define SAPDIAG_SUPPORT_BIT_NORABAX	0x80  /* 31 */

#define SAPDIAG_SUPPORT_BIT_NOSYSMSG	0x01  /* 32 */
#define SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT	0x02  /* 33 */
#define SAPDIAG_SUPPORT_BIT_NORFC	0x04  /* 34 */
#define SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT	0x08  /* 35 */
#define SAPDIAG_SUPPORT_BIT_MESSAGE_VARS	0x10  /* 36 */
#define SAPDIAG_SUPPORT_BIT_OCX_SUPPORT	0x20  /* 37 */
#define SAPDIAG_SUPPORT_BIT_SCROLL_INFOS	0x40  /* 38 */
#define SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK	0x80  /* 39 */

#define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2	0x01  /* 40 */
#define SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE	0x02  /* 41 */
#define SAPDIAG_SUPPORT_BIT_CURR_TCODE	0x04  /* 42 */
#define SAPDIAG_SUPPORT_BIT_CONN_WSIZE	0x08  /* 43 */
#define SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2	0x10  /* 44 */
#define SAPDIAG_SUPPORT_BIT_TABSTRIP	0x20  /* 45 */
#define SAPDIAG_SUPPORT_BIT_UNKNOWN_1	0x40  /* 46 (Unknown support bit) */
#define SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS	0x80  /* 47 */

#define SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES	0x01  /* 48 */
#define SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST	0x02  /* 49 */
#define SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER	0x04  /* 50 */
#define SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER	0x08  /* 51 */
#define SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER	0x10  /* 52 */
#define SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED	0x20  /* 53 */
#define SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED	0x40  /* 54 */
#define SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO	0x80  /* 55 */

#define SAPDIAG_SUPPORT_BIT_TYPE_SERVER	0x01  /* 56 */
#define SAPDIAG_SUPPORT_BIT_COMBOBOX	0x02  /* 57 */
#define SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED	0x04  /* 58 */
#define SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE	0x08  /* 59 */
#define SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE	0x10  /* 60 */
#define SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS	0x20  /* 61 */
#define SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS	0x40  /* 62 */
#define SAPDIAG_SUPPORT_BIT_R3INFO_USERID	0x80  /* 63 */

#define SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT	0x01  /* 64 */
#define SAPDIAG_SUPPORT_BIT_USER_TURNTIME2	0x02  /* 65 */
#define SAPDIAG_SUPPORT_BIT_NUM_FIELD	0x04  /* 66 */
#define SAPDIAG_SUPPORT_BIT_WIN16	0x08  /* 67 */
#define SAPDIAG_SUPPORT_BIT_CONTEXT_MENU	0x10  /* 68 */
#define SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE	0x20  /* 69 */
#define SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION	0x40  /* 70 */
#define SAPDIAG_SUPPORT_BIT_LABEL_OWNER	0x80  /* 71 */

#define SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD	0x01  /* 72 */
#define SAPDIAG_SUPPORT_BIT_PROPERTY_BAG	0x02  /* 73 */
#define SAPDIAG_SUPPORT_BIT_UNUSED_1	0x04  /* 74 */
#define SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2	0x08  /* 75 */
#define SAPDIAG_SUPPORT_BIT_PROPFONT_VALID	0x10  /* 76 */
#define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER	0x20  /* 77 */
#define SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID	0x40  /* 78 */
#define SAPDIAG_SUPPORT_BIT_NOTGUI	0x80  /* 79 */

#define SAPDIAG_SUPPORT_BIT_WAN	0x01  /* 80 */
#define SAPDIAG_SUPPORT_BIT_XML_BLOBS	0x02  /* 81 */
#define SAPDIAG_SUPPORT_BIT_RFC_QUEUE	0x04  /* 82 */
#define SAPDIAG_SUPPORT_BIT_RFC_COMPRESS	0x08  /* 83 */
#define SAPDIAG_SUPPORT_BIT_JAVA_BEANS	0x10  /* 84 */
#define SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND	0x20  /* 85 */
#define SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE	0x40  /* 86 */
#define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID	0x80  /* 87 */

#define SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB	0x01  /* 88 */
#define SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS	0x02  /* 89 */
#define SAPDIAG_SUPPORT_BIT_UNUSED_2	0x04  /* 90 */
#define SAPDIAG_SUPPORT_BIT_UNUSED_3	0x08  /* 91 */
#define SAPDIAG_SUPPORT_BIT_XML_PROPERTIES	0x10  /* 92 */
#define SAPDIAG_SUPPORT_BIT_UNUSED_4	0x20  /* 93 */
#define SAPDIAG_SUPPORT_BIT_HEX_FIELD	0x40  /* 94 */
#define SAPDIAG_SUPPORT_BIT_HAS_CACHE	0x80  /* 95 */

#define SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE	0x01  /* 96 */
#define SAPDIAG_SUPPORT_BIT_UNUSED_5	0x02  /* 97 */
#define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2	0x04  /* 98 */
#define SAPDIAG_SUPPORT_BIT_ITS	0x08  /* 99 */
#define SAPDIAG_SUPPORT_BIT_NO_EASYACCESS	0x10  /* 100 */
#define SAPDIAG_SUPPORT_BIT_PROPERTYPUMP	0x20  /* 101 */
#define SAPDIAG_SUPPORT_BIT_COOKIE	0x40  /* 102 */
#define SAPDIAG_SUPPORT_BIT_UNUSED_6	0x80  /* 103 */

#define SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE	0x01  /* 104 */
#define SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE	0x02  /* 105 */
#define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS	0x04  /* 106 */
#define SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY	0x08  /* 107 */
#define SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE	0x10  /* 108 */
#define SAPDIAG_SUPPORT_BIT_CACHED_VSETS	0x20  /* 109 */
#define SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR	0x40  /* 110 */
#define SAPDIAG_SUPPORT_BIT_AREA2FRONT	0x80  /* 111 */

#define SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH	0x01  /* 112 */
#define SAPDIAG_SUPPORT_BIT_AUTORESIZE	0x02  /* 113 */
#define SAPDIAG_SUPPORT_BIT_EDIT_VARLEN	0x04  /* 114 */
#define SAPDIAG_SUPPORT_BIT_WORKPLACE	0x08  /* 115 */
#define SAPDIAG_SUPPORT_BIT_PRINTDATA	0x10  /* 116 */
#define SAPDIAG_SUPPORT_BIT_UNKNOWN_2	0x20  /* 117 (Unknown support bit) */
#define SAPDIAG_SUPPORT_BIT_SINGLE_SESSION	0x40  /* 118 */
#define SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE	0x80  /* 119 */

#define SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT	0x01  /* 120 */
#define SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER	0x02  /* 121 */
#define SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO	0x04  /* 122 */
#define SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT	0x08  /* 123 */
#define SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT	0x10  /* 124 */
#define SAPDIAG_SUPPORT_BIT_WEBGUI	0x20  /* 125 */
#define SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE	0x40  /* 126 */
#define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST	0x80  /* 127 */

#define SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2	0x01  /* 128 */
#define SAPDIAG_SUPPORT_BIT_EOKDUMMY_1	0x02  /* 129 */
#define SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING	0x04  /* 130 */
#define SAPDIAG_SUPPORT_BIT_SLC	0x08  /* 131 */
#define SAPDIAG_SUPPORT_BIT_ACCESSIBILITY	0x10  /* 132 */
#define SAPDIAG_SUPPORT_BIT_ECATT	0x20  /* 133 */
#define SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3	0x40  /* 134 */
#define SAPDIAG_SUPPORT_BIT_ENABLE_UTF8	0x80  /* 135 */

#define SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME	0x01  /* 136 */
#define SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST	0x02  /* 137 */
#define SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE	0x04  /* 138 */
#define SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE	0x08  /* 139 */
#define SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP	0x10  /* 140 */
#define SAPDIAG_SUPPORT_BIT_ENABLE_APPL4	0x20  /* 141 */
#define SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL	0x40  /* 142 */
#define SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE	0x80  /* 143 */

#define SAPDIAG_SUPPORT_BIT_BINARY_EVENTID	0x01  /* 144 */
#define SAPDIAG_SUPPORT_BIT_GUI_THEME	0x02  /* 145 */
#define SAPDIAG_SUPPORT_BIT_TOP_WINDOW	0x04  /* 146 */
#define SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1	0x08  /* 147 */
#define SAPDIAG_SUPPORT_BIT_SPLITTER	0x10  /* 148 */
#define SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY	0x20  /* 149 */
#define SAPDIAG_SUPPORT_BIT_ACC_LIST	0x40  /* 150 */
#define SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO	0x80  /* 151 */

#define SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM	0x01  /* 152 */
#define SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS	0x02  /* 153 */
#define SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1	0x04  /* 154 */
#define SAPDIAG_SUPPORT_BIT_FRAME_1	0x08  /* 155 */
#define SAPDIAG_SUPPORT_BIT_TICKET4GUI	0x10  /* 156 */
#define SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS	0x20  /* 157 */
#define SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT	0x40  /* 158 */
#define SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP	0x80  /* 159 */

#define SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2	0x01  /* 160 */
#define SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3	0x02  /* 161 */
#define SAPDIAG_SUPPORT_BIT_CELLINFO	0x04  /* 162 */
#define SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2	0x08  /* 163 */
#define SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT	0x10  /* 164 */
#define SAPDIAG_SUPPORT_BIT_ITS_PLUGIN	0x20  /* 165 */
#define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS	0x40  /* 166 */
#define SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI	0x80  /* 167 */

#define SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2	0x01  /* 168 */
#define SAPDIAG_SUPPORT_BIT_RCUI	0x02  /* 169 */
#define SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE	0x04  /* 170 */
#define SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE	0x08  /* 171 */
#define SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION	0x10  /* 172 */
#define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP	0x20  /* 173 */
#define SAPDIAG_SUPPORT_BIT_EOKDUMMY_2	0x40  /* 174 */
#define SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3	0x80  /* 175 */

#define SAPDIAG_SUPPORT_BIT_SBA2	0x01  /* 176 */
#define SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE	0x02  /* 177 */
#define SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2	0x04  /* 178 */
#define SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE	0x08  /* 179 */
#define SAPDIAG_SUPPORT_BIT_GUI_PACKET	0x10  /* 180 */
#define SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER	0x20  /* 181 */
#define SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION	0x40  /* 182 */
#define SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST	0x80  /* 183 */

#define SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME	0x01  /* 184 */
#define SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN	0x02  /* 185 */
#define SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1	0x04  /* 186 */
#define SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS	0x08  /* 187 */
#define SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO	0x10  /* 188 */
#define SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT	0x20  /* 189 */
#define SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH	0x40  /* 190 */
#define SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT	0x80  /* 191 */

#define SAPDIAG_SUPPORT_BIT_UNKNOWN_3	0x01  /* 192 (Unknown support bit) */
#define SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR	0x02  /* 193 */
#define SAPDIAG_SUPPORT_BIT_MAX_WSIZE	0x04  /* 194 */
#define SAPDIAG_SUPPORT_BIT_SAP_PERSONAS	0x08  /* 195 */
#define SAPDIAG_SUPPORT_BIT_IDA_ALV	0x10  /* 196 */
#define SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS	0x20  /* 197 */
#define SAPDIAG_SUPPORT_BIT_AMC	0x40  /* 198 */
#define SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC	0x80  /* 199 */

#define SAPDIAG_SUPPORT_BIT_GROUPBOX	0x01  /* 200 */
#define SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON	0x02  /* 201 */
#define SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST	0x04  /* 202 */
#define SAPDIAG_SUPPORT_BIT_FIORI_MODE	0x08  /* 203 */
#define SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE	0x10  /* 204 */
#define SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE	0x20  /* 205 */
#define SAPDIAG_SUPPORT_BIT_AGI_ID	0x40  /* 206 */
#define SAPDIAG_SUPPORT_BIT_AGI_ID_TC	0x80  /* 207 */

#define SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS	0x01  /* 208 */
#define SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE	0x02  /* 209 */
#define SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3	0x04  /* 210 */
#define SAPDIAG_SUPPORT_BIT_NWBC	0x08  /* 211 */
#define SAPDIAG_SUPPORT_BIT_CONTAINER_LIST	0x10  /* 212 */
#define SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR	0x20  /* 213 */
#define SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE	0x40  /* 214 */


/* SAP Diag DP Header New Status values */
static const value_string sapdiag_dp_new_stat_vals[] = {
	{ 0x00, "NO_CHANGE" },
	{ 0x01, "WP_SLOT_FREE" },
	{ 0x02, "WP_WAIT" },
	{ 0x04, "WP_RUN" },
	{ 0x08, "WP_HOLD" },
	{ 0x10, "WP_KILLED" },
	{ 0x20, "WP_SHUTDOWN" },
	{ 0x40, "WP_RESTRICTED" },
	{ 0x80, "WP_NEW" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item Type values */
static const value_string sapdiag_item_type_vals[] = {
	{ 0x01,	"SES" },
	{ 0x02, "ICO" },
	{ 0x03, "TIT" },
	{ 0x07, "DiagMessage (old format)" },
	{ 0x08, "OKC" },
	{ 0x09, "CHL" },
	{ 0x0a, "SFE" },
	{ 0x0b, "SBA" },
	{ 0x0c, "EOM" },
	{ 0x10,	"APPL" },
	{ 0x11, "DIAG_XMLBLOB" },
	{ 0x12, "APPL4" },
	{ 0x13, "SLC" },
	{ 0x15, "SBA2" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 ID values */
static const value_string sapdiag_item_id_vals[] = {
	{ 0x01, "SCRIPT" },
	{ 0x02, "GRAPH" },
	{ 0x03, "IXOS" },
	{ 0x04, "ST_USER" },
	{ 0x05, "DYNN" },
	{ 0x06, "ST_R3INFO" },
	{ 0x07, "POPU" },
	{ 0x08, "RFC_TR" },
	{ 0x09, "DYNT" },
	{ 0x0a, "CONTAINER" },
	{ 0x0b, "MNUENTRY" },
	{ 0x0c, "VARINFO" },
	{ 0x0e, "CONTROL" },
	{ 0x0f, "UI_EVENT" },
	{ 0x12, "ACC_LIST" },
	{ 0x13, "RCUI" },
	{ 0x14, "GUI_PACKET" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 SCRIPT SID values */
static const value_string sapdiag_item_appl_script_vals[] = {
	/* SCRIPT */
	{ 0x01, "SCRIPT_OTF" },
	{ 0x02, "SCRIPT_SCREEN" },
	{ 0x03, "SCRIPT_POSTSCRIPT" },
	{ 0x04, "SCRIPT_ITF" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 GRAPH SID values */
static const value_string sapdiag_item_appl_graph_vals[] = {
	/* GRAPH */
	{ 0x03, "GRAPH RELEASE 3" },
	{ 0x05, "GRAPH RELEASE 5" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 IXOS SID values */
static const value_string sapdiag_item_appl_ixos_vals[] = {
	/* IXOS */
	{ 0x01, "ABLAGE" },
	{ 0x02, "ANZEIGE" },
	{ 0x03, "IXOS_COMMAND" },
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 ST_USER SID values */
static const value_string sapdiag_item_appl_st_user_vals[] = {
	/* ST_USER */
	{ 0x01, "V1" },
	{ 0x02, "CONNECT" },
	{ 0x03, "SELECTEDRECT" },
	{ 0x04, "FONTMETRIC" },
	{ 0x05, "TABLEMETRIC" },
	{ 0x06, "GUITIME" },
	{ 0x07, "GUITIMEZONE" },
	{ 0x08, "TURNTIME" },
	{ 0x09, "GUIVERSION" },
	{ 0x0b, "SUPPORTDATA" },
	{ 0x0c, "RFC_CONNECT" },
	{ 0x0d, "WSIZE" },
	{ 0x0e, "V2" },
	{ 0x0f, "TURNTIME2" },
	{ 0x10, "RFC_PARENT_UUID" },
	{ 0x11, "RFC_NEW_UUID" },
	{ 0x12, "RFC_UUIDS" },
	{ 0x13, "RFC_UUIDS2" },
	{ 0x14, "XML_LOGIN" },
	{ 0x15, "XML_TRANSACTION" },
	{ 0x16, "SCROLLBAR_WIDTH" },
	{ 0x17, "TOOLBAR_HEIGHT" },
	{ 0x18, "PASSPORT_DATA" },
	{ 0x19, "GUI_STATE" },
	{ 0x1a, "DECIMALPOINT" },
	{ 0x1b, "LANGUAGE" },
	{ 0x1c, "USERNAME" },
	{ 0x1d, "GUIPATCHLEVEL" },
	{ 0x1e, "WSIZE_PIXEL" },
	{ 0x1f, "GUI_OS_VERSION" },
	{ 0x20, "BROWSER_VERSION" },
	{ 0x21, "OFFICE_VERSION" },
	{ 0x22, "JDK_VERSION" },
	{ 0x23, "GUIXT_VERSION" },
	{ 0x24, "DISPLAY_SIZE" },
	{ 0x25, "GUI_TYPE" },
	{ 0x26, "DIALOG_STEP_NUMBER" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 DYNN SID values */
static const value_string sapdiag_item_appl_dynn_vals[] = {
	/* DYNN */
	{ 0x01, "CHL" },
	{ 0x03, "XMLPROP DYNPRO" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 ST_R3INFO SID values */
static const value_string sapdiag_item_appl_st_r3info_vals[] = {
	/* ST_R3INFO */
	{ 0x01, "MODENUMBER" },
	{ 0x02, "DBNAME" },
	{ 0x03, "CPUNAME" },
	{ 0x04, "RFC_TRIGGER" },
	{ 0x05, "GUI_LABEL" },
	{ 0x06, "DIAGVERSION" },
	{ 0x07, "TCODE" },
	{ 0x08, "RFC_WAITING" },
	{ 0x09, "RFC_REFRESH" },
	{ 0x0a, "IMODENUMBER" },
	{ 0x0b, "MESSAGE" },
	{ 0x0c, "CLIENT" },
	{ 0x0d, "DYNPRONAME" },
	{ 0x0e, "DYNPRONUMBER" },
	{ 0x0f, "CUANAME" },
	{ 0x10, "CUASTATUS" },
	{ 0x11, "SUPPORTDATA" },
	{ 0x12, "RFC_CONNECT_OK" },
	{ 0x13, "GUI_FKEY" },
	{ 0x14, "GUI_FKEYT" },
	{ 0x15, "STOP_TRANS" },
	{ 0x16, "RFC_DIAG_BLOCK_SIZE" },
	{ 0x17, "USER_CHECKED" },
	{ 0x18, "FLAGS" },
	{ 0x19, "USERID" },
	{ 0x1a, "ROLLCOUNT" },
	{ 0x1b, "GUI_XT_VAR" },
	{ 0x1c, "IMODEUUID" },
	{ 0x1d, "IMODEUUID_INVALIDATE" },
	{ 0x1e, "IMODEUUIDS" },
	{ 0x1f, "IMODEUUIDS2" },
	{ 0x20, "CODEPAGE" },
	{ 0x21, "CONTEXTID" },
	{ 0x22, "AUTOLOGOUT_TIME" },
	{ 0x23, "CODEPAGE_DIAG_GUI" },
	{ 0x24, "CODEPAGE_APP_SERVER" },
	{ 0x25, "GUI_THEME" },
	{ 0x26, "GUI_USER_SCRIPTING" },
	{ 0x27, "CODEPAGE_APP_SERVER_1" },
	{ 0x28, "TICKET4GUI" },
	{ 0x29, "KERNEL_VERSION" },
	{ 0x2a, "STD_TOOLBAR_ITEMS" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 POPU SID values */
static const value_string sapdiag_item_appl_popu_vals[] = {
	/* POPU */
	{ 0x02, "DEST" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 RFC_TR SID values */
static const value_string sapdiag_item_appl_rfc_tr_vals[] = {
	/* RFC_TR */
	{ 0x00, "RFC_TR_REQ" },
	{ 0x01, "RFC_TR_RET" },
	{ 0x02, "RFC_TR_ERR" },
	{ 0x03, "RFC_TR_RQT" },
	{ 0x04, "RFC_TR_MOR" },
	{ 0x05, "RFC_TR_MOB" },
	{ 0x06, "RFC_TR_RNB" },
	{ 0x07, "RFC_TR_RNT" },
	{ 0x08, "RFC_TR_DIS" },
	{ 0x09, "RFC_TR_CALL" },
	{ 0x0a, "RFC_TR_CALL_END" },
	{ 0x0b, "RFC_TR_RES" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 DYNT SID values */
static const value_string sapdiag_item_appl_dynt_vals[] = {
	/* DYNT */
	{ 0x01, "DYNT_FOCUS" },
	{ 0x02, "DYNT_ATOM" },
	{ 0x03, "DYNT_EVENT_UNUSED" },
	{ 0x04, "TABLE_ROW_REFERENCE" },
	{ 0x05, "TABLE_ROW_DAT_INPUT_DUMMY" },
	{ 0x06, "TABLE_INPUT_HEADER" },
	{ 0x07, "TABLE_OUTPUT_HEADER" },
	{ 0x08, "TABLE_ROW_DATA_INPUT" },
	{ 0x09, "TABLE_ROW_DATA_OUTPUT" },
	{ 0x0a, "DYNT_NOFOCUS" },
	{ 0x0b, "DYNT_FOCUS_1" },
	{ 0x0c, "TABLE_ROW_REFERENCE_1" },
	{ 0x0d, "TABLE_FIELD_NAMES" },
	{ 0x0e, "TABLE_HEADER" },
	{ 0x0f, "DYNT_TABSTRIP_HEADER" },
	{ 0x10, "DYNT_TABSTRIP_BUTTONS" },
	{ 0x11, "TABLE_ROW_REFERENCE_2" },
	{ 0x12, "DYNT_CONTROL_FOCUS" },
	{ 0x13, "TABLE_FIELD_XMLPROP" },
	{ 0x14, "DYNT_SPLITTER_HEADER" },
	{ 0x15, "DYNT_TC_COLUMN_TITLE_XMLP" },
	{ 0x16, "DYNT_TC_ROW_SELECTOR_NAME" },
	{ 0x17, "DYNT_FOCUS_FRAME" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 CONTAINER SID values */
static const value_string sapdiag_item_appl_container_vals[] = {
	/* CONTAINTER */
	{ 0x01, "RESET" },
	{ 0x02, "DEFAULT" },
	{ 0x03, "SUBSCREEN" },
	{ 0x04, "LOOP" },
	{ 0x05, "TABLE" },
	{ 0x06, "NAME" },
	{ 0x08, "TABSTRIP" },
	{ 0x09, "TABSTRIP_PAGE" },
	{ 0x0a, "CONTROL" },
	{ 0x0c, "XMLPROP" },
	{ 0x0d, "SPLITTER" },
	{ 0x0e, "SPLITTER_CELL" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 MNUENTRY SID values */
static const value_string sapdiag_item_appl_mnuentry_vals[] = {
	/* MNUENTRY */
	{ 0x01, "MENU_ACT" },
	{ 0x02, "MENU_MNU" },
	{ 0x03, "MENU_PFK" },
	{ 0x04, "MENU_KYB" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 VARINFO SID values */
static const value_string sapdiag_item_appl_varinfo_vals[] = {
	/* VARINFO */
	{ 0x01, "MESTYPE" },
	{ 0x02, "SCROLL_INFOS" },
	{ 0x03, "MESTYPE2" },
	{ 0x04, "OKCODE" },
	{ 0x05, "CONTAINER" },
	{ 0x06, "SCROLL_INFOS2" },
	{ 0x07, "AREASIZE" },
	{ 0x08, "AREA_PIXELSIZE" },
	{ 0x09, "SESSION_TITLE" },
	{ 0x0a, "SESSION_ICON" },
	{ 0x0b, "LIST_CELL_TEXT" },
	{ 0x0c, "CONTAINER_LOOP" },
	{ 0x0d, "LIST_FOCUS" },
	{ 0x0e, "MAINAREA_PIXELSIZE" },
	{ 0x0f, "SERVICE_REQUEST" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 CONTROl SID values */
static const value_string sapdiag_item_appl_control_vals[] = {
	/* CONTROL */
	{ 0x01, "CONTROL_PROPERTIES" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 UI_EVENT SID values */
static const value_string sapdiag_item_appl_ui_event_vals[] = {
	/* UI_EVENT */
	{ 0x01, "UI_EVENT_SOURCE" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 ACC_LIST SID values */
static const value_string sapdiag_item_appl_acc_list_vals[] = {
	/* ACC_LIST */
	{ 0x01, "ACC_LIST_INFO4FIELD" },
	{ 0x02, "ACC_LIST_CONTAINER" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 RCUI SID values */
static const value_string sapdiag_item_appl_rcui_vals[] = {
	/* RCUI */
	{ 0x01, "RCUI_STREAM" },
	{ 0x02, "RCUI_SYSTEM_ERROR" },
	{ 0x03, "RCUI_SPAGPA" },
	{ 0x04, "RCUI_MEMORYID" },
	{ 0x05, "RCUI_TXOPTION" },
	{ 0x06, "RCUI_VALUE" },
	{ 0x07, "RCUI_COMMAND" },
	{ 0x08, "RCUI_BDCMSG" },
	{ 0x09, "RCUI_CONNECT_DATA" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Item APPL/APPL4 GUI_PACKET SID values */
static const value_string sapdiag_item_appl_gui_packet_vals[] = {
	/* GUI_PACKET */
	{ 0x01, "GUI_PACKET_STATE" },
	{ 0x02, "GUI_PACKET_DATA" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Dynt Atom Etype values */
static const value_string sapdiag_item_dynt_atom_item_etype_vals[] = {
	{ 101, "DIAG_DGOTYP_EFIELD" },
	{ 102, "DIAG_DGOTYP_OFIELD" },
	{ 103, "DIAG_DGOTYP_KEYWORD" },
	{ 104, "DIAG_DGOTYP_CHECKBUTTON_4" },
	{ 105, "DIAG_DGOTYP_RADIOBUTTON_0" },
	{ 106, "DIAG_DGOTYP_PUSHBUTTON_3" },
	{ 107, "DIAG_DGOTYP_FRAME_3" },
	{ 108, "DIAG_DGOTYP_LOOP_6" },
	{ 109, "DIAG_DGOTYP_SUBSCREEN" },
	{ 111, "DIAG_DGOTYP_PROPERTY" },
	{ 112, "DIAG_DGOTYP_ICON_0" },
	{ 113, "DIAG_DGOTYP_PUSHBUTTON_1" },
	{ 114, "DIAG_DGOTYP_FNAME" },
	{ 115, "DIAG_DGOTYP_PUSHBUTTON_2" },
	{ 116, "DIAG_DGOTYP_TABSTRIP_BUTTON" },
	{ 117, "DIAG_DGOTYP_COMBOBOX" },
	{ 118, "DIAG_DGOTYP_CHECKBUTTON_1" },
	{ 119, "DIAG_DGOTYP_RADIOBUTTON_1" },
	{ 120, "DIAG_DGOTYP_XMLPROP" },
	{ 121, "DIAG_DGOTYP_EFIELD_1" },
	{ 122, "DIAG_DGOTYP_OFIELD_1" },
	{ 123, "DIAG_DGOTYP_KEYWORD_1_1" },
	{ 124, "DIAG_DGOTYP_CHECKBUTTON_2" },
	{ 125, "DIAG_DGOTYP_RADIOBUTTON__0" },
	{ 126, "DIAG_DGOTYP_COMBOBOX_1" },
	{ 127, "DIAG_DGOTYP_FRAME_1" },
	{ 128, "DIAG_DGOTYP_CHECKBUTTON_3" },
	{ 129, "DIAG_DGOTYP_RADIOBUTTON_3" },
	{ 130, "DIAG_DGOTYP_EFIELD_2" },
	{ 131, "DIAG_DGOTYP_OFIELD_2" },
	{ 132, "DIAG_DGOTYP_KEYWORD_2" },
	/* NULL */
	{ 000, NULL }
};

/* SAP Diag UI Event Source Event Type Values */
static const value_string sapdiag_item_ui_event_event_type_vals[] = {
	{ 0x01, "SELECT" },
	{ 0x02, "HE" },
	{ 0x03, "VALUEHELP" },
	{ 0x06, "RESIZE" },
	{ 0x07, "FUNCTIONKEY" },
	{ 0x08, "SCROLL" },
	{ 0x09, "BUTTONPRESSED" },
	{ 0x0a, "VALUECHANGED" },
	{ 0x0b, "STATECHANGED" },
	{ 0x0c, "NAVIGATION" },
	/* NULL */
	{ 0x00, NULL }
};

static const value_string sapdiag_item_ui_event_control_type_vals[] = {
	{ 0x00, "NONE" },
	{ 0x01, "FIELD" },
	{ 0x02, "RADIOBUTTON" },
	{ 0x03, "CHECKBUTTON" },
	{ 0x04, "MENUBUTTON" },
	{ 0x05, "TOOLBARBUTTON" },
	{ 0x06, "STANDARDTOOLBARBUTTON" },
	{ 0x07, "PUSHBUTTON" },
	{ 0x08, "TABLEVIEW" },
	{ 0x09, "TABSTRIP" },
	{ 0x0a, "DYNPRO" },
	{ 0x0b, "CUSTOM_CONTROL" },
	{ 0x0d, "FRAME" },
	{ 0x0e, "TABLEVIEW_COLSEL_BUTTON" },
	{ 0x0f, "TABLEVIEW_ROWSEL_BUTTON" },
	{ 0x10, "TABLEVIEW_CELL" },
	{ 0x11, "CONTEXTMENU" },
	{ 0x12, "SPLITTER" },
	{ 0x13, "MESSAGE" },
	{ 0x14, "OKCODE" },
	{ 0x15, "ACC_CONTAINER" },
	/* NULL */
	{ 0x00, NULL }
};

static const value_string sapdiag_item_ui_event_navigation_data_vals[] = {
	{ 0x01, "TAB" },
	{ 0x02, "TAB_BACK" },
	{ 0x03, "JUMP_OVER" },
	{ 0x04, "JUMP_OVER_BACK" },
	{ 0x05, "JUMP_OUT" },
	{ 0x06, "JUMP_OUT_BACK" },
	{ 0x07, "JUMP_SECTION" },
	{ 0x08, "JUMP_SECTION_BACK" },
	{ 0x09, "FIRST_FIELD" },
	{ 0x0a, "LAST_FIELD" },
	/* NULL */
	{ 0x00, NULL }
};

static const value_string sapdiag_item_control_properties_id_vals[] = {
	{ 0x01, "CONTROL_AREA" },
	{ 0x02, "CONTROL_ID" },
	{ 0x03, "CONTROL_VISIBLE" },
	{ 0x04, "CONTROL_ROW" },
	{ 0x05, "CONTROL_COLUMN" },
	{ 0x06, "CONTROL_ROWS" },
	{ 0x07, "CONTROL_COLUMNS" },
	/* NULL */
	{ 0x00, NULL }
};

/* SAP Diag Dynt Atom Attr flags */
#define SAPDIAG_ATOM_ATTR_DIAG_BSD_PROTECTED	0x01
#define SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE	0x02
#define SAPDIAG_ATOM_ATTR_DIAG_BSD_INTENSIFY	0x04
#define SAPDIAG_ATOM_ATTR_DIAG_BSD_JUSTRIGHT	0x08
#define SAPDIAG_ATOM_ATTR_DIAG_BSD_MATCHCODE	0x10
#define SAPDIAG_ATOM_ATTR_DIAG_BSD_PROPFONT		0x20
#define SAPDIAG_ATOM_ATTR_DIAG_BSD_YES3D		0x40
#define SAPDIAG_ATOM_ATTR_DIAG_BSD_COMBOSTYLE	0x80

/* SAP Diag UI Event Source flags */
#define SAPDIAG_UI_EVENT_VALID_FLAG_MENU_POS			0x01
#define SAPDIAG_UI_EVENT_VALID_FLAG_CONTROL_POS			0x02
#define SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA		0x04
#define SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA	0x08

static int proto_sapdiag = -1;

static int hf_sapdiag_dp = -1;
static int hf_sapdiag_header = -1;
static int hf_sapdiag_payload = -1;

/* Diag Header */
static int hf_sapdiag_mode = -1;
static int hf_sapdiag_com_flag = -1;
static int hf_sapdiag_com_flag_TERM_EOS = -1;
static int hf_sapdiag_com_flag_TERM_EOC = -1;
static int hf_sapdiag_com_flag_TERM_NOP = -1;
static int hf_sapdiag_com_flag_TERM_EOP = -1;
static int hf_sapdiag_com_flag_TERM_INI = -1;
static int hf_sapdiag_com_flag_TERM_CAS = -1;
static int hf_sapdiag_com_flag_TERM_NNM = -1;
static int hf_sapdiag_com_flag_TERM_GRA = -1;

static int hf_sapdiag_mode_stat = -1;
static int hf_sapdiag_err_no = -1;
static int hf_sapdiag_msg_type = -1;
static int hf_sapdiag_msg_info = -1;
static int hf_sapdiag_msg_rc = -1;
static int hf_sapdiag_compress = -1;

/* Error messages */
static int hf_sapdiag_error_message = -1;

/* Compression header */
static int hf_sapdiag_compress_header = -1;
static int hf_sapdiag_uncomplength = -1;
static int hf_sapdiag_algorithm = -1;
static int hf_sapdiag_magic = -1;
static int hf_sapdiag_special = -1;

/* Message Data */
static int hf_sapdiag_item = -1;
static int hf_sapdiag_item_type = -1;
static int hf_sapdiag_item_id = -1;
static int hf_sapdiag_item_sid = -1;
static int hf_sapdiag_item_length_short = -1;
static int hf_sapdiag_item_length_long = -1;
static int hf_sapdiag_item_value = -1;

/* Message DP Header */
static int hf_sapdiag_dp_request_id = -1;
static int hf_sapdiag_dp_retcode = -1;
static int hf_sapdiag_dp_sender_id = -1;
static int hf_sapdiag_dp_action_type = -1;
static int hf_sapdiag_dp_req_info = -1;

static int hf_sapdiag_dp_req_info_LOGIN = -1;
static int hf_sapdiag_dp_req_info_LOGOFF = -1;
static int hf_sapdiag_dp_req_info_SHUTDOWN = -1;
static int hf_sapdiag_dp_req_info_GRAPHIC_TM = -1;
static int hf_sapdiag_dp_req_info_ALPHA_TM = -1;
static int hf_sapdiag_dp_req_info_ERROR_FROM_APPC = -1;
static int hf_sapdiag_dp_req_info_CANCELMODE = -1;
static int hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF = -1;
static int hf_sapdiag_dp_req_info_MSG_WITH_OH = -1;
static int hf_sapdiag_dp_req_info_BUFFER_REFRESH = -1;
static int hf_sapdiag_dp_req_info_BTC_SCHEDULER = -1;
static int hf_sapdiag_dp_req_info_APPC_SERVER_DOWN = -1;
static int hf_sapdiag_dp_req_info_MS_ERROR = -1;
static int hf_sapdiag_dp_req_info_SET_SYSTEM_USER = -1;
static int hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ = -1;
static int hf_sapdiag_dp_req_info_DP_AUTO_ABAP = -1;
static int hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO = -1;
static int hf_sapdiag_dp_req_info_DP_ADMIN = -1;
static int hf_sapdiag_dp_req_info_DP_SPOOL_ALRM = -1;
static int hf_sapdiag_dp_req_info_DP_HAND_SHAKE = -1;
static int hf_sapdiag_dp_req_info_DP_CANCEL_PRIV = -1;
static int hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT = -1;
static int hf_sapdiag_dp_req_info_DP_NEW_MODE = -1;
static int hf_sapdiag_dp_req_info_DP_SOFT_CANCEL = -1;
static int hf_sapdiag_dp_req_info_DP_TM_INPUT = -1;
static int hf_sapdiag_dp_req_info_DP_TM_OUTPUT = -1;
static int hf_sapdiag_dp_req_info_DP_ASYNC_RFC = -1;
static int hf_sapdiag_dp_req_info_DP_ICM_EVENT = -1;
static int hf_sapdiag_dp_req_info_DP_AUTO_TH = -1;
static int hf_sapdiag_dp_req_info_DP_RFC_CANCEL = -1;
static int hf_sapdiag_dp_req_info_DP_MS_ADM = -1;

static int hf_sapdiag_dp_tid = -1;
static int hf_sapdiag_dp_uid = -1;
static int hf_sapdiag_dp_mode = -1;
static int hf_sapdiag_dp_wp_id = -1;
static int hf_sapdiag_dp_wp_ca_blk = -1;
static int hf_sapdiag_dp_appc_ca_blk = -1;
static int hf_sapdiag_dp_len = -1; /* Length of the SAP Diag Items in the login */
static int hf_sapdiag_dp_new_stat = -1;
static int hf_sapdiag_dp_rq_id = -1;
static int hf_sapdiag_dp_terminal = -1;

/* Dynt Atom */
static int hf_sapdiag_item_dynt_atom = -1;
static int hf_sapdiag_item_dynt_atom_item = -1;
static int hf_sapdiag_item_dynt_atom_item_etype = -1;
static int hf_sapdiag_item_dynt_atom_item_attr = -1;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE = -1;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D = -1;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT = -1;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE = -1;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT = -1;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY = -1;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE = -1;
static int hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED = -1;

/* Control properties */
static int hf_sapdiag_item_control_properties_id = -1;
static int hf_sapdiag_item_control_properties_value = -1;

/* UI Event Source */
static int ht_sapdiag_item_ui_event_event_type = -1;
static int ht_sapdiag_item_ui_event_control_type = -1;
static int ht_sapdiag_item_ui_event_valid = -1;
static int ht_sapdiag_item_ui_event_valid_MENU_POS = -1;
static int ht_sapdiag_item_ui_event_valid_CONTROL_POS = -1;
static int ht_sapdiag_item_ui_event_valid_NAVIGATION_DATA = -1;
static int ht_sapdiag_item_ui_event_valid_FUNCTIONKEY_DATA = -1;
static int ht_sapdiag_item_ui_event_control_row = -1;
static int ht_sapdiag_item_ui_event_control_col = -1;
static int ht_sapdiag_item_ui_event_data = -1;
static int ht_sapdiag_item_ui_event_navigation_data = -1;
static int ht_sapdiag_item_ui_event_container_nrs = -1;
static int ht_sapdiag_item_ui_event_container = -1;

/* Menu Entries */
static int hf_sapdiag_item_menu_entry = -1;

/* Diag Support Bits */
static int hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UPPERCASE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY = -1;
static int hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG = -1;
static int hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_FULL_MENU = -1;
static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_APPL_MNU = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUIAPI = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NOGRAPH = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NORABAX = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NORFC = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TABSTRIP = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST = -1;
static int hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_COMBOBOX = -1;
static int hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD = -1;
static int hf_SAPDIAG_SUPPORT_BIT_WIN16 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION = -1;
static int hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD = -1;
static int hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID = -1;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NOTGUI = -1;
static int hf_SAPDIAG_SUPPORT_BIT_WAN = -1;
static int hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID = -1;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB = -1;
static int hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_3 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_4 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD = -1;
static int hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_5 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ITS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP = -1;
static int hf_SAPDIAG_SUPPORT_BIT_COOKIE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNUSED_6 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY = -1;
static int hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR = -1;
static int hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH = -1;
static int hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN = -1;
static int hf_SAPDIAG_SUPPORT_BIT_WORKPLACE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_PRINTDATA = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_WEBGUI = -1;
static int hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SLC = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ECATT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME = -1;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_THEME = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW = -1;
static int hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SPLITTER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ACC_LIST = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_FRAME_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP = -1;
static int hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CELLINFO = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN = -1;
static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_RCUI = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION = -1;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP = -1;
static int hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SBA2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST = -1;
static int hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN = -1;
static int hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO = -1;
static int hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH = -1;
static int hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT = -1;
static int hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_IDA_ALV = -1;
static int hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_AMC = -1;
static int hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GROUPBOX = -1;
static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST = -1;
static int hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID = -1;
static int hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC = -1;
static int hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS = -1;
static int hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE = -1;
static int hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3 = -1;
static int hf_SAPDIAG_SUPPORT_BIT_NWBC = -1;
static int hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR = -1;
static int hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE = -1;

static gint ett_sapdiag = -1;

/* Expert info */
static expert_field ei_sapdiag_item_unknown = EI_INIT;
static expert_field ei_sapdiag_item_partial = EI_INIT;
static expert_field ei_sapdiag_item_unknown_length = EI_INIT;
static expert_field ei_sapdiag_item_offset_invalid = EI_INIT;
static expert_field ei_sapdiag_item_length_invalid = EI_INIT;
static expert_field ei_sapdiag_atom_item_unknown = EI_INIT;
static expert_field ei_sapdiag_atom_item_partial = EI_INIT;
static expert_field ei_sapdiag_atom_item_malformed = EI_INIT;
static expert_field ei_sapdiag_dynt_focus_more_cont_ids = EI_INIT;
static expert_field ei_sapdiag_password_field = EI_INIT;

/* Global RFC dissection preference */
static gboolean global_sapdiag_rfc_dissection = TRUE;

/* Global SNC dissection preference */
static gboolean global_sapdiag_snc_dissection = TRUE;

/* Global port preference */
static range_t *global_sapdiag_port_range;

/* Global highlight preference */
static gboolean global_sapdiag_highlight_items = TRUE;

/* Protocol handle */
static dissector_handle_t sapdiag_handle;

void proto_register_sapdiag(void);
void proto_reg_handoff_sapdiag(void);


static void
dissect_sapdiag_dp_req_info(tvbuff_t *tvb, proto_tree *tree, guint32 offset){
	proto_item *ri = NULL;
	proto_tree *req_info_tree;

	ri = proto_tree_add_item(tree, hf_sapdiag_dp_req_info, tvb, offset, 4, ENC_BIG_ENDIAN);
	req_info_tree = proto_item_add_subtree(ri, ett_sapdiag);

	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_LOGIN, tvb, offset, 1, ENC_BIG_ENDIAN);		/* 0x08 */
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_LOGOFF, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_SHUTDOWN, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_GRAPHIC_TM, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_ALPHA_TM, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_ERROR_FROM_APPC, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_CANCELMODE, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_MSG_WITH_OH, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 0x09 */
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_BUFFER_REFRESH, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_BTC_SCHEDULER, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_APPC_SERVER_DOWN, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_MS_ERROR, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_SET_SYSTEM_USER, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_AUTO_ABAP, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 0x0a */
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_ADMIN, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_SPOOL_ALRM, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_HAND_SHAKE, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_CANCEL_PRIV, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_NEW_MODE, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_SOFT_CANCEL, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_TM_INPUT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 0x0b */
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_TM_OUTPUT, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_ASYNC_RFC, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_ICM_EVENT, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_AUTO_TH, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_RFC_CANCEL, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(req_info_tree, hf_sapdiag_dp_req_info_DP_MS_ADM, tvb, offset, 1, ENC_BIG_ENDIAN);
}

static void
dissect_sapdiag_dp(tvbuff_t *tvb, proto_tree *tree, guint32 offset){
	proto_item *dp = NULL;
	proto_tree *dp_tree;

	dp = proto_tree_add_item(tree, hf_sapdiag_dp, tvb, offset, 200, ENC_NA);
	dp_tree = proto_item_add_subtree(dp, ett_sapdiag);

	proto_tree_add_item(dp_tree, hf_sapdiag_dp_request_id, tvb, offset, 4, ENC_BIG_ENDIAN); 		/* 0x00 */
	offset+=4;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_retcode, tvb, offset, 1, ENC_BIG_ENDIAN);			/* 0x04 */
	offset++;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_sender_id, tvb, offset, 1, ENC_BIG_ENDIAN);			/* 0x05 */
	offset++;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_action_type, tvb, offset, 1, ENC_BIG_ENDIAN); 		/* 0x06 */
	offset++;
	dissect_sapdiag_dp_req_info(tvb, dp_tree, offset);          	/* Request info flags */		/* 0x07 */
	offset+=4;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_tid, tvb, offset, 4, ENC_BIG_ENDIAN);				/* 0x0b */
	offset+=4;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_uid, tvb, offset, 2, ENC_BIG_ENDIAN);				/* 0x0f */
	offset+=2;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_mode, tvb, offset, 1, ENC_BIG_ENDIAN);				/* 0x11 */
	offset++;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_wp_id, tvb, offset, 4, ENC_BIG_ENDIAN);				/* 0x12 */
	offset+=4;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_wp_ca_blk, tvb, offset, 4, ENC_BIG_ENDIAN);			/* 0x16 */
	offset+=4;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_appc_ca_blk, tvb, offset, 4, ENC_BIG_ENDIAN);		/* 0x1a */
	offset+=4;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);				/* 0x1e */
	offset+=4;
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_new_stat, tvb, offset, 1, ENC_BIG_ENDIAN);			/* 0x22 */
	offset++;
	offset+=4; 	/* Unknown 4 bytes */																/* 0x23 */
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_rq_id, tvb, offset, 2, ENC_BIG_ENDIAN);				/* 0x27 */
	offset+=2;
	offset+=40; /* Unknown 40 bytes (0x20 * 40) */													/* 0x29 */
	proto_tree_add_item(dp_tree, hf_sapdiag_dp_terminal, tvb, offset, 15, ENC_ASCII|ENC_NA);		/* 0x51 */
}

static void
dissect_sapdiag_support_bits(tvbuff_t *tvb, proto_tree *tree, guint32 offset){

	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 0 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 1 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 2 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 3 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 4 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 5 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 6 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 7 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 8 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 9 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 10 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 11 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UPPERCASE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 12 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 13 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 14 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 15 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 16 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 17 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 18 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 19 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FULL_MENU, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 20 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 21 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 22 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 23 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_APPL_MNU, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 24 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 25 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 26 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 27 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUIAPI, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 28 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOGRAPH, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 29 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 30 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NORABAX, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 31 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 32 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 33 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NORFC, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 34 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 35 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 36 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 37 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 38 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 39 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 40 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 41 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 42 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 43 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 44 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABSTRIP, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 45 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 46 (Unknown support bit) */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 47 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 48 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 49 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 50 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 51 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 52 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 53 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 54 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 55 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 56 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_COMBOBOX, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 57 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 58 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 59 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 60 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 61 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 62 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 63 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 64 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 65 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 66 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WIN16, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 67 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 68 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 69 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 70 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 71 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 72 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 73 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 74 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 75 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 76 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 77 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 78 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOTGUI, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 79 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WAN, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 80 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 81 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 82 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 83 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 84 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 85 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 86 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 87 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 88 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 89 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 90 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_3, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 91 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 92 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_4, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 93 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 94 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 95 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 96 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_5, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 97 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 98 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ITS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 99 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 100 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 101 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_COOKIE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 102 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNUSED_6, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 103 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 104 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 105 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 106 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 107 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 108 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 109 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 110 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 111 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 112 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 113 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 114 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WORKPLACE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 115 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_PRINTDATA, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 116 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 117 (Unknown support bit) */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 118 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 119 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 120 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 121 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 122 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 123 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 124 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WEBGUI, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 125 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 126 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 127 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 128 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 129 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 130 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SLC, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 131 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 132 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ECATT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 133 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 134 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 135 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 136 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 137 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 138 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 139 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 140 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 141 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 142 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 143 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 144 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_THEME, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 145 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 146 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 147 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SPLITTER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 148 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 149 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ACC_LIST, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 150 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 151 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 152 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 153 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 154 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FRAME_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 155 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 156 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 157 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 158 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 159 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 160 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 161 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CELLINFO, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 162 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 163 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 164 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 165 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 166 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 167 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 168 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_RCUI, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 169 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 170 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 171 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 172 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 173 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 174 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 175 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SBA2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 176 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 177 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 178 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 179 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 180 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 181 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 182 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 183 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 184 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 185 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 186 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 187 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 188 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 189 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 190 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 191 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 192 (Unknown support bit) */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 193 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 194 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 195 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_IDA_ALV, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 196 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 197 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AMC, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 198 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 199 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GROUPBOX, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 200 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 201 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 202 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 203 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 204 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 205 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AGI_ID, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 206 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 207 */
	offset+=1;
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 208 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 209 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 210 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_NWBC, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 211 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 212 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 213 */
	proto_tree_add_item(tree, hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE, tvb, offset, 1, ENC_BIG_ENDIAN);  /* 214 */
}

static void
dissect_sapdiag_rfc_call(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint32 item_length){

	tvbuff_t *next_tvb = NULL;
	dissector_handle_t rfc_handle;

	/* Call the RFC internal dissector.
	 * TODO: This should be enabled when the RFC dissector is merged as they depend on each other.
	 */
	if (global_sapdiag_rfc_dissection == TRUE && FALSE){
		rfc_handle = find_dissector("saprfcinternal");
		if (rfc_handle){
			/* Set the column to not writable so the RFC dissector doesn't override the Diag info */
			col_set_writable(pinfo->cinfo, -1, FALSE);
			/* Create a new tvb buffer and call the dissector */
			next_tvb = tvb_new_subset_length(tvb, offset, item_length);
			call_dissector(rfc_handle, next_tvb, pinfo, tree);
		}
	}

}


static gboolean
check_length(packet_info *pinfo, proto_tree *tree, guint32 expected, guint32 real, const char *name_string){
	if (expected != real){
		expert_add_info_format(pinfo, tree, &ei_sapdiag_item_length_invalid, "Item %s length is invalid", name_string);
		return (FALSE);
	} else return (TRUE);
}


static guint8
add_item_value_uint8(tvbuff_t *tvb, proto_item *item, proto_tree *tree, int hf, guint32 offset, const char *text){
	proto_tree_add_none_format(tree, hf, tvb, offset, 1, "%s: %d", text, tvb_get_guint8(tvb, offset));
	proto_item_append_text(item, ", %s=%d", text, tvb_get_guint8(tvb, offset));
	return (tvb_get_guint8(tvb, offset));
}


static guint16
add_item_value_uint16(tvbuff_t *tvb, proto_item *item, proto_tree *tree, int hf, guint32 offset, const char *text){
	proto_tree_add_none_format(tree, hf, tvb, offset, 2, "%s: %d", text, tvb_get_ntohs(tvb, offset));
	proto_item_append_text(item, ", %s=%d", text, tvb_get_ntohs(tvb, offset));
	return (tvb_get_ntohs(tvb, offset));
}


static guint32
add_item_value_uint32(tvbuff_t *tvb, proto_item *item, proto_tree *tree, int hf, guint32 offset, const char *text){
	proto_tree_add_none_format(tree, hf, tvb, offset, 4, "%s: %d", text, tvb_get_ntohl(tvb, offset));
	proto_item_append_text(item, ", %s=%d", text, tvb_get_ntohl(tvb, offset));
	return (tvb_get_ntohl(tvb, offset));
}


static void
add_item_value_string(tvbuff_t *tvb, packet_info *pinfo, proto_item *item, proto_tree *tree, int hf, guint32 offset, guint32 length, const char *text, int show_in_tree){
	guint8 *string = tvb_get_string_enc(pinfo->pool, tvb, offset, length, ENC_ASCII);
	proto_tree_add_none_format(tree, hf, tvb, offset, length, "%s: %s", text, string);
	if (show_in_tree) proto_item_append_text(item, ", %s=%s", text, string);
}


static guint32
add_item_value_stringz(tvbuff_t *tvb, packet_info *pinfo, proto_item *item, proto_tree *tree, int hf, guint32 offset, const char *text, int show_in_tree){
	guint32 length = tvb_strsize(tvb, offset);
	guint8 *string = tvb_get_string_enc(pinfo->pool, tvb, offset, length - 1, ENC_ASCII);
	proto_tree_add_none_format(tree, hf, tvb, offset, length, "%s: %s", text, string);
	if (show_in_tree) proto_item_append_text(item, ", %s=%s", text, string);
	return (length);
}


static void
add_item_value_hexstring(tvbuff_t *tvb, packet_info *pinfo, proto_item *item, proto_tree *tree, int hf, guint32 offset, guint32 length, const char *text){
	proto_tree_add_none_format(tree, hf, tvb, offset, length, "%s: %s", text, tvb_bytes_to_str(pinfo->pool, tvb, offset, length));
	proto_item_append_text(item, ", %s=%s", text, tvb_bytes_to_str(pinfo->pool, tvb, offset, length));
}


static void
dissect_sapdiag_dyntatom(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint32 length){
	guint32 final = offset + length;
	guint16 atom_length = 0, atom_item_length = 0;
	guint8 etype = 0, attr = 0;

	proto_item *atom = NULL, *atom_item = NULL, *atom_item_attr = NULL;
	proto_tree *atom_tree = NULL, *atom_item_tree = NULL, *atom_item_attr_tree = NULL;

	while (offset < final){

		etype = tvb_get_guint8(tvb, offset+4);
		if ((etype != 114) && (etype != 120)) {
			/* Add a new atom subtree */
			atom_length = 0;
			atom = proto_tree_add_item(tree, hf_sapdiag_item_dynt_atom, tvb, offset, atom_length, ENC_NA);
			atom_tree = proto_item_add_subtree(atom, ett_sapdiag);
			proto_item_append_text(atom, ", Etype=%s", val_to_str_const(etype, sapdiag_item_dynt_atom_item_etype_vals, "Unknown")); /* Add the Etype to the Atom tree also */
		}

		/* Check the atom_tree for NULL values. If the atom_tree wasn't created at this point, the atom
		 * starts with an item different to 114 or 120. */
		if (atom_tree == NULL){
			expert_add_info(pinfo, tree, &ei_sapdiag_atom_item_malformed);
			break;
		}

		/* Add the item atom subtree */
		atom_item = proto_tree_add_item(atom_tree, hf_sapdiag_item_dynt_atom_item, tvb, offset, tvb_get_ntohs(tvb, offset), ENC_NA);
		atom_item_tree = proto_item_add_subtree(atom_item, ett_sapdiag);

		/* Get the atom item length */
		atom_item_length = add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Atom Length");

		/* Adjust the length of the atom tree, adding the new item's length and the length field */
		atom_length+= atom_item_length;
		proto_item_set_len(atom_tree, atom_length);

		/* Continue with the dissection */
		offset+=2;
		atom_item_length-=2;
		add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Dlg Flag 1");
		offset+=1;
		atom_item_length-=1;
		add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Dlg Flag 2");
		offset+=1;
		atom_item_length-=1;

		proto_tree_add_item(atom_item_tree, hf_sapdiag_item_dynt_atom_item_etype, tvb, offset, 1, ENC_BIG_ENDIAN);
		proto_item_append_text(atom_item, ", EType=%d", tvb_get_guint8(tvb, offset));
		offset+=1;
		atom_item_length-=1;

		add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Area");
		offset+=1;
		atom_item_length-=1;
		add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Block");
		offset+=1;
		atom_item_length-=1;
		add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Group");
		offset+=1;
		atom_item_length-=1;
		add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Row");
		offset+=2;
		atom_item_length-=2;
		add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Col");
		offset+=2;
		atom_item_length-=2;

		atom_item_attr = proto_tree_add_item(atom_item_tree, hf_sapdiag_item_dynt_atom_item_attr, tvb, offset, 1, ENC_BIG_ENDIAN);
		atom_item_attr_tree = proto_item_add_subtree(atom_item_attr, ett_sapdiag);

		attr = tvb_get_guint8(tvb, offset);
		proto_item_append_text(atom_item, ", Attr=%d", attr);
		proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED, tvb, offset, 1, ENC_BIG_ENDIAN);
		proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE, tvb, offset, 1, ENC_BIG_ENDIAN);
		proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY, tvb, offset, 1, ENC_BIG_ENDIAN);
		proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT, tvb, offset, 1, ENC_BIG_ENDIAN);
		proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE, tvb, offset, 1, ENC_BIG_ENDIAN);
		proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT, tvb, offset, 1, ENC_BIG_ENDIAN);
		proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D, tvb, offset, 1, ENC_BIG_ENDIAN);
		proto_tree_add_item(atom_item_attr_tree, hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE, tvb, offset, 1, ENC_BIG_ENDIAN);
		offset+=1;
		atom_item_length-=1;

		/* If the attribute is set to invisible we're dealing probably with a password field */
		if (attr & SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE){
			expert_add_info(pinfo, atom_item, &ei_sapdiag_password_field);
		}

		switch (etype){
			case 114:{  /* DIAG_DGOTYP_FNAME */
				add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 1);
				proto_item_append_text(atom, ", Text=%s", tvb_get_string_enc(pinfo->pool, tvb, offset, atom_item_length, ENC_ASCII));
				break;

			} case 115:{ /* DIAG_DGOTYP_PUSHBUTTON_2 */
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "V Length");
				offset+=1;
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "V Height");
				offset+=1;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Function Code Offset");
				offset+=2;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text Offset");
				offset+=2;
				offset+=add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text", 1);
				add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Function Code", 1);
				break;

			} case 116:{ /* DIAG_DGOTYP_TABSTRIP_BUTTON */
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "V Length");
				offset+=1;
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "V Height");
				offset+=1;
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Page Id");
				offset+=1;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Function Code Offset");
				offset+=2;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text Offset");
				offset+=2;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Id Offset");
				offset+=2;
				offset+=add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text", 1);
				offset+=add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Function Code", 1);
				add_item_value_stringz(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "ID", 1);
				break;

			} case 118:  /* DIAG_DGOTYP_CHECKBUTTON_1" */
			  case 119:{ /* DIAG_DGOTYP_RADIOBUTTON_1 */
				/* If the preference is set, report the item as partially dissected in the expert info */
				if (global_sapdiag_highlight_items){
					expert_add_info_format(pinfo, atom_item, &ei_sapdiag_atom_item_partial, "The Diag Atom is dissected partially (0x%.2x)", etype);
				}
				break;

			} case 120:{ /* DIAG_DGOTYP_XMLPROP */
				add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "XMLProp", 1);
				proto_item_append_text(atom, ", XMLProp=%s", tvb_get_string_enc(pinfo->pool, tvb, offset, atom_item_length, ENC_ASCII));
				break;

			} case 121:  /* DIAG_DGOTYP_EFIELD_1 */
			  case 122:  /* DIAG_DGOTYP_OFIELD_1 */
			  case 123:{ /* DIAG_DGOTYP_KEYWORD_1_1 */
				/* Found in NW 7.00 and 7.01 versions */
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Flag1");
				offset+=1;
				atom_item_length-=1;
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "DLen");
				offset+=1;
				atom_item_length-=1;
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "MLen");
				offset+=1;
				atom_item_length-=1;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "MaxNrChars");
				offset+=2;
				atom_item_length-=2;
				add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 0);

				break;

			  } case 127:{ /* DIAG_DGOTYP_FRAME_1 */
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "DRows");
				offset+=2;
				atom_item_length-=2;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "DCols");
				offset+=2;
				atom_item_length-=2;
				add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 1); offset+=atom_item_length;
				break;

			} case 129:{ /* DIAG_DGOTYP_RADIOBUTTON_3 */
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Button");
				offset+=1;
				atom_item_length-=1;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Visible Label Length");
				offset+=2;
				atom_item_length-=2;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "EventID Off");
				offset+=2;
				atom_item_length-=2;
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "EventID Len");
				offset+=1;
				atom_item_length-=1;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text Off");
				offset+=2;
				atom_item_length-=2;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Text Length");
				offset+=2;
				atom_item_length-=2;
				add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 1);
				break;

			} case 130:  /* DIAG_DGOTYP_EFIELD_2 */
			  case 131:  /* DIAG_DGOTYP_OFIELD_2 */
			  case 132:{ /* DIAG_DGOTYP_KEYWORD_2 */
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "Flag1");
				offset+=2;
				atom_item_length-=2;
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "DLen");
				offset+=1;
				atom_item_length-=1;
				add_item_value_uint8(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "MLen");
				offset+=1;
				atom_item_length-=1;
				add_item_value_uint16(tvb, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, "MaxNrChars");
				offset+=2;
				atom_item_length-=2;
				add_item_value_string(tvb, pinfo, atom_item, atom_item_tree, hf_sapdiag_item_value, offset, atom_item_length, "Text", 0);
				break;

			} default:
				/* If the preference is set, report the item as unknown in the expert info */
				if (global_sapdiag_highlight_items){
					expert_add_info_format(pinfo, atom_item, &ei_sapdiag_atom_item_unknown, "The Diag Atom has a unknown type that is not dissected (%d)", etype);
				}
				break;
		}
	}

}

static void
dissect_sapdiag_menu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint32 length){

	guint32 final = offset + length;

	proto_item *menu = NULL;
	proto_tree *menu_tree = NULL;

	while (offset < final){

		/* Add the menu entry subtree */
		menu = proto_tree_add_item(tree, hf_sapdiag_item_menu_entry, tvb, offset, tvb_get_ntohs(tvb, offset), ENC_NA);
		menu_tree = proto_item_add_subtree(menu, ett_sapdiag);

		add_item_value_uint16(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Length");
		offset+=2;

		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Position 1");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Position 2");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Position 3");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Position 4");
		offset+=1;

		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Flag"); /* XXX: Add flag values */
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Virtual Key");
		offset+=1;

		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 1");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 2");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 3");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 4");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 5");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Return Code 6");
		offset+=1;

		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 1");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 2");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 3");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 4");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 5");
		offset+=1;
		add_item_value_uint8(tvb, menu, menu_tree, hf_sapdiag_item_value, offset, "Function Code 6");
		offset+=1;

		offset+=add_item_value_stringz(tvb, pinfo, menu, menu_tree, hf_sapdiag_item_value, offset, "Text", 1);
		offset+=add_item_value_stringz(tvb, pinfo, menu, menu_tree, hf_sapdiag_item_value, offset, "Accelerator", 1);
		add_item_value_stringz(tvb, pinfo, menu, menu_tree, hf_sapdiag_item_value, offset, "Info", 1);
	}

}

static void
dissect_sapdiag_uievent(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset, guint32 length){

	proto_item *event_valid_item = NULL;
	proto_tree *event_valid_tree = NULL;
	guint8 event_valid = 0;
	guint16 container_nrs = 0, i = 0;

	event_valid = tvb_get_guint8(tvb, offset);
	event_valid_item = proto_tree_add_item(tree, ht_sapdiag_item_ui_event_valid, tvb, offset, 1, ENC_BIG_ENDIAN);
	event_valid_tree = proto_item_add_subtree(event_valid_item, ett_sapdiag);

	proto_tree_add_item(event_valid_tree, ht_sapdiag_item_ui_event_valid_MENU_POS, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(event_valid_tree, ht_sapdiag_item_ui_event_valid_CONTROL_POS, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(event_valid_tree, ht_sapdiag_item_ui_event_valid_NAVIGATION_DATA, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(event_valid_tree, ht_sapdiag_item_ui_event_valid_FUNCTIONKEY_DATA, tvb, offset, 1, ENC_BIG_ENDIAN); offset+=1;length-=1;

	proto_tree_add_item(tree, ht_sapdiag_item_ui_event_event_type, tvb, offset, 2, ENC_BIG_ENDIAN);
	proto_item_append_text(tree, ", Event Type=%s", val_to_str_const(tvb_get_ntohs(tvb, offset), sapdiag_item_ui_event_event_type_vals, "Unknown")); offset+=2;length-=2;

	proto_tree_add_item(tree, ht_sapdiag_item_ui_event_control_type, tvb, offset, 2, ENC_BIG_ENDIAN);
	proto_item_append_text(tree, ", Control Type=%s", val_to_str_const(tvb_get_ntohs(tvb, offset), sapdiag_item_ui_event_control_type_vals, "Unknown")); offset+=2;length-=2;

	/* The semantic of the event data changes depending of the event valid flag and are ignored if the
	SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA flag or the SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA
	flags are not set. We dissect them always. */
	if (event_valid & SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA){
		proto_tree_add_item(tree, ht_sapdiag_item_ui_event_navigation_data, tvb, offset, 1, ENC_BIG_ENDIAN);
		offset+=1;
		length-=1;
	} else { /* SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA */
		proto_tree_add_item(tree, ht_sapdiag_item_ui_event_data, tvb, offset, 1, ENC_BIG_ENDIAN);
		offset+=1;
		length-=1;
		proto_tree_add_item(tree, ht_sapdiag_item_ui_event_data, tvb, offset, 1, ENC_BIG_ENDIAN);
		offset+=1;
		length-=1;
		proto_tree_add_item(tree, ht_sapdiag_item_ui_event_data, tvb, offset, 1, ENC_BIG_ENDIAN);
		offset+=1;
		length-=1;
		proto_tree_add_item(tree, ht_sapdiag_item_ui_event_data, tvb, offset, 1, ENC_BIG_ENDIAN);
		offset+=1;
		length-=1;
	}

	/* These items are ignored if the flag SAPDIAG_UI_EVENT_VALID_FLAG_CONTROL_POS is not set. We dissect them always. */
	proto_tree_add_item(tree, ht_sapdiag_item_ui_event_control_row, tvb, offset, 2, ENC_BIG_ENDIAN);
	offset+=2;
	length-=2;
	proto_tree_add_item(tree, ht_sapdiag_item_ui_event_control_col, tvb, offset, 2, ENC_BIG_ENDIAN);
	offset+=2;
	length-=2;

	i = container_nrs = tvb_get_ntohs(tvb, offset);
	proto_tree_add_item(tree, ht_sapdiag_item_ui_event_container_nrs, tvb, offset, 2, ENC_BIG_ENDIAN);
	offset+=2;
	length-=2;

	while (i>0 && length>0){
		proto_tree_add_item(tree, ht_sapdiag_item_ui_event_container, tvb, offset, 1, ENC_BIG_ENDIAN);
		offset+=1;
		length-=1;
		i--;
	}

	if (i>0){
		expert_add_info_format(pinfo, tree, &ei_sapdiag_dynt_focus_more_cont_ids, "Number of Container IDs (%d) is invalid", container_nrs);
	}
}

static void
dissect_sapdiag_item(tvbuff_t *tvb, packet_info *pinfo, proto_item *item, proto_tree *item_value_tree, proto_tree *parent_tree, guint32 offset, guint8 item_type, guint8 item_id, guint8 item_sid, guint32 item_length){

	/* SES item */
	if (item_type==0x01){
		guint8 event_array = 0;
		check_length(pinfo, item_value_tree, 16, item_length, "SES");

		event_array = tvb_get_guint8(tvb, offset);
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event Array");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 1");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 2");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 3");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 4");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Event ID 5");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Screen Flag"); /* XXX: Add flag values */
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Modal No");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "X Pos");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Y Pos");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "IMode");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Flag 1"); /* XXX: Add flag values */
		offset+=3;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Dim Row");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Dim Col");

		/* TODO: Incomplete dissection of this item */
		/* If the preference is set, report the item as partially dissected in the expert info */
		if (global_sapdiag_highlight_items){
			expert_add_info_format(pinfo, item, &ei_sapdiag_item_partial, "The SES item is dissected partially (event array = 0x%.2x)", event_array);
		}

	} else if (item_type==0x0a) { /* SFE */
		check_length(pinfo, item_value_tree, 3, item_length, "SFE");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control format");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control color");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control extended");

	} else if (item_type==0x0b) { /* SBA */
		check_length(pinfo, item_value_tree, 2, item_length, "SBA");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control y-position");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Control x-position");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x26){		/* Dialog Step Number */
		check_length(pinfo, item_value_tree, 4, item_length, "Dialog Step Number");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Dialog Step Number");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x02){		/* Connect */
		check_length(pinfo, item_value_tree, 12, item_length, "Connect");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Protocol Version");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Code Page");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "WS Type");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x04){		/* Font Metric */
		check_length(pinfo, item_value_tree, 8, item_length, "Font Metric");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Variable font size (y)");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Variable font size (x)");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Fixed font size (y)");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Fixed font size (x)");

	} else if ((item_type==0x10 && item_id==0x04 && item_sid==0x0b) ||		/* Support Data */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x11)){
		check_length(pinfo, item_value_tree, 32, item_length, "Support Data");
		dissect_sapdiag_support_bits(tvb, item_value_tree, offset);

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x0d){		/* Window Size */
		check_length(pinfo, item_value_tree, 16, item_length, "Window Size");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Width");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Width");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x0f){		/* Turn Time 2 (Response time) */
		check_length(pinfo, item_value_tree, 4, item_length, "Response time");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Response time");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x16){		/* Scrollbar Width */
		check_length(pinfo, item_value_tree, 2, item_length, "Scrollbar Width");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Scrolllbar Width");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x17){		/* Scrollbar Height */
		check_length(pinfo, item_value_tree, 2, item_length, "Scrollbar Height");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Scrollbar Height");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x19){		/* Gui State */
		check_length(pinfo, item_value_tree, 2, item_length, "Gui State");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Flag 1");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Flag 2");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x1d){		/* GUI patch level */

		/* GUI Patch level could be a string in old versions, or a single byte integer in newer ones */
		if (item_length == 2){
			add_item_value_string(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, 2, "GUI patch level", 1);
		} else {
			check_length(pinfo, item_value_tree, 1, item_length, "GUI patch level");
			add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "GUI patch level");
		}

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x24){		/* Display Size */
		check_length(pinfo, item_value_tree, 8, item_length, "Display Size");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Height");

	} else if (item_type==0x10 && item_id==0x04 && item_sid==0x25){		/* GUI Type */
		check_length(pinfo, item_value_tree, 2, item_length, "GUI Type");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "GUI Type");

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x01){		/* Mode Number */
		check_length(pinfo, item_value_tree, 2, item_length, "Mode Number");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Mode Number");

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x06){		/* Diag version */
		check_length(pinfo, item_value_tree, 2, item_length, "Diag version");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Diag version");

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x0a){		/* Internal Mode Number */
		check_length(pinfo, item_value_tree, 2, item_length, "Internal Mode Number");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Internal Mode Number");

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x13){		/* GUI_FKEY */
		guint32 length = offset+item_length;
		offset++;  /* TODO: Skip one byte here */
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Virtual key number", 1);
		while ((offset < length) && tvb_offset_exists(tvb, offset)){
			offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "String number", 1);
		}
		/* If the preference is set, report the item as partially dissected in the expert info */
		if (global_sapdiag_highlight_items){
			expert_add_info_format(pinfo, item, &ei_sapdiag_item_partial, "The Diag Item is dissected partially (0x%.2x, 0x%.2x, 0x%.2x)", item_type, item_id, item_sid);
		}

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x14){		/* GUI_FKEYT */
		offset++;  /* TODO: Skip one byte here */
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Virtual key number");
		offset+=2;  /* TODO: Skip one byte here */
		add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Virtual key text", 1);
		/* If the preference is set, report the item as partially dissected in the expert info */
		if (global_sapdiag_highlight_items){
			expert_add_info_format(pinfo, item, &ei_sapdiag_item_partial, "The Diag Item is dissected partially (0x%.2x, 0x%.2x, 0x%.2x)", item_type, item_id, item_sid);
		}

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x16){		/* RFC Diag Block Size */
		check_length(pinfo, item_value_tree, 4, item_length, "RFC Diag Block Size");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "RFC Diag Block Size");

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x18){		/* Info flags */
		check_length(pinfo, item_value_tree, 2, item_length, "Info flags");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Info flags");
		/* If the preference is set, report the item as partially dissected in the expert info */
		if (global_sapdiag_highlight_items){
			expert_add_info_format(pinfo, item, &ei_sapdiag_item_partial, "The Diag Item is dissected partially (0x%.2x, 0x%.2x, 0x%.2x)", item_type, item_id, item_sid);
		}

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x19){		/* User ID */
		check_length(pinfo, item_value_tree, 2, item_length, "User ID");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "User ID");

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x1f){		/* IMode uuids 2 */
		guint8 uuids = tvb_get_guint8(tvb, offset);
		if (!check_length(pinfo, item_value_tree, 1 + 17 * uuids, item_length, "IMode uuids") ) return;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Number of uuids");
		offset+=1;
		while ((uuids > 0) && (tvb_offset_exists(tvb, offset + 16 + 1))){
			add_item_value_hexstring(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, 16, "UUID");
			offset+=16;
			add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Active context");
			offset+=1;
			uuids--;
		}

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x22){		/* Auto logout time */
		check_length(pinfo, item_value_tree, 4, item_length, "Auto logout time");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Auto logout time");

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x23){		/* Codepage Diag GUI */
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage number (numeric representation)");
		offset+=4;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Minimum number of bytes per character");
		offset+=1;
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage number (string representation)", 1);
		add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage description", 1);

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x27){		/* Codepage App Server */
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage number (numeric representation)");
		offset+=4;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Minimum number of bytes per character");
		offset+=1;
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage number (string representation)", 1);
		add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Codepage description", 1);

	} else if (item_type==0x10 && item_id==0x06 && item_sid==0x29){		/* Kernel Version */
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Database version", 1);
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Kernel version", 1);
		add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Kernel patch level", 1);

	} else if (item_type==0x10 && item_id==0x09 && item_sid==0x0b){		/* Dynt Focus */
		guint32 length = offset + item_length;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Num of Area ID");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Row");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Col");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Row Offset");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Col Offset");
		offset+=2;
		/* Container IDs up to 30 */
		if (length-offset > 30){
			expert_add_info_format(pinfo, item, &ei_sapdiag_dynt_focus_more_cont_ids, "The Dynt Focus contains more than 30 Container IDs (%d)", offset);
		}
		/* Dissect all the remaining container IDs */
		while((offset < length) && tvb_offset_exists(tvb, offset)){
			add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Focus Container ID");
			offset+=1;
		}

	} else if (item_type==0x10 && item_id==0x0a && item_sid==0x01){		/* Container Reset */
		check_length(pinfo, item_value_tree, 9, item_length, "Container Reset");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");

	} else if (item_type==0x10 && item_id==0x0a && item_sid==0x04){		/* Container Loop */
		check_length(pinfo, item_value_tree, 9, item_length, "Container Loop");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");

	} else if (item_type==0x10 && item_id==0x0a && item_sid==0x05){		/* Container Table */
		check_length(pinfo, item_value_tree, 9, item_length, "Container Table");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");

	} else if (item_type==0x10 && item_id==0x0a && item_sid==0x06){		/* Container Name */
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Subscreen name", 1);
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Container name", 1);
		add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "Subdynpro name", 1);

	} else if (item_type==0x10 && item_id==0x0a && item_sid==0x08){		/* Container TabStrip */
		check_length(pinfo, item_value_tree, 9, item_length, "Container TabStrip");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");

	} else if (item_type==0x10 && item_id==0x0a && item_sid==0x09){		/* Container TabStrip Page */
		check_length(pinfo, item_value_tree, 9, item_length, "Container TabStrip Page");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");

	} else if (item_type==0x10 && item_id==0x0a && item_sid==0x0a){		/* Container Control */
		check_length(pinfo, item_value_tree, 9, item_length, "Container Control");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Id");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Row");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Col");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Width");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Container Height");

	} else if (item_type==0x10 && item_id==0x0c && item_sid==0x03){		/* Message type */
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "T", 1);
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "T", 1);
		offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "T", 1);
		add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, "T", 1);

	} else if (item_type==0x10 && item_id==0x0c && item_sid==0x02){		/* Scroll Infos */
		check_length(pinfo, item_value_tree, 24, item_length, "Scroll Infos");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Total Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Total Width");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Data Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Data Width");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Height Offset");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Width Offset");

	} else if (item_type==0x10 && item_id==0x0c && item_sid==0x06){		/* Scroll Infos 2 */
		check_length(pinfo, item_value_tree, 33, item_length, "Scroll Infos 2");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Total Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Total Width");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Data Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Data Width");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Height Offset");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Width Offset");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Visible Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Visible Width");
		offset+=4;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Scroll Flag");

	} else if (item_type==0x10 && item_id==0x0c && item_sid==0x07){		/* Area Size */
		check_length(pinfo, item_value_tree, 16, item_length, "Area Size");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Width");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Width");

	} else if (item_type==0x10 && item_id==0x0c && item_sid==0x08){		/* Pixel Size */
		check_length(pinfo, item_value_tree, 16, item_length, "Pixel Size");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Width");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Area Width");

	} else if (item_type==0x10 && item_id==0x0c && item_sid==0x0c){		/* Container Loop */
		check_length(pinfo, item_value_tree, 2, item_length, "Container Loop");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Lines Per Loop Row");

	} else if (item_type==0x10 && item_id==0x0c && item_sid==0x0d){		/* List focus */
		check_length(pinfo, item_value_tree, 5, item_length, "List focus");
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "List focus version");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "List focus Row");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "List focus Column");

	} else if (item_type==0x10 && item_id==0x0c && item_sid==0x0e){		/* Main Area Pixel Size */
		check_length(pinfo, item_value_tree, 16, item_length, "Main Area Pixel Size");
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Height");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Window Width");

	/* Dynn items */
	} else if ((item_type==0x09) ||						/* CHL */
		   (item_type==0x10 && item_id==0x05 && item_sid==0x01)){	/* Dynn Chln */
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "scrflg");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "chlflag");
		offset+=2;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "current row");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "current column");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "V Slider Size");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "dimlistrow");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "dimlistcol");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "H Slider Size");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "dimrow");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "dimcol");
		offset+=1;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "maxlistrow");
		offset+=2;
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "listrowoffset");
		offset+=2;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "maxlistcol");
		offset+=1;
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "listcoloffset");

		/* If the preference is set, report the item as partially dissected in the expert info */
		if (global_sapdiag_highlight_items){
			expert_add_info_format(pinfo, item, &ei_sapdiag_item_partial, "The Diag Item is dissected partially (0x%.2x, 0x%.2x, 0x%.2x)", item_type, item_id, item_sid);
		}

	/* Control Properties */
	} else if (item_type==0x10 && item_id==0x0e && item_sid==0x01){ /* Control Properties */
		guint32 length = offset + item_length;

		while((offset < length) && (tvb_offset_exists(tvb, offset + 3))){  /* Check against at least three bytes (2 for ID, 1 for null-terminated value) */
			proto_tree_add_item(item_value_tree, hf_sapdiag_item_control_properties_id, tvb, offset, 2, ENC_BIG_ENDIAN);
			proto_item_append_text(item, ", Control Property ID=%d", tvb_get_ntohs(tvb, offset));
			offset+=2;
			offset+=add_item_value_stringz(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_control_properties_value, offset, "Control Property Value", 1);
		}

	/* UI event source */
	} else if (item_type==0x10 && item_id==0x0f && item_sid==0x01){ /* UI Event Source */
		dissect_sapdiag_uievent(tvb, pinfo, item_value_tree, offset, item_length);

	/* GUI Packet state */
	} else if (item_type==0x10 && item_id==0x14 && item_sid==0x01){ /* GUI Packet state */
		add_item_value_uint8(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Flags"); /* TODO: Add flag values */
		offset+=1;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Bytes Total");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Bytes Send");
		offset+=4;
		add_item_value_uint32(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Bytes Received");

	/* Dynt items */
	} else if ((item_type==0x12 && item_id==0x09 && item_sid==0x02) ||	/* Dynt Atom */
		   (item_type==0x10 && item_id==0x09 && item_sid==0x02)) {
		dissect_sapdiag_dyntatom(tvb, pinfo, item_value_tree, offset, item_length);

	/* String items */
	} else if ((item_type==0x10 && item_id==0x04 && item_sid==0x09) || 		/* Gui Version */
		   (item_type==0x10 && item_id==0x04 && item_sid==0x1a) || 		/* Decimal character */
		   (item_type==0x10 && item_id==0x04 && item_sid==0x1b) || 		/* Language */
		   (item_type==0x10 && item_id==0x04 && item_sid==0x1c) || 		/* Username */
		   (item_type==0x10 && item_id==0x04 && item_sid==0x1f) || 		/* Gui OS Version */
		   (item_type==0x10 && item_id==0x04 && item_sid==0x20) || 		/* Browser Version */
		   (item_type==0x10 && item_id==0x04 && item_sid==0x21) || 		/* Office Version */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x02) || 		/* Database name */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x03) ||	 	/* CPU name */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x07) || 		/* Transaction code */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x0b) || 		/* Message */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x0c) || 		/* Client */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x0d) || 		/* Dynpro name */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x0e) || 		/* Dynpro number */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x0f) || 		/* Cuaname */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x10) || 		/* Cuastatus */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x21) || 		/* Context ID */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x24) || 		/* Codepage application server */
		   (item_type==0x10 && item_id==0x06 && item_sid==0x25) || 		/* GUI Theme */
		   (item_type==0x10 && item_id==0x09 && item_sid==0x12) || 		/* Control Focus */
		   (item_type==0x10 && item_id==0x0c && item_sid==0x04) || 		/* OK Code */
		   (item_type==0x10 && item_id==0x0c && item_sid==0x09) || 		/* Session title */
		   (item_type==0x10 && item_id==0x0c && item_sid==0x0a) || 		/* Session icon */
		   (item_type==0x10 && item_id==0x0c && item_sid==0x0b)) 		/* List Cell text */
	{
		add_item_value_string(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, item_length, "Value", 1);

	/* RFC Embedded calls */
	} else if (item_type==0x10 && item_id==0x08){ /* RFC_TR */
		dissect_sapdiag_rfc_call(tvb, pinfo, parent_tree, offset, item_length);

	/* String items (long text) */
	} else if (item_type==0x11){										/* Data Stream */
		add_item_value_string(tvb, pinfo, item, item_value_tree, hf_sapdiag_item_value, offset, item_length, "Value", 0);

	/* Tab Strip Controls */
	} else if ((item_type==0x12 && item_id==0x09 && item_sid==0x10)) {
		dissect_sapdiag_dyntatom(tvb, pinfo, item_value_tree, offset, item_length);

	/* Menu Entries items */
	} else if ((item_type==0x12 && item_id==0x0b)) {
		dissect_sapdiag_menu(tvb, pinfo, item_value_tree, offset, item_length);

	} else if (item_type==0x13) { /* SLC */
		check_length(pinfo, item_value_tree, 2, item_length, "SLC");
		add_item_value_uint16(tvb, item, item_value_tree, hf_sapdiag_item_value, offset, "Field length in characters");

	/* Another unknown item */
	} else {
		/* If the preference is set, report the item as unknown in the expert info */
		if (global_sapdiag_highlight_items){
			expert_add_info_format(pinfo, item, &ei_sapdiag_item_unknown, "The Diag Item has a unknown type that is not dissected (0x%.2x, 0x%.2x, 0x%.2x)", item_type, item_id, item_sid);
		}
	}
}

static const char *
get_appl_string(guint8 item_id, guint8 item_sid){
	const char *item_name_string = NULL;

	switch (item_id){
		case 0x01:{   /* SCRIPT */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_script_vals, "Unknown");
			break;
		} case 0x02:{ /* GRAPH */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_graph_vals, "Unknown");
			break;
		} case 0x03:{ /* IXOS */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_ixos_vals, "Unknown");
			break;
		} case 0x04:{ /* ST_USER */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_st_user_vals, "Unknown");
			break;
		} case 0x05:{ /* DYNN */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_dynn_vals, "Unknown");
			break;
		} case 0x06:{ /* ST_R3INFO */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_st_r3info_vals, "Unknown");
			break;
		} case 0x07:{ /* POPU */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_popu_vals, "Unknown");
			break;
		} case 0x08:{ /* RFC_TR */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_rfc_tr_vals, "Unknown");
			break;
		} case 0x09:{ /* DYNT */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_dynt_vals, "Unknown");
			break;
		} case 0x0a:{ /* CONTAINER */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_container_vals, "Unknown");
			break;
		} case 0x0b:{ /* MNUENTRY */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_mnuentry_vals, "Unknown");
			break;
		} case 0x0c:{ /* VARINFO */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_varinfo_vals, "Unknown");
			break;
		} case 0x0e:{ /* CONTROL */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_control_vals, "Unknown");
			break;
		} case 0x0f:{ /* UI_EVENT */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_ui_event_vals, "Unknown");
			break;
		} case 0x12:{ /* ACC_LIST */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_acc_list_vals, "Unknown");
			break;
		} case 0x13:{ /* RCUI */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_rcui_vals, "Unknown");
			break;
		} case 0x14:{ /* GUI_PACKET */
	                item_name_string = val_to_str_const(item_sid, sapdiag_item_appl_gui_packet_vals, "Unknown");
			break;
		}
	}
	return (item_name_string);
}

static void
dissect_sapdiag_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *parent_tree, guint32 offset){
	gint item_value_remaining_length;
	guint8 item_type, item_long, item_id, item_sid;
	guint32 item_length, item_value_length;
	const char *item_name_string = NULL;

	proto_item *item = NULL, *il = NULL, *item_value = NULL;
	proto_tree *item_tree, *item_value_tree;

	while (tvb_offset_exists(tvb, offset)){
		item_id = item_sid = item_length = item_value_length = item_long = 0;

		/* Add the item subtree. We start with a item's length of 1, as we don't have yet the real size of the item */
		item = proto_tree_add_item(tree, hf_sapdiag_item, tvb, offset, 1, ENC_NA);
		item_tree = proto_item_add_subtree(item, ett_sapdiag);

		/* Get the item type */
		item_type = tvb_get_guint8(tvb, offset);
		proto_tree_add_item(item_tree, hf_sapdiag_item_type, tvb, offset, 1, ENC_BIG_ENDIAN);
		offset++;
		item_length++;
		proto_item_append_text(item, ": %s", val_to_str_const(item_type, sapdiag_item_type_vals, "Unknown"));

		switch (item_type){
			case 0x01:{ /* SES */
				item_value_length = 16;
				break;
			}
			case 0x02:{ /* ICO */
				item_value_length = 20;
				break;
			}
			case 0x03:{ /* TIT */
				item_value_length = 3;
				break;
			}
			case 0x07:{ /* DiagMessage (old format) */
				item_value_length = 76;
				break;
			}
			case 0x08:{ /* OCK */
				/* If the preference is set, report the item as partially dissected in the expert info */
				if (global_sapdiag_highlight_items){
					expert_add_info_format(pinfo, item, &ei_sapdiag_item_unknown_length, "Diag Type of unknown length (0x%.2x)", item_type);
				}
				break;
			}
			case 0x09:{ /* CHL */
				item_value_length = 22;
				break;
			}
			case 0x0a:{ /* SFE */
				item_value_length = 3;
				break;
			}
			case 0x0b:{ /* SBA */
				item_value_length = 2;
				break;
			}
			case 0x0C:{ /* EOM End of message */
				break;
			}
			case 0x11:{ /* Data Stream */
				item_long = 4;
				break;
			}
			case 0x13:{ /* SLC */
				item_value_length = 2;
				break;
			}
			case 0x15:{ /* SBA2 XXX: Find the actual length */
				item_value_length = 36;
				break;
			}
			case 0x10:  /* APPL */
			case 0x12:{ /* APPL4 */
				/* Get the APPL(4) ID */
				item_id = tvb_get_guint8(tvb, offset);
				proto_item_append_text(item, ", %s", val_to_str_const(item_id, sapdiag_item_id_vals, "Unknown"));
				proto_tree_add_item(item_tree, hf_sapdiag_item_id, tvb, offset, 1, ENC_BIG_ENDIAN);
				offset++;
				item_length++;

				/* Get the APPL item sid value and set the respective name string according to them XXX: Change this for a multi array */
				item_sid = tvb_get_guint8(tvb, offset);
				item_name_string = get_appl_string(item_id, item_sid);

				proto_item_append_text(item, ", %s", item_name_string);
				proto_tree_add_uint_format_value(item_tree, hf_sapdiag_item_sid, tvb, offset, 1, item_sid, "%s (0x%.2x)", item_name_string, item_sid);
				offset++;
				item_length++;

				if (item_type==0x10) {
					item_long = 2;
				} else if (item_type==0x12) {
					item_long = 4;
				}

				break;
			}
		}

		/* Get the item length (word o dword) */
		if (item_long == 2){
			item_value_length = tvb_get_ntohs(tvb, offset);
			il = proto_tree_add_item(item_tree, hf_sapdiag_item_length_short, tvb, offset, 2, ENC_BIG_ENDIAN);
			offset += 2;
			item_length += 2;
		} else if (item_long == 4){
			item_value_length = tvb_get_ntohl(tvb, offset);
			il = proto_tree_add_item(item_tree, hf_sapdiag_item_length_long, tvb, offset, 4, ENC_BIG_ENDIAN);
			offset += 4;
			item_length += 4;
		}

		/* Add the item length */
		proto_item_append_text(item, ", Len=%d", item_value_length);

		/* Now we have the real length of the item, set the proper size */
		item_length += item_value_length;
		proto_item_set_len(item, item_length);

		/* Add the item value */
		if (item_value_length > 0){
			/* Check if the item length is valid */
			item_value_remaining_length = tvb_reported_length_remaining(tvb, offset);
			if (item_value_remaining_length < 0){
				expert_add_info(pinfo, il, &ei_sapdiag_item_offset_invalid);
				return;
			}
			if ((guint32)item_value_remaining_length < item_value_length){
				expert_add_info(pinfo, il, &ei_sapdiag_item_length_invalid);
				item_value_length = (guint32)item_value_remaining_length;
			}
			item_value = proto_tree_add_item(item_tree, hf_sapdiag_item_value, tvb, offset, item_value_length, ENC_NA);
			item_value_tree = proto_item_add_subtree(item_value, ett_sapdiag);
			dissect_sapdiag_item(tvb, pinfo, item, item_value_tree, parent_tree, offset, item_type, item_id, item_sid, item_value_length);
			offset+= item_value_length;
		}
	}
}

static int
check_sapdiag_dp(tvbuff_t *tvb, guint32 offset)
{
	/* Since there's no SAP Diag mode 0xff, if the first byte is a 0xFF the
	 * packet probably holds an initialization DP Header */
	if ((tvb_reported_length_remaining(tvb, offset) >= 200 + 8) && tvb_get_guint8(tvb, offset) == 0xFF){
		return (TRUE);
	}
	return (FALSE);
}

static int
check_sapdiag_compression(tvbuff_t *tvb, guint32 offset)
{
	/* We check for the length, the algorithm value and the presence of magic bytes */
	if ((tvb_reported_length_remaining(tvb, offset) >= 8) &&
		((tvb_get_guint8(tvb, offset+4) == 0x11) || (tvb_get_guint8(tvb, offset+4) == 0x12)) &&
		(tvb_get_guint16(tvb, offset+5, ENC_LITTLE_ENDIAN) == 0x9d1f)){
		return (TRUE);
	}
	return (FALSE);
}

static void
dissect_sapdiag_compressed_payload(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *sapdiag, guint32 offset)
{
	guint32 reported_length = 0;
	proto_item *compression_header = NULL;
	proto_tree *compression_header_tree = NULL;

	/* Add the compression header subtree */
	compression_header = proto_tree_add_item(tree, hf_sapdiag_compress_header, tvb, offset, 8, ENC_NA);
	compression_header_tree = proto_item_add_subtree(compression_header, ett_sapdiag);

	/* Add the uncompressed length */
	reported_length = tvb_get_letohl(tvb, offset);
	proto_tree_add_uint(compression_header_tree, hf_sapdiag_uncomplength, tvb, offset, 4, reported_length);
	offset+=4;
	proto_item_append_text(sapdiag, ", Uncompressed Len: %u", reported_length);
	col_append_fstr(pinfo->cinfo, COL_INFO, " Uncompressed Length=%u ", reported_length);

	/* Add the algorithm */
	proto_tree_add_item(compression_header_tree, hf_sapdiag_algorithm, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;
	/* Add the magic bytes */
	proto_tree_add_item(compression_header_tree, hf_sapdiag_magic, tvb, offset, 2, ENC_BIG_ENDIAN);
	offset+=2;
	/* Add the max bits */
	proto_tree_add_item(compression_header_tree, hf_sapdiag_special, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	/* TODO: Decompression is not yet enabled until the LZC/LZH library is added
	 * Here we just add the payload subtree
	 */
	proto_tree_add_item(tree, hf_sapdiag_payload, tvb, offset, -1, ENC_NA);
}


static void
dissect_sapdiag_snc_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sapdiag_tree, proto_tree *tree, guint32 offset){

	tvbuff_t *next_tvb = NULL;
	proto_item *payload = NULL;
	proto_tree *payload_tree = NULL;

	/* Call the SNC dissector */
	if (global_sapdiag_snc_dissection == TRUE){
		next_tvb = dissect_sapsnc_frame(tvb, pinfo, tree, offset);

		/* If the SNC dissection returned a new tvb, we've a payload to dissect */
		if (next_tvb != NULL) {

		/* Add a new data source for the unwrapped data. From now on, the offset is relative
		to the new tvb so its zero. */
			add_new_data_source(pinfo, next_tvb, "SNC unwrapped Data");

			/* Add the payload subtree using the new tvb*/
			payload = proto_tree_add_item(sapdiag_tree, hf_sapdiag_payload, next_tvb, 0, -1, ENC_NA);
			payload_tree = proto_item_add_subtree(payload, ett_sapdiag);

			if (check_sapdiag_compression(next_tvb, 0)) {
				dissect_sapdiag_compressed_payload(next_tvb, pinfo, payload_tree, payload, 0);
			} else {
				dissect_sapdiag_payload(next_tvb, pinfo, payload_tree, payload, 0);
			}
		}
	}
}

static int
dissect_sapdiag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
	guint8 compress = 0, error_no = 0;
	guint32 offset = 0;
	proto_item *sapdiag = NULL, *header = NULL, *com_flag = NULL, *payload = NULL;
	proto_tree *sapdiag_tree = NULL, *header_tree = NULL, *com_flag_tree = NULL, *payload_tree = NULL;

	/* Add the protocol to the column */
	col_add_str(pinfo->cinfo, COL_PROTOCOL, "SAPDIAG");
	/* Clear out stuff in the info column */
	col_clear(pinfo->cinfo,COL_INFO);

	/* Add the main SAPDiag subtree */
	sapdiag = proto_tree_add_item(tree, proto_sapdiag, tvb, 0, -1, ENC_NA);
	sapdiag_tree = proto_item_add_subtree(sapdiag, ett_sapdiag);

	/* Check if the packet holds a DP Header */
	if (check_sapdiag_dp(tvb, offset)){
		dissect_sapdiag_dp(tvb, sapdiag_tree, offset); offset+= 200;
	}

	/* Check for fixed error messages */
	if (tvb_strneql(tvb, 0, "**DPTMMSG**\x00", 12) == 0){
		proto_tree_add_item(sapdiag_tree, hf_sapdiag_payload, tvb, offset, -1, ENC_NA);
		return offset;
	} else if (tvb_strneql(tvb, 0, "**DPTMOPC**\x00", 12) == 0){
		proto_tree_add_item(sapdiag_tree, hf_sapdiag_payload, tvb, offset, -1, ENC_NA);
		return offset;
	}

	/* Add the header subtree */
	header = proto_tree_add_item(sapdiag_tree, hf_sapdiag_header, tvb, offset, 8, ENC_NA);
	header_tree = proto_item_add_subtree(header, ett_sapdiag);

	/* Add the fields */
	proto_tree_add_item(header_tree, hf_sapdiag_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	com_flag = proto_tree_add_item(header_tree, hf_sapdiag_com_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
	com_flag_tree = proto_item_add_subtree(com_flag, ett_sapdiag);
	proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_EOS, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_EOC, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_NOP, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_EOP, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_INI, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_CAS, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_NNM, tvb, offset, 1, ENC_BIG_ENDIAN);
	proto_tree_add_item(com_flag_tree, hf_sapdiag_com_flag_TERM_GRA, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	proto_tree_add_item(header_tree, hf_sapdiag_mode_stat, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	error_no = tvb_get_guint8(tvb, offset);
	proto_tree_add_item(header_tree, hf_sapdiag_err_no, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;
	proto_tree_add_item(header_tree, hf_sapdiag_msg_type, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;
	proto_tree_add_item(header_tree, hf_sapdiag_msg_info, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;
	proto_tree_add_item(header_tree, hf_sapdiag_msg_rc, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	compress = tvb_get_guint8(tvb, offset);
	proto_tree_add_item(header_tree, hf_sapdiag_compress, tvb, offset, 1, ENC_BIG_ENDIAN);
	offset++;

	/* Check for error messages */
	if ((error_no != 0x00) && (tvb_reported_length_remaining(tvb, offset) > 0)){
		gchar *error_message = NULL;
		guint32 error_message_length = 0;

		error_message_length = (guint32)tvb_reported_length_remaining(tvb, offset) - 1;
		error_message = (gchar *)tvb_get_string_enc(pinfo->pool, tvb, offset, error_message_length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
		proto_tree_add_string(sapdiag_tree, hf_sapdiag_error_message, tvb, offset, error_message_length, error_message);

	/* If the message is compressed */
	} else if ((compress == 0x01) && (tvb_reported_length_remaining(tvb, offset) >= 8)){

		/* Dissect the compressed payload */
		dissect_sapdiag_compressed_payload(tvb, pinfo, sapdiag_tree, sapdiag, offset);

	/* Message wrapped with SNC */
	} else if (((compress == 0x02) || (compress == 0x03)) && (tvb_reported_length_remaining(tvb, offset) > 0)){

		/* Call the SNC dissector */
		dissect_sapdiag_snc_frame(tvb, pinfo, sapdiag_tree, tree, offset);

	/* Uncompressed payload */
	} else {
		/* Check the payload length */
		if (tvb_reported_length_remaining(tvb, offset) > 0){
			/* Add the payload subtree */
			payload = proto_tree_add_item(sapdiag_tree, hf_sapdiag_payload, tvb, offset, -1, ENC_NA);
			payload_tree = proto_item_add_subtree(payload, ett_sapdiag);

			/* Dissect the payload */
			dissect_sapdiag_payload(tvb, pinfo, payload_tree, tree, offset);
		}
	}

	return offset;
}

void
proto_register_sapdiag(void)
{
	static hf_register_info hf[] = {
		{ &hf_sapdiag_dp,
			{ "DP Header", "sapdiag.dp", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_header,
			{ "Header", "sapdiag.header", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_payload,
			{ "Message", "sapdiag.message", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_mode,
			{ "Mode", "sapdiag.header.mode", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_com_flag,
			{ "Com Flag", "sapdiag.header.comflag", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_com_flag_TERM_EOS,
			{ "Com Flag TERM_EOS", "sapdiag.header.comflag.TERM_EOS", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_EOS, NULL, HFILL }},
		{ &hf_sapdiag_com_flag_TERM_EOC,
			{ "Com Flag TERM_EOC", "sapdiag.header.comflag.TERM_EOC", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_EOC, NULL, HFILL }},
		{ &hf_sapdiag_com_flag_TERM_NOP,
			{ "Com Flag TERM_NOP", "sapdiag.header.comflag.TERM_NOP", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_NOP, NULL, HFILL }},
		{ &hf_sapdiag_com_flag_TERM_EOP,
			{ "Com Flag TERM_EOP", "sapdiag.header.comflag.TERM_EOP", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_EOP, NULL, HFILL }},
		{ &hf_sapdiag_com_flag_TERM_INI,
			{ "Com Flag TERM_INI", "sapdiag.header.comflag.TERM_INI", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_INI, NULL, HFILL }},
		{ &hf_sapdiag_com_flag_TERM_CAS,
			{ "Com Flag TERM_CAS", "sapdiag.header.comflag.TERM_CAS", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_CAS, NULL, HFILL }},
		{ &hf_sapdiag_com_flag_TERM_NNM,
			{ "Com Flag TERM_NNM", "sapdiag.header.comflag.TERM_NNM", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_NNM, NULL, HFILL }},
		{ &hf_sapdiag_com_flag_TERM_GRA,
			{ "Com Flag TERM_GRA", "sapdiag.header.comflag.TERM_GRA", FT_BOOLEAN, 8, NULL, SAPDIAG_COM_FLAG_TERM_GRA, NULL, HFILL }},

		{ &hf_sapdiag_mode_stat,
			{ "Mode Stat", "sapdiag.header.modestat", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_err_no,
			{ "Error Number", "sapdiag.header.errorno", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_msg_type,
			{ "Message Type", "sapdiag.header.msgtype", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_msg_info,
			{ "Message Info", "sapdiag.header.msginfo", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_msg_rc,
			{ "Message Rc", "sapdiag.header.msgrc", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_compress,
			{ "Compress", "sapdiag.header.compress", FT_UINT8, BASE_HEX, VALS(sapdiag_compress_vals), 0x0, NULL, HFILL }},

		/* Error Messages */
		{ &hf_sapdiag_error_message,
			{ "Error Message", "sapdiag.error_message", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},

		/* Compression header */
		{ &hf_sapdiag_compress_header,
			{ "Compression Header", "sapdiag.header.compression", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_uncomplength,
			{ "Uncompressed Length", "sapdiag.header.compression.uncomplength", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_algorithm,
			{ "Compression Algorithm", "sapdiag.header.compression.algorithm", FT_UINT8, BASE_HEX, VALS(sapdiag_algorithm_vals), 0x0, NULL, HFILL }},
		{ &hf_sapdiag_magic,
			{ "Magic Bytes", "sapdiag.header.compression.magic", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_special,
			{ "Special", "sapdiag.header.compression.special", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},

		/* SAPDiag Messages */
		{ &hf_sapdiag_item,
			{ "Item", "sapdiag.item", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_type,
			{ "Type", "sapdiag.item.type", FT_UINT8, BASE_HEX, VALS(sapdiag_item_type_vals), 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_id,
			{ "ID", "sapdiag.item.id", FT_UINT8, BASE_HEX, VALS(sapdiag_item_id_vals), 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_sid,
			{ "SID", "sapdiag.item.sid", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_length_short,
			{ "Length", "sapdiag.item.length_short", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_length_long,
			{ "Length", "sapdiag.item.length_long", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_value,
			{ "Value", "sapdiag.item.value", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
		/* SAPDiag DP Header */
		{ &hf_sapdiag_dp_request_id,
			{ "Request ID", "sapdiag.dp.reqid", FT_INT32, BASE_DEC, VALS(sapdiag_dp_request_id_vals), 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_retcode,
			{ "Retcode", "sapdiag.dp.retcode", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_sender_id,
			{ "Sender ID", "sapdiag.dp.senderid", FT_UINT8, BASE_HEX, VALS(sapdiag_dp_sender_id_vals), 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_action_type,
			{ "Action type", "sapdiag.dp.actiontype", FT_UINT8, BASE_HEX, VALS(sapdiag_dp_action_type_vals), 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info,
			{ "Request Info", "sapdiag.dp.reqinfo", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }},
		/* Request Info Flag */
		{ &hf_sapdiag_dp_req_info_LOGIN,
			{ "Login Flag", "sapdiag.dp.reqinfo.login", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_LOGIN, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_LOGOFF,
			{ "Logoff Flag", "sapdiag.dp.reqinfo.logoff", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_LOGOFF, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_SHUTDOWN,
			{ "Shutdown Flag", "sapdiag.dp.reqinfo.shutdown", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_SHUTDOWN, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_GRAPHIC_TM,
			{ "Graphic TM Flag", "sapdiag.dp.reqinfo.graphictm", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_GRAPHIC_TM, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_ALPHA_TM,
			{ "Alpha TM Flag", "sapdiag.dp.reqinfo.alphatm", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_ALPHA_TM, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_ERROR_FROM_APPC,
			{ "Error from APPC Flag", "sapdiag.dp.reqinfo.errorfromappc", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_ERROR_FROM_APPC, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_CANCELMODE,
			{ "Cancel Mode Flag", "sapdiag.dp.reqinfo.cancelmode", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_CANCELMODE, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_MSG_WITH_REQ_BUF,
			{ "Msg with Req Buf Flag", "sapdiag.dp.reqinfo.msg_with_req_buf", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_MSG_WITH_REQ_BUF, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_MSG_WITH_OH,
			{ "Msg with OH Flag", "sapdiag.dp.reqinfo.msg_with_oh", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_MSG_WITH_OH, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_BUFFER_REFRESH,
			{ "Buffer Refresh Flag", "sapdiag.dp.reqinfo.buffer_refresh", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_BUFFER_REFRESH, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_BTC_SCHEDULER,
			{ "BTC Scheduler Flag", "sapdiag.dp.reqinfo.btc_scheduler", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_BTC_SCHEDULER, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_APPC_SERVER_DOWN,
			{ "APPC Server Down Flag", "sapdiag.dp.reqinfo.appc_server_down", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_APPC_SERVER_DOWN, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_MS_ERROR,
			{ "MS Error Flag", "sapdiag.dp.reqinfo.ms_error", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_MS_ERROR, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_SET_SYSTEM_USER,
			{ "Set System User Flag", "sapdiag.dp.reqinfo.set_system_user", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_SET_SYSTEM_USER, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_CANT_HANDLE_REQ,
			{ "DP Can't handle req Flag", "sapdiag.dp.reqinfo.dp_cant_handle_req", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_CANT_HANDLE_REQ, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_AUTO_ABAP,
			{ "DP Auto ABAP Flag", "sapdiag.dp.reqinfo.dp_auto_abap", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_AUTO_ABAP, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_APPL_SERV_INFO,
			{ "DP Appl Serv Info Flag", "sapdiag.dp.reqinfo.dp_appl_serv_info", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_APPL_SERV_INFO, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_ADMIN,
			{ "DP Admin Flag", "sapdiag.dp.reqinfo.dp_admin", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_ADMIN, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_SPOOL_ALRM,
			{ "DP Spool Alrm Flag", "sapdiag.dp.reqinfo.dp_spool_alrm", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_SPOOL_ALRM, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_HAND_SHAKE,
			{ "DP Hand Shake Flag", "sapdiag.dp.reqinfo.dp_hand_shake", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_HAND_SHAKE, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_CANCEL_PRIV,
			{ "DP Cancel Privileges Flag", "sapdiag.dp.reqinfo.dp_cancel_priv", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_CANCEL_PRIV, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_RAISE_TIMEOUT,
			{ "DP Raise Timeout Flag", "sapdiag.dp.reqinfo.dp_raise_timeout", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_RAISE_TIMEOUT, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_NEW_MODE,
			{ "DP New Mode Flag", "sapdiag.dp.reqinfo.dp_new_mode", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_NEW_MODE, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_SOFT_CANCEL,
			{ "DP Soft Cancel Flag", "sapdiag.dp.reqinfo.dp_soft_cancel", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_SOFT_CANCEL, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_TM_INPUT,
			{ "DP TM Input Flag", "sapdiag.dp.reqinfo.dp_tm_input", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_TM_INPUT, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_TM_OUTPUT,
			{ "DP TM Output Flag", "sapdiag.dp.reqinfo.dp_tm_output", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_TM_OUTPUT, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_ASYNC_RFC,
			{ "DP Async RFC Flag", "sapdiag.dp.reqinfo.dp_async_rfc", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_ASYNC_RFC, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_ICM_EVENT,
			{ "DP ICM Event Flag", "sapdiag.dp.reqinfo.dp_icm_event", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_ICM_EVENT, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_AUTO_TH,
			{ "DP Auto TH Flag", "sapdiag.dp.reqinfo.dp_auto_th", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_AUTO_TH, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_RFC_CANCEL,
			{ "DP RFC Cancel Flag", "sapdiag.dp.reqinfo.dp_rfc_cancel", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_RFC_CANCEL, NULL, HFILL }},
		{ &hf_sapdiag_dp_req_info_DP_MS_ADM,
			{ "DP MS Adm Flag", "sapdiag.dp.reqinfo.dp_ms_adm", FT_BOOLEAN, 8, NULL, SAPDIAG_DP_REQ_INFO_DP_MS_ADM, NULL, HFILL }},
		{ &hf_sapdiag_dp_tid,
			{ "TID", "sapdiag.dp.tid", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_uid,
			{ "UID", "sapdiag.dp.uid", FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_mode,
			{ "Mode", "sapdiag.dp.mode", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_wp_id,
			{ "WP Id", "sapdiag.dp.wpid", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_wp_ca_blk,
			{ "WP Ca Blk", "sapdiag.dp.wpcablk", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_appc_ca_blk,
			{ "APPC Ca Blk", "sapdiag.dp.appccablk", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_len,
			{ "Len", "sapdiag.dp.len", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_new_stat,
			{ "New Stat", "sapdiag.dp.newstat", FT_UINT8, BASE_HEX, VALS(sapdiag_dp_new_stat_vals), 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_rq_id,
			{ "Request ID", "sapdiag.dp.rqid", FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_dp_terminal,
			{ "Terminal", "sapdiag.dp.terminal", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},

		/* SAP Diag Support Bits */
		{ &hf_SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR,
			{ "Support Bit PROGRESS_INDICATOR", "sapdiag.diag.supportbits.PROGRESS_INDICATOR", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PROGRESS_INDICATOR, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS,
			{ "Support Bit SAPGUI_LABELS", "sapdiag.diag.supportbits.SAPGUI_LABELS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_LABELS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION,
			{ "Support Bit SAPGUI_DIAGVERSION", "sapdiag.diag.supportbits.SAPGUI_DIAGVERSION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_DIAGVERSION, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT,
			{ "Support Bit SAPGUI_SELECT_RECT", "sapdiag.diag.supportbits.SAPGUI_SELECT_RECT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_SELECT_RECT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT,
			{ "Support Bit SAPGUI_SYMBOL_RIGHT", "sapdiag.diag.supportbits.SAPGUI_SYMBOL_RIGHT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_SYMBOL_RIGHT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC,
			{ "Support Bit SAPGUI_FONT_METRIC", "sapdiag.diag.supportbits.SAPGUI_FONT_METRIC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_FONT_METRIC, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED,
			{ "Support Bit SAPGUI_COMPR_ENHANCED", "sapdiag.diag.supportbits.SAPGUI_COMPR_ENHANCED", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_COMPR_ENHANCED, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE,
			{ "Support Bit SAPGUI_IMODE", "sapdiag.diag.supportbits.SAPGUI_IMODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_IMODE, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE,
			{ "Support Bit SAPGUI_LONG_MESSAGE", "sapdiag.diag.supportbits.SAPGUI_LONG_MESSAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_LONG_MESSAGE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE,
			{ "Support Bit SAPGUI_TABLE", "sapdiag.diag.supportbits.SAPGUI_TABLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_TABLE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1,
			{ "Support Bit SAPGUI_FOCUS_1", "sapdiag.diag.supportbits.SAPGUI_FOCUS_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_FOCUS_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1,
			{ "Support Bit SAPGUI_PUSHBUTTON_1", "sapdiag.diag.supportbits.SAPGUI_PUSHBUTTON_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_PUSHBUTTON_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UPPERCASE,
			{ "Support Bit UPPERCASE", "sapdiag.diag.supportbits.UPPERCASE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UPPERCASE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY,
			{ "Support Bit SAPGUI_TABPROPERTY", "sapdiag.diag.supportbits.SAPGUI_TABPROPERTY", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAPGUI_TABPROPERTY, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE,
			{ "Support Bit INPUT_UPPERCASE", "sapdiag.diag.supportbits.INPUT_UPPERCASE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_INPUT_UPPERCASE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_RFC_DIALOG,
			{ "Support Bit RFC_DIALOG", "sapdiag.diag.supportbits.RFC_DIALOG", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_DIALOG, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT,
			{ "Support Bit LIST_HOTSPOT", "sapdiag.diag.supportbits.LIST_HOTSPOT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_LIST_HOTSPOT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_FKEY_TABLE,
			{ "Support Bit FKEY_TABLE", "sapdiag.diag.supportbits.FKEY_TABLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FKEY_TABLE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT,
			{ "Support Bit MENU_SHORTCUT", "sapdiag.diag.supportbits.MENU_SHORTCUT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MENU_SHORTCUT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_STOP_TRANS,
			{ "Support Bit STOP_TRANS", "sapdiag.diag.supportbits.STOP_TRANS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_STOP_TRANS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_FULL_MENU,
			{ "Support Bit FULL_MENU", "sapdiag.diag.supportbits.FULL_MENU", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FULL_MENU, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES,
			{ "Support Bit OBJECT_NAMES", "sapdiag.diag.supportbits.OBJECT_NAMES", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_OBJECT_NAMES, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE,
			{ "Support Bit CONTAINER_TYPE", "sapdiag.diag.supportbits.CONTAINER_TYPE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTAINER_TYPE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DLGH_FLAGS,
			{ "Support Bit DLGH_FLAGS", "sapdiag.diag.supportbits.DLGH_FLAGS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DLGH_FLAGS, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_APPL_MNU,
			{ "Support Bit APPL_MNU", "sapdiag.diag.supportbits.APPL_MNU", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_APPL_MNU, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO,
			{ "Support Bit MESSAGE_INFO", "sapdiag.diag.supportbits.MESSAGE_INFO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_INFO, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1,
			{ "Support Bit MESDUM_FLAG1", "sapdiag.diag.supportbits.MESDUM_FLAG1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESDUM_FLAG1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB,
			{ "Support Bit TABSEL_ATTRIB", "sapdiag.diag.supportbits.TABSEL_ATTRIB", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUIAPI,
			{ "Support Bit GUIAPI", "sapdiag.diag.supportbits.GUIAPI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUIAPI, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NOGRAPH,
			{ "Support Bit NOGRAPH", "sapdiag.diag.supportbits.NOGRAPH", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOGRAPH, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NOMESSAGES,
			{ "Support Bit NOMESSAGES", "sapdiag.diag.supportbits.NOMESSAGES", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOMESSAGES, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NORABAX,
			{ "Support Bit NORABAX", "sapdiag.diag.supportbits.NORABAX", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NORABAX, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_NOSYSMSG,
			{ "Support Bit NOSYSMSG", "sapdiag.diag.supportbits.NOSYSMSG", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOSYSMSG, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT,
			{ "Support Bit NOSAPSCRIPT", "sapdiag.diag.supportbits.NOSAPSCRIPT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOSAPSCRIPT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NORFC,
			{ "Support Bit NORFC", "sapdiag.diag.supportbits.NORFC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NORFC, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT,
			{ "Support Bit NEW_BSD_JUSTRIGHT", "sapdiag.diag.supportbits.NEW_BSD_JUSTRIGHT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NEW_BSD_JUSTRIGHT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_VARS,
			{ "Support Bit MESSAGE_VARS", "sapdiag.diag.supportbits.MESSAGE_VARS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_VARS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_OCX_SUPPORT,
			{ "Support Bit OCX_SUPPORT", "sapdiag.diag.supportbits.OCX_SUPPORT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_OCX_SUPPORT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SCROLL_INFOS,
			{ "Support Bit SCROLL_INFOS", "sapdiag.diag.supportbits.SCROLL_INFOS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SCROLL_INFOS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK,
			{ "Support Bit TABLE_SIZE_OK", "sapdiag.diag.supportbits.TABLE_SIZE_OK", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABLE_SIZE_OK, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2,
			{ "Support Bit MESSAGE_INFO2", "sapdiag.diag.supportbits.MESSAGE_INFO2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_INFO2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE,
			{ "Support Bit VARINFO_OKCODE", "sapdiag.diag.supportbits.VARINFO_OKCODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_OKCODE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CURR_TCODE,
			{ "Support Bit CURR_TCODE", "sapdiag.diag.supportbits.CURR_TCODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CURR_TCODE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONN_WSIZE,
			{ "Support Bit CONN_WSIZE", "sapdiag.diag.supportbits.CONN_WSIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONN_WSIZE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2,
			{ "Support Bit PUSHBUTTON_2", "sapdiag.diag.supportbits.PUSHBUTTON_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PUSHBUTTON_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TABSTRIP,
			{ "Support Bit TABSTRIP", "sapdiag.diag.supportbits.TABSTRIP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABSTRIP, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_1,
			{ "Support Bit UNKNOWN_1", "sapdiag.diag.supportbits.UNKNOWN_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNKNOWN_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS,
			{ "Support Bit TABSCROLL_INFOS", "sapdiag.diag.supportbits.TABSCROLL_INFOS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABSCROLL_INFOS, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES,
			{ "Support Bit TABLE_FIELD_NAMES", "sapdiag.diag.supportbits.TABLE_FIELD_NAMES", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABLE_FIELD_NAMES, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST,
			{ "Support Bit NEW_MODE_REQUEST", "sapdiag.diag.supportbits.NEW_MODE_REQUEST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NEW_MODE_REQUEST, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER,
			{ "Support Bit RFCBLOB_DIAG_PARSER", "sapdiag.diag.supportbits.RFCBLOB_DIAG_PARSER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFCBLOB_DIAG_PARSER, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER,
			{ "Support Bit MULTI_LOGIN_USER", "sapdiag.diag.supportbits.MULTI_LOGIN_USER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MULTI_LOGIN_USER, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER,
			{ "Support Bit CONTROL_CONTAINER", "sapdiag.diag.supportbits.CONTROL_CONTAINER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTROL_CONTAINER, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED,
			{ "Support Bit APPTOOLBAR_FIXED", "sapdiag.diag.supportbits.APPTOOLBAR_FIXED", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_APPTOOLBAR_FIXED, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED,
			{ "Support Bit R3INFO_USER_CHECKED", "sapdiag.diag.supportbits.R3INFO_USER_CHECKED", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_USER_CHECKED, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO,
			{ "Support Bit NEED_STDDYNPRO", "sapdiag.diag.supportbits.NEED_STDDYNPRO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NEED_STDDYNPRO, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_TYPE_SERVER,
			{ "Support Bit TYPE_SERVER", "sapdiag.diag.supportbits.TYPE_SERVER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TYPE_SERVER, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_COMBOBOX,
			{ "Support Bit COMBOBOX", "sapdiag.diag.supportbits.COMBOBOX", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_COMBOBOX, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED,
			{ "Support Bit INPUT_REQUIRED", "sapdiag.diag.supportbits.INPUT_REQUIRED", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_INPUT_REQUIRED, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE,
			{ "Support Bit ISO_LANGUAGE", "sapdiag.diag.supportbits.ISO_LANGUAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ISO_LANGUAGE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE,
			{ "Support Bit COMBOBOX_TABLE", "sapdiag.diag.supportbits.COMBOBOX_TABLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_COMBOBOX_TABLE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS,
			{ "Support Bit R3INFO_FLAGS", "sapdiag.diag.supportbits.R3INFO_FLAGS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS,
			{ "Support Bit CHECKRADIO_EVENTS", "sapdiag.diag.supportbits.CHECKRADIO_EVENTS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CHECKRADIO_EVENTS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_USERID,
			{ "Support Bit R3INFO_USERID", "sapdiag.diag.supportbits.R3INFO_USERID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_USERID, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT,
			{ "Support Bit R3INFO_ROLLCOUNT", "sapdiag.diag.supportbits.R3INFO_ROLLCOUNT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_ROLLCOUNT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_USER_TURNTIME2,
			{ "Support Bit USER_TURNTIME2", "sapdiag.diag.supportbits.USER_TURNTIME2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_USER_TURNTIME2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NUM_FIELD,
			{ "Support Bit NUM_FIELD", "sapdiag.diag.supportbits.NUM_FIELD", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NUM_FIELD, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_WIN16,
			{ "Support Bit WIN16", "sapdiag.diag.supportbits.WIN16", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WIN16, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONTEXT_MENU,
			{ "Support Bit CONTEXT_MENU", "sapdiag.diag.supportbits.CONTEXT_MENU", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTEXT_MENU, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE,
			{ "Support Bit SCROLLABLE_TABSTRIP_PAGE", "sapdiag.diag.supportbits.SCROLLABLE_TABSTRIP_PAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SCROLLABLE_TABSTRIP_PAGE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION,
			{ "Support Bit EVENT_DESCRIPTION", "sapdiag.diag.supportbits.EVENT_DESCRIPTION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_LABEL_OWNER,
			{ "Support Bit LABEL_OWNER", "sapdiag.diag.supportbits.LABEL_OWNER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_LABEL_OWNER, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD,
			{ "Support Bit CLICKABLE_FIELD", "sapdiag.diag.supportbits.CLICKABLE_FIELD", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CLICKABLE_FIELD, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_PROPERTY_BAG,
			{ "Support Bit PROPERTY_BAG", "sapdiag.diag.supportbits.PROPERTY_BAG", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PROPERTY_BAG, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UNUSED_1,
			{ "Support Bit UNUSED_1", "sapdiag.diag.supportbits.UNUSED_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2,
			{ "Support Bit TABLE_ROW_REFERENCES_2", "sapdiag.diag.supportbits.TABLE_ROW_REFERENCES_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABLE_ROW_REFERENCES_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_PROPFONT_VALID,
			{ "Support Bit PROPFONT_VALID", "sapdiag.diag.supportbits.PROPFONT_VALID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PROPFONT_VALID, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER,
			{ "Support Bit VARINFO_CONTAINER", "sapdiag.diag.supportbits.VARINFO_CONTAINER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID,
			{ "Support Bit R3INFO_IMODEUUID", "sapdiag.diag.supportbits.R3INFO_IMODEUUID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_IMODEUUID, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NOTGUI,
			{ "Support Bit NOTGUI", "sapdiag.diag.supportbits.NOTGUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOTGUI, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_WAN,
			{ "Support Bit WAN", "sapdiag.diag.supportbits.WAN", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WAN, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_XML_BLOBS,
			{ "Support Bit XML_BLOBS", "sapdiag.diag.supportbits.XML_BLOBS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XML_BLOBS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_RFC_QUEUE,
			{ "Support Bit RFC_QUEUE", "sapdiag.diag.supportbits.RFC_QUEUE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_QUEUE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_RFC_COMPRESS,
			{ "Support Bit RFC_COMPRESS", "sapdiag.diag.supportbits.RFC_COMPRESS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_COMPRESS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_JAVA_BEANS,
			{ "Support Bit JAVA_BEANS", "sapdiag.diag.supportbits.JAVA_BEANS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_JAVA_BEANS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND,
			{ "Support Bit DPLOADONDEMAND", "sapdiag.diag.supportbits.DPLOADONDEMAND", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE,
			{ "Support Bit CTL_PROPCACHE", "sapdiag.diag.supportbits.CTL_PROPCACHE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CTL_PROPCACHE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID,
			{ "Support Bit ENJOY_IMODEUUID", "sapdiag.diag.supportbits.ENJOY_IMODEUUID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB,
			{ "Support Bit RFC_ASYNC_BLOB", "sapdiag.diag.supportbits.RFC_ASYNC_BLOB", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_ASYNC_BLOB, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS,
			{ "Support Bit KEEP_SCROLLPOS", "sapdiag.diag.supportbits.KEEP_SCROLLPOS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_KEEP_SCROLLPOS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UNUSED_2,
			{ "Support Bit UNUSED_2", "sapdiag.diag.supportbits.UNUSED_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UNUSED_3,
			{ "Support Bit UNUSED_3", "sapdiag.diag.supportbits.UNUSED_3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_3, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_XML_PROPERTIES,
			{ "Support Bit XML_PROPERTIES", "sapdiag.diag.supportbits.XML_PROPERTIES", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XML_PROPERTIES, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UNUSED_4,
			{ "Support Bit UNUSED_4", "sapdiag.diag.supportbits.UNUSED_4", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_4, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_HEX_FIELD,
			{ "Support Bit HEX_FIELD", "sapdiag.diag.supportbits.HEX_FIELD", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_HEX_FIELD, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_HAS_CACHE,
			{ "Support Bit HAS_CACHE", "sapdiag.diag.supportbits.HAS_CACHE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_HAS_CACHE, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE,
			{ "Support Bit XML_PROP_TABLE", "sapdiag.diag.supportbits.XML_PROP_TABLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UNUSED_5,
			{ "Support Bit UNUSED_5", "sapdiag.diag.supportbits.UNUSED_5", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_5, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2,
			{ "Support Bit ENJOY_IMODEUUID2", "sapdiag.diag.supportbits.ENJOY_IMODEUUID2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ITS,
			{ "Support Bit ITS", "sapdiag.diag.supportbits.ITS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ITS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NO_EASYACCESS,
			{ "Support Bit NO_EASYACCESS", "sapdiag.diag.supportbits.NO_EASYACCESS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NO_EASYACCESS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_PROPERTYPUMP,
			{ "Support Bit PROPERTYPUMP", "sapdiag.diag.supportbits.PROPERTYPUMP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PROPERTYPUMP, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_COOKIE,
			{ "Support Bit COOKIE", "sapdiag.diag.supportbits.COOKIE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_COOKIE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UNUSED_6,
			{ "Support Bit UNUSED_6", "sapdiag.diag.supportbits.UNUSED_6", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNUSED_6, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE,
			{ "Support Bit SUPPBIT_AREA_SIZE", "sapdiag.diag.supportbits.SUPPBIT_AREA_SIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SUPPBIT_AREA_SIZE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE,
			{ "Support Bit DPLOADONDEMAND_WRITE", "sapdiag.diag.supportbits.DPLOADONDEMAND_WRITE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DPLOADONDEMAND_WRITE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS,
			{ "Support Bit CONTROL_FOCUS", "sapdiag.diag.supportbits.CONTROL_FOCUS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY,
			{ "Support Bit ENTRY_HISTORY", "sapdiag.diag.supportbits.ENTRY_HISTORY", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENTRY_HISTORY, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE,
			{ "Support Bit AUTO_CODEPAGE", "sapdiag.diag.supportbits.AUTO_CODEPAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AUTO_CODEPAGE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CACHED_VSETS,
			{ "Support Bit CACHED_VSETS", "sapdiag.diag.supportbits.CACHED_VSETS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CACHED_VSETS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR,
			{ "Support Bit EMERGENCY_REPAIR", "sapdiag.diag.supportbits.EMERGENCY_REPAIR", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EMERGENCY_REPAIR, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_AREA2FRONT,
			{ "Support Bit AREA2FRONT", "sapdiag.diag.supportbits.AREA2FRONT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AREA2FRONT, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH,
			{ "Support Bit SCROLLBAR_WIDTH", "sapdiag.diag.supportbits.SCROLLBAR_WIDTH", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SCROLLBAR_WIDTH, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_AUTORESIZE,
			{ "Support Bit AUTORESIZE", "sapdiag.diag.supportbits.AUTORESIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AUTORESIZE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_EDIT_VARLEN,
			{ "Support Bit EDIT_VARLEN", "sapdiag.diag.supportbits.EDIT_VARLEN", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EDIT_VARLEN, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_WORKPLACE,
			{ "Support Bit WORKPLACE", "sapdiag.diag.supportbits.WORKPLACE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WORKPLACE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_PRINTDATA,
			{ "Support Bit PRINTDATA", "sapdiag.diag.supportbits.PRINTDATA", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_PRINTDATA, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_2,
			{ "Support Bit UNKNOWN_2", "sapdiag.diag.supportbits.UNKNOWN_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNKNOWN_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SINGLE_SESSION,
			{ "Support Bit SINGLE_SESSION", "sapdiag.diag.supportbits.SINGLE_SESSION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SINGLE_SESSION, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE,
			{ "Support Bit NOTIFY_NEWMODE", "sapdiag.diag.supportbits.NOTIFY_NEWMODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NOTIFY_NEWMODE, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT,
			{ "Support Bit TOOLBAR_HEIGHT", "sapdiag.diag.supportbits.TOOLBAR_HEIGHT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TOOLBAR_HEIGHT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER,
			{ "Support Bit XMLPROP_CONTAINER", "sapdiag.diag.supportbits.XMLPROP_CONTAINER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XMLPROP_CONTAINER, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO,
			{ "Support Bit XMLPROP_DYNPRO", "sapdiag.diag.supportbits.XMLPROP_DYNPRO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XMLPROP_DYNPRO, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT,
			{ "Support Bit DP_HTTP_PUT", "sapdiag.diag.supportbits.DP_HTTP_PUT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DP_HTTP_PUT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT,
			{ "Support Bit DYNAMIC_PASSPORT", "sapdiag.diag.supportbits.DYNAMIC_PASSPORT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DYNAMIC_PASSPORT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_WEBGUI,
			{ "Support Bit WEBGUI", "sapdiag.diag.supportbits.WEBGUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WEBGUI, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE,
			{ "Support Bit WEBGUI_HELPMODE", "sapdiag.diag.supportbits.WEBGUI_HELPMODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WEBGUI_HELPMODE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST,
			{ "Support Bit CONTROL_FOCUS_ON_LIST", "sapdiag.diag.supportbits.CONTROL_FOCUS_ON_LIST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2,
			{ "Support Bit CBU_RBUDUMMY_2", "sapdiag.diag.supportbits.CBU_RBUDUMMY_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_1,
			{ "Support Bit EOKDUMMY_1", "sapdiag.diag.supportbits.EOKDUMMY_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EOKDUMMY_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING,
			{ "Support Bit GUI_USER_SCRIPTING", "sapdiag.diag.supportbits.GUI_USER_SCRIPTING", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SLC,
			{ "Support Bit SLC", "sapdiag.diag.supportbits.SLC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SLC, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ACCESSIBILITY,
			{ "Support Bit ACCESSIBILITY", "sapdiag.diag.supportbits.ACCESSIBILITY", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ACCESSIBILITY, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ECATT,
			{ "Support Bit ECATT", "sapdiag.diag.supportbits.ECATT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ECATT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3,
			{ "Support Bit ENJOY_IMODEUUID3", "sapdiag.diag.supportbits.ENJOY_IMODEUUID3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENJOY_IMODEUUID3, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF8,
			{ "Support Bit ENABLE_UTF8", "sapdiag.diag.supportbits.ENABLE_UTF8", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENABLE_UTF8, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME,
			{ "Support Bit R3INFO_AUTOLOGOUT_TIME", "sapdiag.diag.supportbits.R3INFO_AUTOLOGOUT_TIME", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_AUTOLOGOUT_TIME, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST,
			{ "Support Bit VARINFO_ICON_TITLE_LIST", "sapdiag.diag.supportbits.VARINFO_ICON_TITLE_LIST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_ICON_TITLE_LIST, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE,
			{ "Support Bit ENABLE_UTF16BE", "sapdiag.diag.supportbits.ENABLE_UTF16BE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENABLE_UTF16BE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE,
			{ "Support Bit ENABLE_UTF16LE", "sapdiag.diag.supportbits.ENABLE_UTF16LE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENABLE_UTF16LE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP,
			{ "Support Bit R3INFO_CODEPAGE_APP", "sapdiag.diag.supportbits.R3INFO_CODEPAGE_APP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ENABLE_APPL4,
			{ "Support Bit ENABLE_APPL4", "sapdiag.diag.supportbits.ENABLE_APPL4", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ENABLE_APPL4, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL,
			{ "Support Bit GUIPATCHLEVEL", "sapdiag.diag.supportbits.GUIPATCHLEVEL", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE,
			{ "Support Bit CBURBU_NEW_STATE", "sapdiag.diag.supportbits.CBURBU_NEW_STATE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CBURBU_NEW_STATE, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_BINARY_EVENTID,
			{ "Support Bit BINARY_EVENTID", "sapdiag.diag.supportbits.BINARY_EVENTID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_BINARY_EVENTID, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUI_THEME,
			{ "Support Bit GUI_THEME", "sapdiag.diag.supportbits.GUI_THEME", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_THEME, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TOP_WINDOW,
			{ "Support Bit TOP_WINDOW", "sapdiag.diag.supportbits.TOP_WINDOW", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TOP_WINDOW, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1,
			{ "Support Bit EVENT_DESCRIPTION_1", "sapdiag.diag.supportbits.EVENT_DESCRIPTION_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EVENT_DESCRIPTION_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SPLITTER,
			{ "Support Bit SPLITTER", "sapdiag.diag.supportbits.SPLITTER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SPLITTER, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY,
			{ "Support Bit VALUE_4_HISTORY", "sapdiag.diag.supportbits.VALUE_4_HISTORY", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VALUE_4_HISTORY, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ACC_LIST,
			{ "Support Bit ACC_LIST", "sapdiag.diag.supportbits.ACC_LIST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ACC_LIST, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO,
			{ "Support Bit GUI_USER_SCRIPTING_INFO", "sapdiag.diag.supportbits.GUI_USER_SCRIPTING_INFO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_USER_SCRIPTING_INFO, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM,
			{ "Support Bit TEXTEDIT_STREAM", "sapdiag.diag.supportbits.TEXTEDIT_STREAM", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TEXTEDIT_STREAM, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS,
			{ "Support Bit DYNT_NOFOCUS", "sapdiag.diag.supportbits.DYNT_NOFOCUS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DYNT_NOFOCUS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1,
			{ "Support Bit R3INFO_CODEPAGE_APP_1", "sapdiag.diag.supportbits.R3INFO_CODEPAGE_APP_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_CODEPAGE_APP_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_FRAME_1,
			{ "Support Bit FRAME_1", "sapdiag.diag.supportbits.FRAME_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FRAME_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TICKET4GUI,
			{ "Support Bit TICKET4GUI", "sapdiag.diag.supportbits.TICKET4GUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TICKET4GUI, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS,
			{ "Support Bit ACC_LIST_PROPS", "sapdiag.diag.supportbits.ACC_LIST_PROPS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ACC_LIST_PROPS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT,
			{ "Support Bit TABSEL_ATTRIB_INPUT", "sapdiag.diag.supportbits.TABSEL_ATTRIB_INPUT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABSEL_ATTRIB_INPUT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP,
			{ "Support Bit DEFAULT_TOOLTIP", "sapdiag.diag.supportbits.DEFAULT_TOOLTIP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DEFAULT_TOOLTIP, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2,
			{ "Support Bit XML_PROP_TABLE_2", "sapdiag.diag.supportbits.XML_PROP_TABLE_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XML_PROP_TABLE_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3,
			{ "Support Bit CBU_RBUDUMMY_3", "sapdiag.diag.supportbits.CBU_RBUDUMMY_3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CBU_RBUDUMMY_3, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CELLINFO,
			{ "Support Bit CELLINFO", "sapdiag.diag.supportbits.CELLINFO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CELLINFO, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2,
			{ "Support Bit CONTROL_FOCUS_ON_LIST_2", "sapdiag.diag.supportbits.CONTROL_FOCUS_ON_LIST_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTROL_FOCUS_ON_LIST_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT,
			{ "Support Bit TABLE_COLUMNWIDTH_INPUT", "sapdiag.diag.supportbits.TABLE_COLUMNWIDTH_INPUT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TABLE_COLUMNWIDTH_INPUT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ITS_PLUGIN,
			{ "Support Bit ITS_PLUGIN", "sapdiag.diag.supportbits.ITS_PLUGIN", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ITS_PLUGIN, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS,
			{ "Support Bit OBJECT_NAMES_4_LOGIN_PROCESS", "sapdiag.diag.supportbits.OBJECT_NAMES_4_LOGIN_PROCESS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_4_LOGIN_PROCESS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI,
			{ "Support Bit RFC_SERVER_4_GUI", "sapdiag.diag.supportbits.RFC_SERVER_4_GUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RFC_SERVER_4_GUI, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2,
			{ "Support Bit R3INFO_FLAGS_2", "sapdiag.diag.supportbits.R3INFO_FLAGS_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_FLAGS_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_RCUI,
			{ "Support Bit RCUI", "sapdiag.diag.supportbits.RCUI", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_RCUI, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE,
			{ "Support Bit MENUENTRY_WITH_FCODE", "sapdiag.diag.supportbits.MENUENTRY_WITH_FCODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MENUENTRY_WITH_FCODE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE,
			{ "Support Bit WEBSAPCONSOLE", "sapdiag.diag.supportbits.WEBSAPCONSOLE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_WEBSAPCONSOLE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION,
			{ "Support Bit R3INFO_KERNEL_VERSION", "sapdiag.diag.supportbits.R3INFO_KERNEL_VERSION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_R3INFO_KERNEL_VERSION, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP,
			{ "Support Bit VARINFO_CONTAINER_LOOP", "sapdiag.diag.supportbits.VARINFO_CONTAINER_LOOP", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_LOOP, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_EOKDUMMY_2,
			{ "Support Bit EOKDUMMY_2", "sapdiag.diag.supportbits.EOKDUMMY_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EOKDUMMY_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3,
			{ "Support Bit MESSAGE_INFO3", "sapdiag.diag.supportbits.MESSAGE_INFO3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_INFO3, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_SBA2,
			{ "Support Bit SBA2", "sapdiag.diag.supportbits.SBA2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SBA2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE,
			{ "Support Bit MAINAREA_SIZE", "sapdiag.diag.supportbits.MAINAREA_SIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MAINAREA_SIZE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2,
			{ "Support Bit GUIPATCHLEVEL_2", "sapdiag.diag.supportbits.GUIPATCHLEVEL_2", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUIPATCHLEVEL_2, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE,
			{ "Support Bit DISPLAY_SIZE", "sapdiag.diag.supportbits.DISPLAY_SIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DISPLAY_SIZE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUI_PACKET,
			{ "Support Bit GUI_PACKET", "sapdiag.diag.supportbits.GUI_PACKET", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_PACKET, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER,
			{ "Support Bit DIALOG_STEP_NUMBER", "sapdiag.diag.supportbits.DIALOG_STEP_NUMBER", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DIALOG_STEP_NUMBER, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION,
			{ "Support Bit TC_KEEP_SCROLL_POSITION", "sapdiag.diag.supportbits.TC_KEEP_SCROLL_POSITION", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TC_KEEP_SCROLL_POSITION, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST,
			{ "Support Bit MESSAGE_SERVICE_REQUEST", "sapdiag.diag.supportbits.MESSAGE_SERVICE_REQUEST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESSAGE_SERVICE_REQUEST, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME,
			{ "Support Bit DYNT_FOCUS_FRAME", "sapdiag.diag.supportbits.DYNT_FOCUS_FRAME", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_DYNT_FOCUS_FRAME, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN,
			{ "Support Bit MAX_STRING_LEN", "sapdiag.diag.supportbits.MAX_STRING_LEN", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MAX_STRING_LEN, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1,
			{ "Support Bit VARINFO_CONTAINER_1", "sapdiag.diag.supportbits.VARINFO_CONTAINER_1", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_VARINFO_CONTAINER_1, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS,
			{ "Support Bit STD_TOOLBAR_ITEMS", "sapdiag.diag.supportbits.STD_TOOLBAR_ITEMS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_STD_TOOLBAR_ITEMS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO,
			{ "Support Bit XMLPROP_LIST_DYNPRO", "sapdiag.diag.supportbits.XMLPROP_LIST_DYNPRO", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_XMLPROP_LIST_DYNPRO, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT,
			{ "Support Bit TRACE_GUI_CONNECT", "sapdiag.diag.supportbits.TRACE_GUI_CONNECT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_TRACE_GUI_CONNECT, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH,
			{ "Support Bit LIST_FULLWIDTH", "sapdiag.diag.supportbits.LIST_FULLWIDTH", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_LIST_FULLWIDTH, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT,
			{ "Support Bit ALLWAYS_SEND_CLIENT", "sapdiag.diag.supportbits.ALLWAYS_SEND_CLIENT", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_ALLWAYS_SEND_CLIENT, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_UNKNOWN_3,
			{ "Support Bit UNKNOWN_3", "sapdiag.diag.supportbits.UNKNOWN_3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_UNKNOWN_3, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR,
			{ "Support Bit GUI_SIGNATURE_COLOR", "sapdiag.diag.supportbits.GUI_SIGNATURE_COLOR", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_SIGNATURE_COLOR, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MAX_WSIZE,
			{ "Support Bit MAX_WSIZE", "sapdiag.diag.supportbits.MAX_WSIZE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MAX_WSIZE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_SAP_PERSONAS,
			{ "Support Bit SAP_PERSONAS", "sapdiag.diag.supportbits.SAP_PERSONAS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_SAP_PERSONAS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_IDA_ALV,
			{ "Support Bit IDA_ALV", "sapdiag.diag.supportbits.IDA_ALV", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_IDA_ALV, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS,
			{ "Support Bit IDA_ALV_FRAGMENTS", "sapdiag.diag.supportbits.IDA_ALV_FRAGMENTS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_IDA_ALV_FRAGMENTS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_AMC,
			{ "Support Bit AMC", "sapdiag.diag.supportbits.AMC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AMC, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC,
			{ "Support Bit EXTMODE_FONT_METRIC", "sapdiag.diag.supportbits.EXTMODE_FONT_METRIC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_EXTMODE_FONT_METRIC, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_GROUPBOX,
			{ "Support Bit GROUPBOX", "sapdiag.diag.supportbits.GROUPBOX", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GROUPBOX, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON,
			{ "Support Bit AGI_ID_TS_BUTTON", "sapdiag.diag.supportbits.AGI_ID_TS_BUTTON", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AGI_ID_TS_BUTTON, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST,
			{ "Support Bit NO_FOCUS_ON_LIST", "sapdiag.diag.supportbits.NO_FOCUS_ON_LIST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NO_FOCUS_ON_LIST, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_FIORI_MODE,
			{ "Support Bit FIORI_MODE", "sapdiag.diag.supportbits.FIORI_MODE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FIORI_MODE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE,
			{ "Support Bit CONNECT_CHECK_DONE", "sapdiag.diag.supportbits.CONNECT_CHECK_DONE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONNECT_CHECK_DONE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE,
			{ "Support Bit MSGINFO_WITH_CODEPAGE", "sapdiag.diag.supportbits.MSGINFO_WITH_CODEPAGE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MSGINFO_WITH_CODEPAGE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_AGI_ID,
			{ "Support Bit AGI_ID", "sapdiag.diag.supportbits.AGI_ID", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AGI_ID, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_AGI_ID_TC,
			{ "Support Bit AGI_ID_TC", "sapdiag.diag.supportbits.AGI_ID_TC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_AGI_ID_TC, NULL, HFILL }},

		{ &hf_SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS,
			{ "Support Bit FIORI_TOOLBARS", "sapdiag.diag.supportbits.FIORI_TOOLBARS", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_FIORI_TOOLBARS, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE,
			{ "Support Bit OBJECT_NAMES_ENFORCE", "sapdiag.diag.supportbits.OBJECT_NAMES_ENFORCE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_OBJECT_NAMES_ENFORCE, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3,
			{ "Support Bit MESDUMMY_FLAGS_2_3", "sapdiag.diag.supportbits.MESDUMMY_FLAGS_2_3", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_MESDUMMY_FLAGS_2_3, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_NWBC,
			{ "Support Bit NWBC", "sapdiag.diag.supportbits.NWBC", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_NWBC, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_CONTAINER_LIST,
			{ "Support Bit CONTAINER_LIST", "sapdiag.diag.supportbits.CONTAINER_LIST", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_CONTAINER_LIST, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR,
			{ "Support Bit GUI_SYSTEM_COLOR", "sapdiag.diag.supportbits.GUI_SYSTEM_COLOR", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GUI_SYSTEM_COLOR, NULL, HFILL }},
		{ &hf_SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE,
			{ "Support Bit GROUPBOX_WITHOUT_BOTTOMLINE", "sapdiag.diag.supportbits.GROUPBOX_WITHOUT_BOTTOMLINE", FT_BOOLEAN, 8, NULL, SAPDIAG_SUPPORT_BIT_GROUPBOX_WITHOUT_BOTTOMLINE, NULL, HFILL }},

		/* Dynt Atom */
		{ &hf_sapdiag_item_dynt_atom,
			{ "Dynt Atom", "sapdiag.item.value.dyntatom", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item,
			{ "Dynt Atom Item", "sapdiag.item.value.dyntatom.item", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_etype,
			{ "Dynt Atom Item Type", "sapdiag.item.value.dyntatom.item.type", FT_UINT8, BASE_DEC, VALS(sapdiag_item_dynt_atom_item_etype_vals), 0x0, NULL, HFILL }},

		/* Dynt Atom Attribute Flags */
		{ &hf_sapdiag_item_dynt_atom_item_attr,
			{ "Dynt Atom Item Attributes", "sapdiag.item.value.dyntatom.item.attr", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_COMBOSTYLE,
			{ "Dynt Atom Item Attribute Combo Style", "sapdiag.item.value.dyntatom.item.attr.COMBOSTYLE", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_COMBOSTYLE, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_YES3D,
			{ "Dynt Atom Item Attribute Yes3D", "sapdiag.item.value.dyntatom.item.attr.YES3D", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_YES3D, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROPFONT,
			{ "Dynt Atom Item Attribute Prop Font", "sapdiag.item.value.dyntatom.item.attr.PROPFONT", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_PROPFONT, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_MATCHCODE,
			{ "Dynt Atom Item Attribute Match Code", "sapdiag.item.value.dyntatom.item.attr.MATCHCODE", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_MATCHCODE, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_JUSTRIGHT,
			{ "Dynt Atom Item Attribute Just Right", "sapdiag.item.value.dyntatom.item.attr.JUSTRIGHT", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_JUSTRIGHT, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INTENSIFY,
			{ "Dynt Atom Item Attribute Intensify", "sapdiag.item.value.dyntatom.item.attr.INTENSIFY", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_INTENSIFY, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_INVISIBLE,
			{ "Dynt Atom Item Attribute Invisible", "sapdiag.item.value.dyntatom.item.attr.INVISIBLE", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_INVISIBLE, NULL, HFILL }},
		{ &hf_sapdiag_item_dynt_atom_item_attr_DIAG_BSD_PROTECTED,
			{ "Dynt Atom Item Attribute Protected", "sapdiag.item.value.dyntatom.item.attr.PROTECTED", FT_BOOLEAN, 8, NULL, SAPDIAG_ATOM_ATTR_DIAG_BSD_PROTECTED, NULL, HFILL }},

		/* Control Properties fields */
		{ &hf_sapdiag_item_control_properties_id,
			{ "Control Properties ID", "sapdiag.item.value.controlproperties.id", FT_UINT16, BASE_HEX, VALS(sapdiag_item_control_properties_id_vals), 0x0, NULL, HFILL }},
		{ &hf_sapdiag_item_control_properties_value,
			{ "Control Properties Value", "sapdiag.item.value.controlproperties.value", FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }},

		/* UI Event Source fields */
		{ &ht_sapdiag_item_ui_event_event_type,
			{ "UI Event Source Type", "sapdiag.item.value.uievent.type", FT_UINT16, BASE_DEC, VALS(sapdiag_item_ui_event_event_type_vals), 0x0, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_control_type,
			{ "UI Event Control Type", "sapdiag.item.value.uievent.control", FT_UINT16, BASE_DEC, VALS(sapdiag_item_ui_event_control_type_vals), 0x0, NULL, HFILL }},

		{ &ht_sapdiag_item_ui_event_valid,
			{ "UI Event Valid", "sapdiag.item.value.uievent.valid", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_valid_MENU_POS,
			{ "UI Event Valid Menu Pos", "sapdiag.item.value.uievent.valid.MENU_POS", FT_BOOLEAN, 8, NULL, SAPDIAG_UI_EVENT_VALID_FLAG_MENU_POS, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_valid_CONTROL_POS,
			{ "UI Event Valid Control Pos", "sapdiag.item.value.uievent.valid.CONTROL_POS", FT_BOOLEAN, 8, NULL, SAPDIAG_UI_EVENT_VALID_FLAG_CONTROL_POS, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_valid_NAVIGATION_DATA,
			{ "UI Event Valid Navigation Data", "sapdiag.item.value.uievent.valid.NAVIGATION_DATA", FT_BOOLEAN, 8, NULL, SAPDIAG_UI_EVENT_VALID_FLAG_NAVIGATION_DATA, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_valid_FUNCTIONKEY_DATA,
			{ "UI Event Valid Function Key Data", "sapdiag.item.value.uievent.valid.FUNCTIONKEY_DATA", FT_BOOLEAN, 8, NULL, SAPDIAG_UI_EVENT_VALID_FLAG_FUNCTIONKEY_DATA, NULL, HFILL }},

		{ &ht_sapdiag_item_ui_event_control_row,
			{ "UI Event Source Control Row", "sapdiag.item.value.uievent.controlrow", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_control_col,
			{ "UI Event Source Control Column", "sapdiag.item.value.uievent.controlcol", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_navigation_data,
			{ "UI Event Source Navigation Data", "sapdiag.item.value.uievent.navigationdata", FT_UINT32, BASE_DEC, VALS(sapdiag_item_ui_event_navigation_data_vals), 0x0, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_data,
			{ "UI Event Source Data", "sapdiag.item.value.uievent.data", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_container_nrs,
			{ "UI Event Source Container IDs Numbers", "sapdiag.item.value.uievent.containernrs", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
		{ &ht_sapdiag_item_ui_event_container,
			{ "UI Event Source Container ID", "sapdiag.item.value.uievent.container", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},

		/* Menu Entries */
		{ &hf_sapdiag_item_menu_entry,
			{ "Menu Entry", "sapdiag.item.value.menu", FT_NONE, BASE_NONE, NULL, 0x0, NULL,
			HFILL }},

	};

	/* Setup protocol subtree array */
	static gint *ett[] = {
		&ett_sapdiag
	};

	/* Register the expert info */
	static ei_register_info ei[] = {
		{ &ei_sapdiag_item_unknown, { "sapdiag.item.unknown", PI_UNDECODED, PI_WARN, "The Diag Item has a unknown type that is not dissected", EXPFILL }},
		{ &ei_sapdiag_item_partial, { "sapdiag.item.unknown", PI_UNDECODED, PI_WARN, "The Diag Item is dissected partially", EXPFILL }},
		{ &ei_sapdiag_item_unknown_length, { "sapdiag.item.length.unknown", PI_UNDECODED, PI_WARN, "Diag Type of unknown length", EXPFILL }},
		{ &ei_sapdiag_item_offset_invalid, { "sapdiag.item.offset.invalid", PI_MALFORMED, PI_ERROR, "Invalid offset", EXPFILL }},
		{ &ei_sapdiag_item_length_invalid, { "sapdiag.item.length.invalid", PI_MALFORMED, PI_WARN, "Item length is invalid", EXPFILL }},
		{ &ei_sapdiag_atom_item_unknown, { "sapdiag.item.value.dyntatom.item.unknown", PI_UNDECODED, PI_WARN, "The Diag Atom has a unknown type that is not dissected", EXPFILL }},
		{ &ei_sapdiag_atom_item_partial, { "sapdiag.item.value.dyntatom.item.unknown", PI_UNDECODED, PI_WARN, "The Diag Atom is dissected partially", EXPFILL }},
		{ &ei_sapdiag_atom_item_malformed, { "sapdiag.item.value.dyntatom.invalid", PI_MALFORMED, PI_WARN, "The Diag Atom is malformed", EXPFILL }},
		{ &ei_sapdiag_dynt_focus_more_cont_ids, { "sapdiag.item.value.uievent.containernrs.invalid", PI_MALFORMED, PI_WARN, "Number of Container IDs is invalid", EXPFILL }},
		{ &ei_sapdiag_password_field, { "sapdiag.item.value.dyntatom.item.password", PI_SECURITY, PI_WARN, "Password field?", EXPFILL }},
	};

	module_t *sapdiag_module;
	expert_module_t* sapdiag_expert;

	/* Register the protocol */
	proto_sapdiag = proto_register_protocol("SAP Diag Protocol", "SAPDIAG", "sapdiag");

	proto_register_field_array(proto_sapdiag, hf, array_length(hf));
	proto_register_subtree_array(ett, array_length(ett));

	sapdiag_expert = expert_register_protocol(proto_sapdiag);
	expert_register_field_array(sapdiag_expert, ei, array_length(ei));

	register_dissector("sapdiag", dissect_sapdiag, proto_sapdiag);

	/* Register the preferences */
	sapdiag_module = prefs_register_protocol(proto_sapdiag, proto_reg_handoff_sapdiag);

	range_convert_str(wmem_epan_scope(), &global_sapdiag_port_range, SAPDIAG_PORT_RANGE, MAX_TCP_PORT);
	prefs_register_range_preference(sapdiag_module, "tcp_ports", "SAP Diag Protocol TCP port numbers", "Port numbers used for SAP Diag Protocol (default " SAPDIAG_PORT_RANGE ")", &global_sapdiag_port_range, MAX_TCP_PORT);

	prefs_register_bool_preference(sapdiag_module, "rfc_dissection", "Dissect embedded SAP RFC calls", "Whether the SAP Diag Protocol dissector should call the SAP RFC dissector for embedded RFC calls", &global_sapdiag_rfc_dissection);

	prefs_register_bool_preference(sapdiag_module, "snc_dissection", "Dissect SAP SNC frames", "Whether the SAP Diag Protocol dissector should call the SAP SNC dissector for SNC frames", &global_sapdiag_snc_dissection);

	prefs_register_bool_preference(sapdiag_module, "highlight_unknown_items", "Highlight unknown SAP Diag Items", "Whether the SAP Diag Protocol dissector should highlight unknown SAP Diag item (might be noise and generate a lot of expert warnings)", &global_sapdiag_highlight_items);

}

/**
 * Helpers for dealing with the port range
 */
static void range_delete_callback (guint32 port, gpointer ptr _U_)
{
	dissector_delete_uint("sapni.port", port, sapdiag_handle);
}

static void range_add_callback (guint32 port, gpointer ptr _U_)
{
	dissector_add_uint("sapni.port", port, sapdiag_handle);
}

/**
 * Register Hand off for the SAP Diag Protocol
 */
void
proto_reg_handoff_sapdiag(void)
{
	static range_t *sapdiag_port_range;
	static gboolean initialized = FALSE;

	if (!initialized) {
		sapdiag_handle = create_dissector_handle(dissect_sapdiag, proto_sapdiag);
		initialized = TRUE;
	} else {
		range_foreach(sapdiag_port_range, range_delete_callback, NULL);
		wmem_free(wmem_epan_scope(), sapdiag_port_range);
	}

	sapdiag_port_range = range_copy(wmem_epan_scope(), global_sapdiag_port_range);
	range_foreach(sapdiag_port_range, range_add_callback, NULL);
}

/*
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
 *
 * Local variables:
 * c-basic-offset: 8
 * tab-width: 8
 * indent-tabs-mode: t
 * End:
 *
 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
 * :indentSize=8:tabSize=8:noTabs=false:
 */
