/* Microsoft Reference Implementation for TPM 2.0
 *
 *  The copyright in this software is being made available under the BSD License,
 *  included below. This software may be subject to other third party and
 *  contributor rights, including patent rights, and no such rights are granted
 *  under this license.
 *
 *  Copyright (c) Microsoft Corporation
 *
 *  All rights reserved.
 *
 *  BSD License
 *
 *  Redistribution and use in source and binary forms, with or without modification,
 *  are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice, this list
 *  of conditions and the following disclaimer.
 *
 *  Redistributions in binary form must reproduce the above copyright notice, this
 *  list of conditions and the following disclaimer in the documentation and/or
 *  other materials provided with the distribution.
 *
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS""
 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
 *  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/*(Auto-generated)
 *  Created by NewMarshal; Version 1.4 Apr 7, 2019
 *  Date: Mar  6, 2020  Time: 01:50:10PM
 */

#ifndef _TABLE_MARSHAL_TYPES_H_
#define _TABLE_MARSHAL_TYPES_H_

typedef UINT16 marshalIndex_t;

//*** Structure Entries
// A structure contains a list of elements to unmarshal. Each of the entries is a
// UINT16. The structure descriptor is:

// The 'values' array contains indicators for the things to marshal. The 'elements'
// parameter indicates how many different entities are unmarshaled. This number
// nominally corresponds to the number of rows in the Part 2 table that describes
// the structure (the number of rows minus the title row and any error code rows).

// A schematic of a simple structure entry is shown here but the values are not
// actually in a structure. As shown, the third value is the offset in the structure
// where the value is placed when unmarshaled, or fetched from when marshaling. This
// is sufficient when the element type indicated by 'index' is always a simple type
// and never a union or array.This is just shown for illustrative purposes.
typedef struct simpleStructureEntry_t
{
    UINT16 qualifiers;     // indicates the type of entry (array, union
                           // etc.)
    marshalIndex_t index;  // the index into the appropriate array of
                           //  the descriptor of this type
    UINT16 offset;         // where this comes from or is placed
} simpleStructureEntry_t;

typedef const struct UintMarshal_mst
{
    UINT8 marshalType;  // UINT_MTYPE
    UINT8 modifiers;    // size and signed indicator.
} UintMarshal_mst;

typedef struct UnionMarshal_mst
{
    UINT8  countOfselectors;
    UINT8  modifiers;  // NULL_SELECTOR
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[1];
    //    UINT16          marshalingTypes[1]; // This is not part of the prototypical
    //    entry. It is here to show where the
    //    marshaling types will be in a union
} UnionMarshal_mst;

typedef struct NullUnionMarshal_mst
{
    UINT8 count;
} NullUnionMarshal_mst;

typedef struct MarshalHeader_mst
{
    UINT8 marshalType;  // VALUES_MTYPE
    UINT8 modifiers;
    UINT8 errorCode;
} MarshalHeader_mst;

typedef const struct ArrayMarshal_mst  // used in a structure
{
    marshalIndex_t type;
    UINT16         stride;
} ArrayMarshal_mst;

typedef const struct StructMarshal_mst
{
    UINT8  marshalType;  // STRUCTURE_MTYPE
    UINT8  elements;
    UINT16 values[1];  // three times elements
} StructMarshal_mst;

typedef const struct ValuesMarshal_mst
{
    UINT8  marshalType;  // VALUES_MTYPE
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[1];
} ValuesMarshal_mst;

typedef const struct TableMarshal_mst
{
    UINT8  marshalType;  // TABLE_MTYPE
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  singles;
    UINT32 values[1];
} TableMarshal_mst;

typedef const struct MinMaxMarshal_mst
{
    UINT8  marshalType;  // MIN_MAX_MTYPE
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} MinMaxMarshal_mst;

typedef const struct Tpm2bMarshal_mst
{
    UINT8  unmarshalType;  // TPM2B_MTYPE
    UINT16 sizeIndex;      // reference to type for this size value
} Tpm2bMarshal_mst;

typedef const struct Tpm2bsMarshal_mst
{
    UINT8  unmarshalType;  // TPM2BS_MTYPE
    UINT8  modifiers;      // size= and offset (2 - 7)
    UINT16 sizeIndex;      // index of the size value;
    UINT16 dataIndex;      // the structure
} Tpm2bsMarshal_mst;

typedef const struct ListMarshal_mst
{
    UINT8  unmarshalType;  // LIST_MTYPE (for TPML)
    UINT8  modifiers;      // size offset 2-7
    UINT16 sizeIndex;      // reference to the minmax structure that
                           //      unmarshals the size parameter
    UINT16 arrayRef;       // reference to an array definition (type
                           //  and stride)
} ListMarshal_mst;

typedef const struct AttributesMarshal_mst
{
    UINT8  unmarashalType;  // ATTRIBUTE_MTYPE
    UINT8  modifiers;       // size (ONE_BYTES, TWO_BYTES, or FOUR_BYTES
    UINT32 attributeMask;   // the values that must be zero.
} AttributesMarshal_mst;

