/* 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 TpmDispatch; Version 4.0 July 8,2017
 *  Date: Feb 28, 2020  Time: 03:04:48PM
 */

#if CC_Startup
case TPM_CC_Startup:
    break;
#endif  // CC_Startup
#if CC_Shutdown
case TPM_CC_Shutdown:
    break;
#endif  // CC_Shutdown
#if CC_SelfTest
case TPM_CC_SelfTest:
    break;
#endif  // CC_SelfTest
#if CC_IncrementalSelfTest
case TPM_CC_IncrementalSelfTest:
    break;
#endif  // CC_IncrementalSelfTest
#if CC_GetTestResult
case TPM_CC_GetTestResult:
    break;
#endif  // CC_GetTestResult
#if CC_StartAuthSession
case TPM_CC_StartAuthSession:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_ENTITY_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_StartAuthSession
#if CC_PolicyRestart
case TPM_CC_PolicyRestart:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyRestart
#if CC_Create
case TPM_CC_Create:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Create
#if CC_Load
case TPM_CC_Load:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Load
#if CC_LoadExternal
case TPM_CC_LoadExternal:
    break;
#endif  // CC_LoadExternal
#if CC_ReadPublic
case TPM_CC_ReadPublic:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ReadPublic
#if CC_ActivateCredential
case TPM_CC_ActivateCredential:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_ActivateCredential
#if CC_MakeCredential
case TPM_CC_MakeCredential:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_MakeCredential
#if CC_Unseal
case TPM_CC_Unseal:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Unseal
#if CC_ObjectChangeAuth
case TPM_CC_ObjectChangeAuth:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_ObjectChangeAuth
#if CC_CreateLoaded
case TPM_CC_CreateLoaded:
    *handleCount = 1;
    result       = TPMI_DH_PARENT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_CreateLoaded
#if CC_Duplicate
case TPM_CC_Duplicate:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_Duplicate
#if CC_Rewrap
case TPM_CC_Rewrap:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_Rewrap
#if CC_Import
case TPM_CC_Import:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Import
#if CC_RSA_Encrypt
case TPM_CC_RSA_Encrypt:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_RSA_Encrypt
#if CC_RSA_Decrypt
case TPM_CC_RSA_Decrypt:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_RSA_Decrypt
#if CC_ECDH_KeyGen
case TPM_CC_ECDH_KeyGen:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ECDH_KeyGen
#if CC_ECDH_ZGen
case TPM_CC_ECDH_ZGen:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ECDH_ZGen
#if CC_ECC_Parameters
case TPM_CC_ECC_Parameters:
    break;
#endif  // CC_ECC_Parameters
#if CC_ZGen_2Phase
case TPM_CC_ZGen_2Phase:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ZGen_2Phase
#if CC_ECC_Encrypt
case TPM_CC_ECC_Encrypt:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ECC_Encrypt
#if CC_ECC_Decrypt
case TPM_CC_ECC_Decrypt:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ECC_Decrypt
#if CC_EncryptDecrypt
case TPM_CC_EncryptDecrypt:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_EncryptDecrypt
#if CC_EncryptDecrypt2
case TPM_CC_EncryptDecrypt2:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_EncryptDecrypt2
#if CC_Hash
case TPM_CC_Hash:
    break;
#endif  // CC_Hash
#if CC_HMAC
case TPM_CC_HMAC:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_HMAC
#if CC_MAC
case TPM_CC_MAC:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_MAC
#if CC_GetRandom
case TPM_CC_GetRandom:
    break;
#endif  // CC_GetRandom
#if CC_StirRandom
case TPM_CC_StirRandom:
    break;
#endif  // CC_StirRandom
#if CC_HMAC_Start
case TPM_CC_HMAC_Start:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_HMAC_Start
#if CC_MAC_Start
case TPM_CC_MAC_Start:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_MAC_Start
#if CC_HashSequenceStart
case TPM_CC_HashSequenceStart:
    break;
#endif  // CC_HashSequenceStart
#if CC_SequenceUpdate
case TPM_CC_SequenceUpdate:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_SequenceUpdate
#if CC_SequenceComplete
case TPM_CC_SequenceComplete:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_SequenceComplete
#if CC_EventSequenceComplete
case TPM_CC_EventSequenceComplete:
    *handleCount = 2;
    result       = TPMI_DH_PCR_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_EventSequenceComplete