typedef const struct CompositeMarshal_mst
{
    UINT8          unmashalType;  // COMPOSITE_MTYPE
    UINT8          modifiers;     // number of entries and size
    marshalIndex_t types[1];      // array of unmarshaling types
} CompositeMarshal_mst;

typedef const struct TPM_ECC_CURVE_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPM_ECC_CURVE_mst;

typedef const struct TPM_CLOCK_ADJUST_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} TPM_CLOCK_ADJUST_mst;

typedef const struct TPM_EO_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} TPM_EO_mst;

typedef const struct TPM_SU_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[2];
} TPM_SU_mst;

typedef const struct TPM_SE_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[3];
} TPM_SE_mst;

typedef const struct TPM_CAP_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[3];
} TPM_CAP_mst;

typedef const struct TPMI_YES_NO_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[2];
} TPMI_YES_NO_mst;

typedef const struct TPMI_DH_OBJECT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[5];
} TPMI_DH_OBJECT_mst;

typedef const struct TPMI_DH_PARENT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[8];
} TPMI_DH_PARENT_mst;

typedef const struct TPMI_DH_PERSISTENT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} TPMI_DH_PERSISTENT_mst;

typedef const struct TPMI_DH_ENTITY_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[15];
} TPMI_DH_ENTITY_mst;

typedef const struct TPMI_DH_PCR_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[3];
} TPMI_DH_PCR_mst;

typedef const struct TPMI_SH_AUTH_SESSION_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[5];
} TPMI_SH_AUTH_SESSION_mst;

typedef const struct TPMI_SH_HMAC_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} TPMI_SH_HMAC_mst;

typedef const struct TPMI_SH_POLICY_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} TPMI_SH_POLICY_mst;

typedef const struct TPMI_DH_CONTEXT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[6];
} TPMI_DH_CONTEXT_mst;

typedef const struct TPMI_DH_SAVED_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[7];
} TPMI_DH_SAVED_mst;

typedef const struct TPMI_RH_HIERARCHY_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[4];
} TPMI_RH_HIERARCHY_mst;

typedef const struct TPMI_RH_ENABLES_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[5];
} TPMI_RH_ENABLES_mst;

typedef const struct TPMI_RH_HIERARCHY_AUTH_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[4];
} TPMI_RH_HIERARCHY_AUTH_mst;

typedef const struct TPMI_RH_HIERARCHY_POLICY_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[6];
} TPMI_RH_HIERARCHY_POLICY_mst;

typedef const struct TPMI_RH_PLATFORM_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[1];
} TPMI_RH_PLATFORM_mst;

typedef const struct TPMI_RH_OWNER_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[2];
} TPMI_RH_OWNER_mst;

typedef const struct TPMI_RH_ENDORSEMENT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[2];
} TPMI_RH_ENDORSEMENT_mst;

typedef const struct TPMI_RH_PROVISION_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[2];
} TPMI_RH_PROVISION_mst;

typedef const struct TPMI_RH_CLEAR_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[2];
} TPMI_RH_CLEAR_mst;

typedef const struct TPMI_RH_NV_AUTH_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[4];
} TPMI_RH_NV_AUTH_mst;

typedef const struct TPMI_RH_LOCKOUT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[1];
} TPMI_RH_LOCKOUT_mst;

typedef const struct TPMI_RH_NV_INDEX_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} TPMI_RH_NV_INDEX_mst;

typedef const struct TPMI_RH_AC_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} TPMI_RH_AC_mst;

typedef const struct TPMI_RH_ACT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} TPMI_RH_ACT_mst;

typedef const struct TPMI_ALG_HASH_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[5];
} TPMI_ALG_HASH_mst;

typedef const struct TPMI_ALG_ASYM_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[5];
} TPMI_ALG_ASYM_mst;

typedef const struct TPMI_ALG_SYM_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[5];
} TPMI_ALG_SYM_mst;

typedef const struct TPMI_ALG_SYM_OBJECT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[5];
} TPMI_ALG_SYM_OBJECT_mst;

typedef const struct TPMI_ALG_SYM_MODE_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_SYM_MODE_mst;

typedef const struct TPMI_ALG_KDF_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_KDF_mst;

typedef const struct TPMI_ALG_SIG_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_SIG_SCHEME_mst;

typedef const struct TPMI_ECC_KEY_EXCHANGE_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ECC_KEY_EXCHANGE_mst;

typedef const struct TPMI_ST_COMMAND_TAG_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[2];
} TPMI_ST_COMMAND_TAG_mst;

typedef const struct TPMI_ALG_MAC_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[5];
} TPMI_ALG_MAC_SCHEME_mst;

typedef const struct TPMI_ALG_CIPHER_MODE_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_CIPHER_MODE_mst;

typedef const struct TPMS_EMPTY_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[3];
} TPMS_EMPTY_mst;

typedef const struct TPMS_ALGORITHM_DESCRIPTION_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_ALGORITHM_DESCRIPTION_mst;

typedef struct TPMU_HA_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[9];
    UINT16 marshalingTypes[9];
} TPMU_HA_mst;

typedef const struct TPMT_HA_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_HA_mst;

typedef const struct TPMS_PCR_SELECT_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_PCR_SELECT_mst;

typedef const struct TPMS_PCR_SELECTION_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMS_PCR_SELECTION_mst;

typedef const struct TPMT_TK_CREATION_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMT_TK_CREATION_mst;

typedef const struct TPMT_TK_VERIFIED_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMT_TK_VERIFIED_mst;

typedef const struct TPMT_TK_AUTH_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMT_TK_AUTH_mst;

typedef const struct TPMT_TK_HASHCHECK_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMT_TK_HASHCHECK_mst;

typedef const struct TPMS_ALG_PROPERTY_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_ALG_PROPERTY_mst;

typedef const struct TPMS_TAGGED_PROPERTY_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_TAGGED_PROPERTY_mst;

typedef const struct TPMS_TAGGED_PCR_SELECT_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMS_TAGGED_PCR_SELECT_mst;

typedef const struct TPMS_TAGGED_POLICY_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_TAGGED_POLICY_mst;

typedef const struct TPMS_ACT_DATA_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMS_ACT_DATA_mst;

typedef struct TPMU_CAPABILITIES_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[11];
    UINT16 marshalingTypes[11];
} TPMU_CAPABILITIES_mst;

typedef const struct TPMS_CAPABILITY_DATA_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_CAPABILITY_DATA_mst;

typedef const struct TPMS_CLOCK_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[12];
} TPMS_CLOCK_INFO_mst;

typedef const struct TPMS_TIME_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_TIME_INFO_mst;

typedef const struct TPMS_TIME_ATTEST_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_TIME_ATTEST_INFO_mst;

typedef const struct TPMS_CERTIFY_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_CERTIFY_INFO_mst;

typedef const struct TPMS_QUOTE_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_QUOTE_INFO_mst;

typedef const struct TPMS_COMMAND_AUDIT_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[12];
} TPMS_COMMAND_AUDIT_INFO_mst;

typedef const struct TPMS_SESSION_AUDIT_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_SESSION_AUDIT_INFO_mst;

typedef const struct TPMS_CREATION_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_CREATION_INFO_mst;

typedef const struct TPMS_NV_CERTIFY_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMS_NV_CERTIFY_INFO_mst;

typedef const struct TPMS_NV_DIGEST_CERTIFY_INFO_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_NV_DIGEST_CERTIFY_INFO_mst;

typedef const struct TPMI_ST_ATTEST_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  ranges;
    UINT8  singles;
    UINT32 values[3];
} TPMI_ST_ATTEST_mst;

typedef struct TPMU_ATTEST_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[8];
    UINT16 marshalingTypes[8];
} TPMU_ATTEST_mst;

typedef const struct TPMS_ATTEST_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[21];
} TPMS_ATTEST_mst;

typedef const struct TPMS_AUTH_COMMAND_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[12];
} TPMS_AUTH_COMMAND_mst;

typedef const struct TPMS_AUTH_RESPONSE_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMS_AUTH_RESPONSE_mst;

typedef const struct TPMI_TDES_KEY_BITS_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[1];
} TPMI_TDES_KEY_BITS_mst;

typedef const struct TPMI_AES_KEY_BITS_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[3];
} TPMI_AES_KEY_BITS_mst;

typedef const struct TPMI_SM4_KEY_BITS_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[1];
} TPMI_SM4_KEY_BITS_mst;

typedef const struct TPMI_CAMELLIA_KEY_BITS_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[3];
} TPMI_CAMELLIA_KEY_BITS_mst;

typedef struct TPMU_SYM_KEY_BITS_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[6];
    UINT16 marshalingTypes[6];
} TPMU_SYM_KEY_BITS_mst;

typedef struct TPMU_SYM_MODE_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[6];
    UINT16 marshalingTypes[6];
} TPMU_SYM_MODE_mst;

typedef const struct TPMT_SYM_DEF_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMT_SYM_DEF_mst;

typedef const struct TPMT_SYM_DEF_OBJECT_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMT_SYM_DEF_OBJECT_mst;

typedef const struct TPMS_SYMCIPHER_PARMS_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[3];
} TPMS_SYMCIPHER_PARMS_mst;

typedef const struct TPMS_DERIVE_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_DERIVE_mst;

typedef const struct TPMS_SENSITIVE_CREATE_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_SENSITIVE_CREATE_mst;

typedef const struct TPMS_SCHEME_HASH_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[3];
} TPMS_SCHEME_HASH_mst;

typedef const struct TPMS_SCHEME_ECDAA_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_SCHEME_ECDAA_mst;

typedef const struct TPMI_ALG_KEYEDHASH_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_KEYEDHASH_SCHEME_mst;

typedef const struct TPMS_SCHEME_XOR_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_SCHEME_XOR_mst;

typedef struct TPMU_SCHEME_KEYEDHASH_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[3];
    UINT16 marshalingTypes[3];
} TPMU_SCHEME_KEYEDHASH_mst;

typedef const struct TPMT_KEYEDHASH_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_KEYEDHASH_SCHEME_mst;

typedef struct TPMU_SIG_SCHEME_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[8];
    UINT16 marshalingTypes[8];
} TPMU_SIG_SCHEME_mst;

typedef const struct TPMT_SIG_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_SIG_SCHEME_mst;

typedef struct TPMU_KDF_SCHEME_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[5];
    UINT16 marshalingTypes[5];
} TPMU_KDF_SCHEME_mst;