#if CC_Certify
case TPM_CC_Certify:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_Certify
#if CC_CertifyCreation
case TPM_CC_CertifyCreation:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_CertifyCreation
#if CC_Quote
case TPM_CC_Quote:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Quote
#if CC_GetSessionAuditDigest
case TPM_CC_GetSessionAuditDigest:
    *handleCount = 3;
    result       = TPMI_RH_ENDORSEMENT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    result =
        TPMI_SH_HMAC_Unmarshal(&handles[2], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_3;
    break;
#endif  // CC_GetSessionAuditDigest
#if CC_GetCommandAuditDigest
case TPM_CC_GetCommandAuditDigest:
    *handleCount = 2;
    result       = TPMI_RH_ENDORSEMENT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_GetCommandAuditDigest
#if CC_GetTime
case TPM_CC_GetTime:
    *handleCount = 2;
    result       = TPMI_RH_ENDORSEMENT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_GetTime
#if CC_CertifyX509
case TPM_CC_CertifyX509:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_CertifyX509
#if CC_Commit
case TPM_CC_Commit:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Commit
#if CC_EC_Ephemeral
case TPM_CC_EC_Ephemeral:
    break;
#endif  // CC_EC_Ephemeral
#if CC_VerifySignature
case TPM_CC_VerifySignature:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_VerifySignature
#if CC_Sign
case TPM_CC_Sign:
    *handleCount = 1;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Sign
#if CC_SetCommandCodeAuditStatus
case TPM_CC_SetCommandCodeAuditStatus:
    *handleCount = 1;
    result       = TPMI_RH_PROVISION_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_SetCommandCodeAuditStatus
#if CC_PCR_Extend
case TPM_CC_PCR_Extend:
    *handleCount = 1;
    result       = TPMI_DH_PCR_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PCR_Extend
#if CC_PCR_Event
case TPM_CC_PCR_Event:
    *handleCount = 1;
    result       = TPMI_DH_PCR_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PCR_Event
#if CC_PCR_Read
case TPM_CC_PCR_Read:
    break;
#endif  // CC_PCR_Read
#if CC_PCR_Allocate
case TPM_CC_PCR_Allocate:
    *handleCount = 1;
    result       = TPMI_RH_PLATFORM_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PCR_Allocate
#if CC_PCR_SetAuthPolicy
case TPM_CC_PCR_SetAuthPolicy:
    *handleCount = 1;
    result       = TPMI_RH_PLATFORM_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PCR_SetAuthPolicy
#if CC_PCR_SetAuthValue
case TPM_CC_PCR_SetAuthValue:
    *handleCount = 1;
    result       = TPMI_DH_PCR_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PCR_SetAuthValue
#if CC_PCR_Reset
case TPM_CC_PCR_Reset:
    *handleCount = 1;
    result       = TPMI_DH_PCR_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PCR_Reset
#if CC_PolicySigned
case TPM_CC_PolicySigned:
    *handleCount = 2;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_PolicySigned
#if CC_PolicySecret
case TPM_CC_PolicySecret:
    *handleCount = 2;
    result       = TPMI_DH_ENTITY_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_PolicySecret
#if CC_PolicyTicket
case TPM_CC_PolicyTicket:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyTicket
#if CC_PolicyOR
case TPM_CC_PolicyOR:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyOR
#if CC_PolicyPCR
case TPM_CC_PolicyPCR:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyPCR
#if CC_PolicyLocality
case TPM_CC_PolicyLocality:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyLocality
#if CC_PolicyNV
case TPM_CC_PolicyNV:
    *handleCount = 3;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[2], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_3;
    break;
#endif  // CC_PolicyNV
#if CC_PolicyCounterTimer
case TPM_CC_PolicyCounterTimer:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyCounterTimer
#if CC_PolicyCommandCode
case TPM_CC_PolicyCommandCode:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyCommandCode
#if CC_PolicyPhysicalPresence
case TPM_CC_PolicyPhysicalPresence:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyPhysicalPresence
#if CC_PolicyCpHash
case TPM_CC_PolicyCpHash:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyCpHash
#if CC_PolicyNameHash
case TPM_CC_PolicyNameHash:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyNameHash
#if CC_PolicyDuplicationSelect
case TPM_CC_PolicyDuplicationSelect:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyDuplicationSelect
#if CC_PolicyAuthorize
case TPM_CC_PolicyAuthorize:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyAuthorize
#if CC_PolicyAuthValue
case TPM_CC_PolicyAuthValue:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyAuthValue
#if CC_PolicyPassword
case TPM_CC_PolicyPassword:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyPassword
#if CC_PolicyGetDigest
case TPM_CC_PolicyGetDigest:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyGetDigest
#if CC_PolicyNvWritten
case TPM_CC_PolicyNvWritten:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyNvWritten
#if CC_PolicyTemplate
case TPM_CC_PolicyTemplate:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PolicyTemplate
#if CC_PolicyAuthorizeNV
case TPM_CC_PolicyAuthorizeNV:
    *handleCount = 3;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[2], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_3;
    break;
#endif  // CC_PolicyAuthorizeNV
#if CC_CreatePrimary
case TPM_CC_CreatePrimary:
    *handleCount = 1;
    result       = TPMI_RH_HIERARCHY_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_CreatePrimary
#if CC_HierarchyControl
case TPM_CC_HierarchyControl:
    *handleCount = 1;
    result       = TPMI_RH_HIERARCHY_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_HierarchyControl
#if CC_SetPrimaryPolicy
case TPM_CC_SetPrimaryPolicy:
    *handleCount = 1;
    result       = TPMI_RH_HIERARCHY_POLICY_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_SetPrimaryPolicy
#if CC_ChangePPS
case TPM_CC_ChangePPS:
    *handleCount = 1;
    result       = TPMI_RH_PLATFORM_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ChangePPS
#if CC_ChangeEPS
case TPM_CC_ChangeEPS:
    *handleCount = 1;
    result       = TPMI_RH_PLATFORM_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ChangeEPS
#if CC_Clear
case TPM_CC_Clear:
    *handleCount = 1;
    result =
        TPMI_RH_CLEAR_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Clear
#if CC_ClearControl
case TPM_CC_ClearControl:
    *handleCount = 1;
    result =
        TPMI_RH_CLEAR_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ClearControl
#if CC_HierarchyChangeAuth
case TPM_CC_HierarchyChangeAuth:
    *handleCount = 1;
    result       = TPMI_RH_HIERARCHY_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_HierarchyChangeAuth
#if CC_DictionaryAttackLockReset
case TPM_CC_DictionaryAttackLockReset:
    *handleCount = 1;
    result       = TPMI_RH_LOCKOUT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_DictionaryAttackLockReset
#if CC_DictionaryAttackParameters
case TPM_CC_DictionaryAttackParameters:
    *handleCount = 1;
    result       = TPMI_RH_LOCKOUT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_DictionaryAttackParameters
#if CC_PP_Commands
case TPM_CC_PP_Commands:
    *handleCount = 1;
    result       = TPMI_RH_PLATFORM_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_PP_Commands
#if CC_SetAlgorithmSet
case TPM_CC_SetAlgorithmSet:
    *handleCount = 1;
    result       = TPMI_RH_PLATFORM_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_SetAlgorithmSet
#if CC_FieldUpgradeStart
case TPM_CC_FieldUpgradeStart:
    *handleCount = 2;
    result       = TPMI_RH_PLATFORM_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_FieldUpgradeStart
#if CC_FieldUpgradeData
case TPM_CC_FieldUpgradeData:
    break;
#endif  // CC_FieldUpgradeData
#if CC_FirmwareRead
case TPM_CC_FirmwareRead:
    break;
#endif  // CC_FirmwareRead
#if CC_ContextSave
case TPM_CC_ContextSave:
    *handleCount = 1;
    result       = TPMI_DH_CONTEXT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ContextSave
#if CC_ContextLoad
case TPM_CC_ContextLoad:
    break;
#endif  // CC_ContextLoad
#if CC_FlushContext
case TPM_CC_FlushContext:
    break;
#endif  // CC_FlushContext
#if CC_EvictControl
case TPM_CC_EvictControl:
    *handleCount = 2;
    result       = TPMI_RH_PROVISION_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_DH_OBJECT_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_EvictControl
#if CC_ReadClock
case TPM_CC_ReadClock:
    break;
#endif  // CC_ReadClock
#if CC_ClockSet
case TPM_CC_ClockSet:
    *handleCount = 1;
    result       = TPMI_RH_PROVISION_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ClockSet
#if CC_ClockRateAdjust
case TPM_CC_ClockRateAdjust:
    *handleCount = 1;
    result       = TPMI_RH_PROVISION_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ClockRateAdjust
#if CC_GetCapability
case TPM_CC_GetCapability:
    break;
#endif  // CC_GetCapability
#if CC_TestParms
case TPM_CC_TestParms:
    break;
#endif  // CC_TestParms
#if CC_NV_DefineSpace
case TPM_CC_NV_DefineSpace:
    *handleCount = 1;
    result       = TPMI_RH_PROVISION_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_NV_DefineSpace
#if CC_NV_UndefineSpace
case TPM_CC_NV_UndefineSpace:
    *handleCount = 2;
    result       = TPMI_RH_PROVISION_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_UndefineSpace
#if CC_NV_UndefineSpaceSpecial
case TPM_CC_NV_UndefineSpaceSpecial:
    *handleCount = 2;
    result       = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_PLATFORM_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_UndefineSpaceSpecial
#if CC_NV_ReadPublic
case TPM_CC_NV_ReadPublic:
    *handleCount = 1;
    result       = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_NV_ReadPublic
#if CC_NV_Write
case TPM_CC_NV_Write:
    *handleCount = 2;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_Write
#if CC_NV_Increment
case TPM_CC_NV_Increment:
    *handleCount = 2;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_Increment
#if CC_NV_Extend
case TPM_CC_NV_Extend:
    *handleCount = 2;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_Extend
#if CC_NV_SetBits
case TPM_CC_NV_SetBits:
    *handleCount = 2;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_SetBits
#if CC_NV_WriteLock
case TPM_CC_NV_WriteLock:
    *handleCount = 2;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_WriteLock
#if CC_NV_GlobalWriteLock
case TPM_CC_NV_GlobalWriteLock:
    *handleCount = 1;
    result       = TPMI_RH_PROVISION_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_NV_GlobalWriteLock
#if CC_NV_Read
case TPM_CC_NV_Read:
    *handleCount = 2;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_Read
#if CC_NV_ReadLock
case TPM_CC_NV_ReadLock:
    *handleCount = 2;
    result       = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    break;
#endif  // CC_NV_ReadLock
#if CC_NV_ChangeAuth
case TPM_CC_NV_ChangeAuth:
    *handleCount = 1;
    result       = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_NV_ChangeAuth
#if CC_NV_Certify
case TPM_CC_NV_Certify:
    *handleCount = 3;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, TRUE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    result = TPMI_RH_NV_INDEX_Unmarshal(
        &handles[2], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_3;
    break;
#endif  // CC_NV_Certify
#if CC_AC_GetCapability
case TPM_CC_AC_GetCapability:
    *handleCount = 1;
    result =
        TPMI_RH_AC_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_AC_GetCapability
#if CC_AC_Send
case TPM_CC_AC_Send:
    *handleCount = 3;
    result       = TPMI_DH_OBJECT_Unmarshal(
        &handles[0], handleBufferStart, bufferRemainingSize, FALSE);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    result = TPMI_RH_NV_AUTH_Unmarshal(
        &handles[1], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_2;
    result =
        TPMI_RH_AC_Unmarshal(&handles[2], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_3;
    break;
#endif  // CC_AC_Send
#if CC_Policy_AC_SendSelect
case TPM_CC_Policy_AC_SendSelect:
    *handleCount = 1;
    result =
        TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_Policy_AC_SendSelect
#if CC_ACT_SetTimeout
case TPM_CC_ACT_SetTimeout:
    *handleCount = 1;
    result =
        TPMI_RH_ACT_Unmarshal(&handles[0], handleBufferStart, bufferRemainingSize);
    if(TPM_RC_SUCCESS != result)
        return result + TPM_RC_H + TPM_RC_1;
    break;
#endif  // CC_ACT_SetTimeout
#if CC_Vendor_TCG_Test
case TPM_CC_Vendor_TCG_Test:
    break;
#endif  // CC_Vendor_TCG_Test