typedef const struct TPMT_KDF_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_KDF_SCHEME_mst;

typedef const struct TPMI_ALG_ASYM_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_ASYM_SCHEME_mst;

typedef struct TPMU_ASYM_SCHEME_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[11];
    UINT16 marshalingTypes[11];
} TPMU_ASYM_SCHEME_mst;

typedef const struct TPMI_ALG_RSA_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_RSA_SCHEME_mst;

typedef const struct TPMT_RSA_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_RSA_SCHEME_mst;

typedef const struct TPMI_ALG_RSA_DECRYPT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_RSA_DECRYPT_mst;

typedef const struct TPMT_RSA_DECRYPT_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_RSA_DECRYPT_mst;

typedef const struct TPMI_RSA_KEY_BITS_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[3];
} TPMI_RSA_KEY_BITS_mst;

typedef const struct TPMS_ECC_POINT_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_ECC_POINT_mst;

typedef const struct TPMI_ALG_ECC_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_ECC_SCHEME_mst;

typedef const struct TPMI_ECC_CURVE_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[3];
} TPMI_ECC_CURVE_mst;

typedef const struct TPMT_ECC_SCHEME_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_ECC_SCHEME_mst;

typedef const struct TPMS_ALGORITHM_DETAIL_ECC_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[33];
} TPMS_ALGORITHM_DETAIL_ECC_mst;

typedef const struct TPMS_SIGNATURE_RSA_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_SIGNATURE_RSA_mst;

typedef const struct TPMS_SIGNATURE_ECC_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[9];
} TPMS_SIGNATURE_ECC_mst;

typedef struct TPMU_SIGNATURE_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[8];
    UINT16 marshalingTypes[8];
} TPMU_SIGNATURE_mst;

typedef const struct TPMT_SIGNATURE_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_SIGNATURE_mst;

typedef struct TPMU_ENCRYPTED_SECRET_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[4];
    UINT16 marshalingTypes[4];
} TPMU_ENCRYPTED_SECRET_mst;

typedef const struct TPMI_ALG_PUBLIC_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[4];
} TPMI_ALG_PUBLIC_mst;

typedef struct TPMU_PUBLIC_ID_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[4];
    UINT16 marshalingTypes[4];
} TPMU_PUBLIC_ID_mst;

typedef const struct TPMS_KEYEDHASH_PARMS_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[3];
} TPMS_KEYEDHASH_PARMS_mst;

typedef const struct TPMS_RSA_PARMS_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[12];
} TPMS_RSA_PARMS_mst;

typedef const struct TPMS_ECC_PARMS_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[12];
} TPMS_ECC_PARMS_mst;

typedef struct TPMU_PUBLIC_PARMS_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[4];
    UINT16 marshalingTypes[4];
} TPMU_PUBLIC_PARMS_mst;

typedef const struct TPMT_PUBLIC_PARMS_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMT_PUBLIC_PARMS_mst;

typedef const struct TPMT_PUBLIC_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[18];
} TPMT_PUBLIC_mst;

typedef struct TPMU_SENSITIVE_COMPOSITE_mst
{
    BYTE   countOfselectors;
    BYTE   modifiers;
    UINT16 offsetOfUnmarshalTypes;
    UINT32 selectors[4];
    UINT16 marshalingTypes[4];
} TPMU_SENSITIVE_COMPOSITE_mst;

typedef const struct TPMT_SENSITIVE_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[12];
} TPMT_SENSITIVE_mst;

typedef const struct TPMS_NV_PIN_COUNTER_PARAMETERS_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_NV_PIN_COUNTER_PARAMETERS_mst;

typedef const struct TPMS_NV_PUBLIC_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[15];
} TPMS_NV_PUBLIC_mst;

typedef const struct TPMS_CONTEXT_DATA_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_CONTEXT_DATA_mst;

typedef const struct TPMS_CONTEXT_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[12];
} TPMS_CONTEXT_mst;

typedef const struct TPMS_CREATION_DATA_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[21];
} TPMS_CREATION_DATA_mst;

typedef const struct TPM_AT_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[4];
} TPM_AT_mst;

typedef const struct TPMS_AC_OUTPUT_mst
{
    UINT8  marshalType;
    UINT8  elements;
    UINT16 values[6];
} TPMS_AC_OUTPUT_mst;

typedef const struct Type02_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type02_mst;

typedef const struct Type03_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type03_mst;

typedef const struct Type04_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type04_mst;

typedef const struct Type06_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type06_mst;

typedef const struct Type08_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type08_mst;

typedef const struct Type10_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[1];
} Type10_mst;

typedef const struct Type11_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[1];
} Type11_mst;

typedef const struct Type12_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[2];
} Type12_mst;

typedef const struct Type13_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT8  entries;
    UINT32 values[1];
} Type13_mst;

typedef const struct Type15_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type15_mst;

typedef const struct Type17_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type17_mst;

typedef const struct Type18_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type18_mst;

typedef const struct Type19_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type19_mst;

typedef const struct Type20_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type20_mst;

typedef const struct Type22_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type22_mst;

typedef const struct Type23_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type23_mst;

typedef const struct Type24_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type24_mst;

typedef const struct Type25_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type25_mst;

typedef const struct Type26_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type26_mst;

typedef const struct Type27_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type27_mst;

typedef const struct Type29_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type29_mst;

typedef const struct Type30_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type30_mst;

typedef const struct Type33_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type33_mst;

typedef const struct Type34_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type34_mst;

typedef const struct Type35_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type35_mst;

typedef const struct Type38_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type38_mst;

typedef const struct Type41_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type41_mst;

typedef const struct Type42_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type42_mst;

typedef const struct Type44_mst
{
    UINT8  marshalType;
    UINT8  modifiers;
    UINT8  errorCode;
    UINT32 values[2];
} Type44_mst;

// This structure combines all the individual marshaling structures to build
// something that can be referenced by offset rather than full address
typedef const struct MarshalData_st
{
    UintMarshal_mst                    UINT8_DATA;
    UintMarshal_mst                    UINT16_DATA;
    UintMarshal_mst                    UINT32_DATA;
    UintMarshal_mst                    UINT64_DATA;
    UintMarshal_mst                    INT8_DATA;
    UintMarshal_mst                    INT16_DATA;
    UintMarshal_mst                    INT32_DATA;
    UintMarshal_mst                    INT64_DATA;
    UintMarshal_mst                    UINT0_DATA;
    TPM_ECC_CURVE_mst                  TPM_ECC_CURVE_DATA;
    TPM_CLOCK_ADJUST_mst               TPM_CLOCK_ADJUST_DATA;
    TPM_EO_mst                         TPM_EO_DATA;
    TPM_SU_mst                         TPM_SU_DATA;
    TPM_SE_mst                         TPM_SE_DATA;
    TPM_CAP_mst                        TPM_CAP_DATA;
    AttributesMarshal_mst              TPMA_ALGORITHM_DATA;
    AttributesMarshal_mst              TPMA_OBJECT_DATA;
    AttributesMarshal_mst              TPMA_SESSION_DATA;
    AttributesMarshal_mst              TPMA_ACT_DATA;
    TPMI_YES_NO_mst                    TPMI_YES_NO_DATA;
    TPMI_DH_OBJECT_mst                 TPMI_DH_OBJECT_DATA;
    TPMI_DH_PARENT_mst                 TPMI_DH_PARENT_DATA;
    TPMI_DH_PERSISTENT_mst             TPMI_DH_PERSISTENT_DATA;
    TPMI_DH_ENTITY_mst                 TPMI_DH_ENTITY_DATA;
    TPMI_DH_PCR_mst                    TPMI_DH_PCR_DATA;
    TPMI_SH_AUTH_SESSION_mst           TPMI_SH_AUTH_SESSION_DATA;
    TPMI_SH_HMAC_mst                   TPMI_SH_HMAC_DATA;
    TPMI_SH_POLICY_mst                 TPMI_SH_POLICY_DATA;
    TPMI_DH_CONTEXT_mst                TPMI_DH_CONTEXT_DATA;
    TPMI_DH_SAVED_mst                  TPMI_DH_SAVED_DATA;
    TPMI_RH_HIERARCHY_mst              TPMI_RH_HIERARCHY_DATA;
    TPMI_RH_ENABLES_mst                TPMI_RH_ENABLES_DATA;
    TPMI_RH_HIERARCHY_AUTH_mst         TPMI_RH_HIERARCHY_AUTH_DATA;
    TPMI_RH_HIERARCHY_POLICY_mst       TPMI_RH_HIERARCHY_POLICY_DATA;
    TPMI_RH_PLATFORM_mst               TPMI_RH_PLATFORM_DATA;
    TPMI_RH_OWNER_mst                  TPMI_RH_OWNER_DATA;
    TPMI_RH_ENDORSEMENT_mst            TPMI_RH_ENDORSEMENT_DATA;
    TPMI_RH_PROVISION_mst              TPMI_RH_PROVISION_DATA;
    TPMI_RH_CLEAR_mst                  TPMI_RH_CLEAR_DATA;
    TPMI_RH_NV_AUTH_mst                TPMI_RH_NV_AUTH_DATA;
    TPMI_RH_LOCKOUT_mst                TPMI_RH_LOCKOUT_DATA;
    TPMI_RH_NV_INDEX_mst               TPMI_RH_NV_INDEX_DATA;
    TPMI_RH_AC_mst                     TPMI_RH_AC_DATA;
    TPMI_RH_ACT_mst                    TPMI_RH_ACT_DATA;
    TPMI_ALG_HASH_mst                  TPMI_ALG_HASH_DATA;
    TPMI_ALG_ASYM_mst                  TPMI_ALG_ASYM_DATA;
    TPMI_ALG_SYM_mst                   TPMI_ALG_SYM_DATA;
    TPMI_ALG_SYM_OBJECT_mst            TPMI_ALG_SYM_OBJECT_DATA;
    TPMI_ALG_SYM_MODE_mst              TPMI_ALG_SYM_MODE_DATA;
    TPMI_ALG_KDF_mst                   TPMI_ALG_KDF_DATA;
    TPMI_ALG_SIG_SCHEME_mst            TPMI_ALG_SIG_SCHEME_DATA;
    TPMI_ECC_KEY_EXCHANGE_mst          TPMI_ECC_KEY_EXCHANGE_DATA;
    TPMI_ST_COMMAND_TAG_mst            TPMI_ST_COMMAND_TAG_DATA;
    TPMI_ALG_MAC_SCHEME_mst            TPMI_ALG_MAC_SCHEME_DATA;
    TPMI_ALG_CIPHER_MODE_mst           TPMI_ALG_CIPHER_MODE_DATA;
    TPMS_EMPTY_mst                     TPMS_EMPTY_DATA;
    TPMS_ALGORITHM_DESCRIPTION_mst     TPMS_ALGORITHM_DESCRIPTION_DATA;
    TPMU_HA_mst                        TPMU_HA_DATA;
    TPMT_HA_mst                        TPMT_HA_DATA;
    Tpm2bMarshal_mst                   TPM2B_DIGEST_DATA;
    Tpm2bMarshal_mst                   TPM2B_DATA_DATA;
    Tpm2bMarshal_mst                   TPM2B_EVENT_DATA;
    Tpm2bMarshal_mst                   TPM2B_MAX_BUFFER_DATA;
    Tpm2bMarshal_mst                   TPM2B_MAX_NV_BUFFER_DATA;
    Tpm2bMarshal_mst                   TPM2B_TIMEOUT_DATA;
    Tpm2bMarshal_mst                   TPM2B_IV_DATA;
    NullUnionMarshal_mst               NULL_UNION_DATA;
    Tpm2bMarshal_mst                   TPM2B_NAME_DATA;
    TPMS_PCR_SELECT_mst                TPMS_PCR_SELECT_DATA;
    TPMS_PCR_SELECTION_mst             TPMS_PCR_SELECTION_DATA;
    TPMT_TK_CREATION_mst               TPMT_TK_CREATION_DATA;
    TPMT_TK_VERIFIED_mst               TPMT_TK_VERIFIED_DATA;
    TPMT_TK_AUTH_mst                   TPMT_TK_AUTH_DATA;
    TPMT_TK_HASHCHECK_mst              TPMT_TK_HASHCHECK_DATA;
    TPMS_ALG_PROPERTY_mst              TPMS_ALG_PROPERTY_DATA;
    TPMS_TAGGED_PROPERTY_mst           TPMS_TAGGED_PROPERTY_DATA;
    TPMS_TAGGED_PCR_SELECT_mst         TPMS_TAGGED_PCR_SELECT_DATA;
    TPMS_TAGGED_POLICY_mst             TPMS_TAGGED_POLICY_DATA;
    TPMS_ACT_DATA_mst                  TPMS_ACT_DATA_DATA;
    ListMarshal_mst                    TPML_CC_DATA;
    ListMarshal_mst                    TPML_CCA_DATA;
    ListMarshal_mst                    TPML_ALG_DATA;
    ListMarshal_mst                    TPML_HANDLE_DATA;
    ListMarshal_mst                    TPML_DIGEST_DATA;
    ListMarshal_mst                    TPML_DIGEST_VALUES_DATA;
    ListMarshal_mst                    TPML_PCR_SELECTION_DATA;
    ListMarshal_mst                    TPML_ALG_PROPERTY_DATA;
    ListMarshal_mst                    TPML_TAGGED_TPM_PROPERTY_DATA;
    ListMarshal_mst                    TPML_TAGGED_PCR_PROPERTY_DATA;
    ListMarshal_mst                    TPML_ECC_CURVE_DATA;
    ListMarshal_mst                    TPML_TAGGED_POLICY_DATA;
    ListMarshal_mst                    TPML_ACT_DATA_DATA;
    TPMU_CAPABILITIES_mst              TPMU_CAPABILITIES_DATA;
    TPMS_CAPABILITY_DATA_mst           TPMS_CAPABILITY_DATA_DATA;
    TPMS_CLOCK_INFO_mst                TPMS_CLOCK_INFO_DATA;
    TPMS_TIME_INFO_mst                 TPMS_TIME_INFO_DATA;
    TPMS_TIME_ATTEST_INFO_mst          TPMS_TIME_ATTEST_INFO_DATA;
    TPMS_CERTIFY_INFO_mst              TPMS_CERTIFY_INFO_DATA;
    TPMS_QUOTE_INFO_mst                TPMS_QUOTE_INFO_DATA;
    TPMS_COMMAND_AUDIT_INFO_mst        TPMS_COMMAND_AUDIT_INFO_DATA;
    TPMS_SESSION_AUDIT_INFO_mst        TPMS_SESSION_AUDIT_INFO_DATA;
    TPMS_CREATION_INFO_mst             TPMS_CREATION_INFO_DATA;
    TPMS_NV_CERTIFY_INFO_mst           TPMS_NV_CERTIFY_INFO_DATA;
    TPMS_NV_DIGEST_CERTIFY_INFO_mst    TPMS_NV_DIGEST_CERTIFY_INFO_DATA;
    TPMI_ST_ATTEST_mst                 TPMI_ST_ATTEST_DATA;
    TPMU_ATTEST_mst                    TPMU_ATTEST_DATA;
    TPMS_ATTEST_mst                    TPMS_ATTEST_DATA;
    Tpm2bMarshal_mst                   TPM2B_ATTEST_DATA;
    TPMS_AUTH_COMMAND_mst              TPMS_AUTH_COMMAND_DATA;
    TPMS_AUTH_RESPONSE_mst             TPMS_AUTH_RESPONSE_DATA;
    TPMI_TDES_KEY_BITS_mst             TPMI_TDES_KEY_BITS_DATA;
    TPMI_AES_KEY_BITS_mst              TPMI_AES_KEY_BITS_DATA;
    TPMI_SM4_KEY_BITS_mst              TPMI_SM4_KEY_BITS_DATA;
    TPMI_CAMELLIA_KEY_BITS_mst         TPMI_CAMELLIA_KEY_BITS_DATA;
    TPMU_SYM_KEY_BITS_mst              TPMU_SYM_KEY_BITS_DATA;
    TPMU_SYM_MODE_mst                  TPMU_SYM_MODE_DATA;
    TPMT_SYM_DEF_mst                   TPMT_SYM_DEF_DATA;
    TPMT_SYM_DEF_OBJECT_mst            TPMT_SYM_DEF_OBJECT_DATA;
    Tpm2bMarshal_mst                   TPM2B_SYM_KEY_DATA;
    TPMS_SYMCIPHER_PARMS_mst           TPMS_SYMCIPHER_PARMS_DATA;
    Tpm2bMarshal_mst                   TPM2B_LABEL_DATA;
    TPMS_DERIVE_mst                    TPMS_DERIVE_DATA;
    Tpm2bMarshal_mst                   TPM2B_DERIVE_DATA;
    Tpm2bMarshal_mst                   TPM2B_SENSITIVE_DATA_DATA;
    TPMS_SENSITIVE_CREATE_mst          TPMS_SENSITIVE_CREATE_DATA;
    Tpm2bsMarshal_mst                  TPM2B_SENSITIVE_CREATE_DATA;
    TPMS_SCHEME_HASH_mst               TPMS_SCHEME_HASH_DATA;
    TPMS_SCHEME_ECDAA_mst              TPMS_SCHEME_ECDAA_DATA;
    TPMI_ALG_KEYEDHASH_SCHEME_mst      TPMI_ALG_KEYEDHASH_SCHEME_DATA;
    TPMS_SCHEME_XOR_mst                TPMS_SCHEME_XOR_DATA;
    TPMU_SCHEME_KEYEDHASH_mst          TPMU_SCHEME_KEYEDHASH_DATA;
    TPMT_KEYEDHASH_SCHEME_mst          TPMT_KEYEDHASH_SCHEME_DATA;
    TPMU_SIG_SCHEME_mst                TPMU_SIG_SCHEME_DATA;
    TPMT_SIG_SCHEME_mst                TPMT_SIG_SCHEME_DATA;
    TPMU_KDF_SCHEME_mst                TPMU_KDF_SCHEME_DATA;
    TPMT_KDF_SCHEME_mst                TPMT_KDF_SCHEME_DATA;
    TPMI_ALG_ASYM_SCHEME_mst           TPMI_ALG_ASYM_SCHEME_DATA;
    TPMU_ASYM_SCHEME_mst               TPMU_ASYM_SCHEME_DATA;
    TPMI_ALG_RSA_SCHEME_mst            TPMI_ALG_RSA_SCHEME_DATA;
    TPMT_RSA_SCHEME_mst                TPMT_RSA_SCHEME_DATA;
    TPMI_ALG_RSA_DECRYPT_mst           TPMI_ALG_RSA_DECRYPT_DATA;
    TPMT_RSA_DECRYPT_mst               TPMT_RSA_DECRYPT_DATA;
    Tpm2bMarshal_mst                   TPM2B_PUBLIC_KEY_RSA_DATA;
    TPMI_RSA_KEY_BITS_mst              TPMI_RSA_KEY_BITS_DATA;
    Tpm2bMarshal_mst                   TPM2B_PRIVATE_KEY_RSA_DATA;
    Tpm2bMarshal_mst                   TPM2B_ECC_PARAMETER_DATA;
    TPMS_ECC_POINT_mst                 TPMS_ECC_POINT_DATA;
    Tpm2bsMarshal_mst                  TPM2B_ECC_POINT_DATA;
    TPMI_ALG_ECC_SCHEME_mst            TPMI_ALG_ECC_SCHEME_DATA;
    TPMI_ECC_CURVE_mst                 TPMI_ECC_CURVE_DATA;
    TPMT_ECC_SCHEME_mst                TPMT_ECC_SCHEME_DATA;
    TPMS_ALGORITHM_DETAIL_ECC_mst      TPMS_ALGORITHM_DETAIL_ECC_DATA;
    TPMS_SIGNATURE_RSA_mst             TPMS_SIGNATURE_RSA_DATA;
    TPMS_SIGNATURE_ECC_mst             TPMS_SIGNATURE_ECC_DATA;
    TPMU_SIGNATURE_mst                 TPMU_SIGNATURE_DATA;
    TPMT_SIGNATURE_mst                 TPMT_SIGNATURE_DATA;
    TPMU_ENCRYPTED_SECRET_mst          TPMU_ENCRYPTED_SECRET_DATA;
    Tpm2bMarshal_mst                   TPM2B_ENCRYPTED_SECRET_DATA;
    TPMI_ALG_PUBLIC_mst                TPMI_ALG_PUBLIC_DATA;
    TPMU_PUBLIC_ID_mst                 TPMU_PUBLIC_ID_DATA;
    TPMS_KEYEDHASH_PARMS_mst           TPMS_KEYEDHASH_PARMS_DATA;
    TPMS_RSA_PARMS_mst                 TPMS_RSA_PARMS_DATA;
    TPMS_ECC_PARMS_mst                 TPMS_ECC_PARMS_DATA;
    TPMU_PUBLIC_PARMS_mst              TPMU_PUBLIC_PARMS_DATA;
    TPMT_PUBLIC_PARMS_mst              TPMT_PUBLIC_PARMS_DATA;
    TPMT_PUBLIC_mst                    TPMT_PUBLIC_DATA;
    Tpm2bsMarshal_mst                  TPM2B_PUBLIC_DATA;
    Tpm2bMarshal_mst                   TPM2B_TEMPLATE_DATA;
    Tpm2bMarshal_mst                   TPM2B_PRIVATE_VENDOR_SPECIFIC_DATA;
    TPMU_SENSITIVE_COMPOSITE_mst       TPMU_SENSITIVE_COMPOSITE_DATA;
    TPMT_SENSITIVE_mst                 TPMT_SENSITIVE_DATA;
    Tpm2bsMarshal_mst                  TPM2B_SENSITIVE_DATA;
    Tpm2bMarshal_mst                   TPM2B_PRIVATE_DATA;
    Tpm2bMarshal_mst                   TPM2B_ID_OBJECT_DATA;
    TPMS_NV_PIN_COUNTER_PARAMETERS_mst TPMS_NV_PIN_COUNTER_PARAMETERS_DATA;
    AttributesMarshal_mst              TPMA_NV_DATA;
    TPMS_NV_PUBLIC_mst                 TPMS_NV_PUBLIC_DATA;
    Tpm2bsMarshal_mst                  TPM2B_NV_PUBLIC_DATA;
    Tpm2bMarshal_mst                   TPM2B_CONTEXT_SENSITIVE_DATA;
    TPMS_CONTEXT_DATA_mst              TPMS_CONTEXT_DATA_DATA;
    Tpm2bMarshal_mst                   TPM2B_CONTEXT_DATA_DATA;
    TPMS_CONTEXT_mst                   TPMS_CONTEXT_DATA;
    TPMS_CREATION_DATA_mst             TPMS_CREATION_DATA_DATA;
    Tpm2bsMarshal_mst                  TPM2B_CREATION_DATA_DATA;
    TPM_AT_mst                         TPM_AT_DATA;
    TPMS_AC_OUTPUT_mst                 TPMS_AC_OUTPUT_DATA;
    ListMarshal_mst                    TPML_AC_CAPABILITIES_DATA;
    MinMaxMarshal_mst                  Type00_DATA;
    MinMaxMarshal_mst                  Type01_DATA;
    Type02_mst                         Type02_DATA;
    Type03_mst                         Type03_DATA;
    Type04_mst                         Type04_DATA;
    MinMaxMarshal_mst                  Type05_DATA;
    Type06_mst                         Type06_DATA;
    MinMaxMarshal_mst                  Type07_DATA;
    Type08_mst                         Type08_DATA;
    Type10_mst                         Type10_DATA;
    Type11_mst                         Type11_DATA;
    Type12_mst                         Type12_DATA;
    Type13_mst                         Type13_DATA;
    Type15_mst                         Type15_DATA;
    Type17_mst                         Type17_DATA;
    Type18_mst                         Type18_DATA;
    Type19_mst                         Type19_DATA;
    Type20_mst                         Type20_DATA;
    Type22_mst                         Type22_DATA;
    Type23_mst                         Type23_DATA;
    Type24_mst                         Type24_DATA;
    Type25_mst                         Type25_DATA;
    Type26_mst                         Type26_DATA;
    Type27_mst                         Type27_DATA;
    MinMaxMarshal_mst                  Type28_DATA;
    Type29_mst                         Type29_DATA;
    Type30_mst                         Type30_DATA;
    MinMaxMarshal_mst                  Type31_DATA;
    MinMaxMarshal_mst                  Type32_DATA;
    Type33_mst                         Type33_DATA;
    Type34_mst                         Type34_DATA;
    Type35_mst                         Type35_DATA;
    MinMaxMarshal_mst                  Type36_DATA;
    MinMaxMarshal_mst                  Type37_DATA;
    Type38_mst                         Type38_DATA;
    MinMaxMarshal_mst                  Type39_DATA;
    MinMaxMarshal_mst                  Type40_DATA;
    Type41_mst                         Type41_DATA;
    Type42_mst                         Type42_DATA;
    MinMaxMarshal_mst                  Type43_DATA;
    Type44_mst                         Type44_DATA;
} MarshalData_st;

#endif  // _TABLE_MARSHAL_TYPES_H_
