class com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm extends com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithm
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm
  super_class: com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithm
{
  private static final java.util.logging.Logger aeLogger;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final java.lang.String algorithmName;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "AEAD_AES_256_CBC_HMAC_SHA256"

  private com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey columnEncryptionkey;
    descriptor: Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
    flags: (0x0002) ACC_PRIVATE

  private byte algorithmVersion;
    descriptor: B
    flags: (0x0002) ACC_PRIVATE

  private boolean isDeterministic;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private int blockSizeInBytes;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int keySizeInBytes;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private byte[] version;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] versionSize;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private int minimumCipherTextLengthInBytesNoAuthenticationTag;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int minimumCipherTextLengthInBytesWithAuthenticationTag;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 31
            ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
         3: .line 34
            ldc "com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm"
            invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
         4: .line 33
            putstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
         5: .line 36
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey, com.microsoft.sqlserver.jdbc.SQLServerEncryptionType, byte);
    descriptor: (Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;B)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
        start local 1 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey columnEncryptionkey
        start local 2 // com.microsoft.sqlserver.jdbc.SQLServerEncryptionType encryptionType
        start local 3 // byte algorithmVersion
         0: .line 74
            aload 0 /* this */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithm.<init>:()V
         1: .line 42
            aload 0 /* this */
            iconst_0
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.isDeterministic:Z
         2: .line 44
            aload 0 /* this */
            bipush 16
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
         3: .line 45
            aload 0 /* this */
            bipush 32
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
         4: .line 46
            aload 0 /* this */
            iconst_1
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
         5: .line 48
            aload 0 /* this */
            iconst_1
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.versionSize:[B
         6: .line 54
            aload 0 /* this */
            iconst_1
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            iadd
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            iadd
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesNoAuthenticationTag:I
         7: .line 60
            aload 0 /* this */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesNoAuthenticationTag:I
         8: .line 61
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
         9: .line 60
            iadd
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesWithAuthenticationTag:I
        10: .line 76
            aload 0 /* this */
            aload 1 /* columnEncryptionkey */
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
        11: .line 78
            aload 2 /* encryptionType */
            getstatic com.microsoft.sqlserver.jdbc.SQLServerEncryptionType.Deterministic:Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
            if_acmpne 13
        12: .line 79
            aload 0 /* this */
            iconst_1
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.isDeterministic:Z
        13: .line 81
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey com.microsoft.sqlserver.jdbc.SQLServerEncryptionType int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* algorithmVersion */
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.algorithmVersion:B
        14: .line 82
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
            iconst_0
            iload 3 /* algorithmVersion */
            bastore
        15: .line 83
            return
        end local 3 // byte algorithmVersion
        end local 2 // com.microsoft.sqlserver.jdbc.SQLServerEncryptionType encryptionType
        end local 1 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey columnEncryptionkey
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   16     0                 this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            0   16     1  columnEncryptionkey  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
            0   16     2       encryptionType  Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
            0   16     3     algorithmVersion  B
    MethodParameters:
                     Name  Flags
      columnEncryptionkey  
      encryptionType       
      algorithmVersion     

  byte[] encryptData(byte[]);
    descriptor: ([B)[B
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
        start local 1 // byte[] plainText
         0: .line 88
            aload 0 /* this */
            aload 1 /* plainText */
            iconst_1
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.encryptData:([BZ)[B
            areturn
        end local 1 // byte[] plainText
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            0    1     1  plainText  [B
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
           Name  Flags
      plainText  

  protected byte[] encryptData(byte[], boolean);
    descriptor: ([BZ)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=20, args_size=3
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
        start local 1 // byte[] plainText
        start local 2 // boolean hasAuthenticationTag
         0: .line 102
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
            ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "encryptData"
            ldc "Encrypting data."
            invokevirtual java.util.logging.Logger.entering:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 105
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
            ifne 2
            aload 1 /* plainText */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            newarray 8
            astore 3 /* iv */
        start local 3 // byte[] iv
         3: .line 108
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getEncryptionKey:()[B
            ldc "AES"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 4 /* skeySpec */
        start local 4 // javax.crypto.spec.SecretKeySpec skeySpec
         4: .line 110
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.isDeterministic:Z
            ifeq 13
         5: .line 113
            aload 1 /* plainText */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getIVKey:()[B
         6: .line 114
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
         7: .line 113
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerSecurityUtility.getHMACWithSHA256:([B[BI)[B
            astore 3 /* iv */
         8: .line 115
            goto 15
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] int byte[] javax.crypto.spec.SecretKeySpec
      StackMap stack: java.security.GeneralSecurityException
         9: astore 5 /* e */
        start local 5 // java.security.GeneralSecurityException e
        10: .line 116
            new java.text.MessageFormat
            dup
            ldc "R_EncryptionFailed"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 6 /* form */
        start local 6 // java.text.MessageFormat form
        11: .line 117
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            aastore
            astore 7 /* msgArgs */
        start local 7 // java.lang.Object[] msgArgs
        12: .line 118
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 6 /* form */
            aload 7 /* msgArgs */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            iconst_0
            iconst_0
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
        end local 7 // java.lang.Object[] msgArgs
        end local 6 // java.text.MessageFormat form
        end local 5 // java.security.GeneralSecurityException e
        13: .line 121
      StackMap locals:
      StackMap stack:
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            astore 5 /* random */
        start local 5 // java.security.SecureRandom random
        14: .line 122
            aload 5 /* random */
            aload 3 /* iv */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
        end local 5 // java.security.SecureRandom random
        15: .line 125
      StackMap locals:
      StackMap stack:
            aload 1 /* plainText */
            arraylength
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            idiv
            iconst_1
            iadd
            istore 5 /* numBlocks */
        start local 5 // int numBlocks
        16: .line 127
            iconst_1
            istore 6 /* hmacStartIndex */
        start local 6 // int hmacStartIndex
        17: .line 128
            iload 2 /* hasAuthenticationTag */
            ifeq 18
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
            goto 19
      StackMap locals: int int
      StackMap stack:
        18: iconst_0
      StackMap locals:
      StackMap stack: int
        19: istore 7 /* authenticationTagLen */
        start local 7 // int authenticationTagLen
        20: .line 129
            iload 6 /* hmacStartIndex */
            iload 7 /* authenticationTagLen */
            iadd
            istore 8 /* ivStartIndex */
        start local 8 // int ivStartIndex
        21: .line 130
            iload 8 /* ivStartIndex */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            iadd
            istore 9 /* cipherStartIndex */
        start local 9 // int cipherStartIndex
        22: .line 133
            iconst_1
            iload 7 /* authenticationTagLen */
            iadd
            aload 3 /* iv */
            arraylength
            iadd
            iload 5 /* numBlocks */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            imul
            iadd
            istore 10 /* outputBufSize */
        start local 10 // int outputBufSize
        23: .line 134
            iload 10 /* outputBufSize */
            newarray 8
            astore 11 /* outBuffer */
        start local 11 // byte[] outBuffer
        24: .line 137
            aload 11 /* outBuffer */
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.algorithmVersion:B
            bastore
        25: .line 139
            aload 3 /* iv */
            iconst_0
            aload 11 /* outBuffer */
            iload 8 /* ivStartIndex */
            aload 3 /* iv */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        26: .line 145
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 3 /* iv */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 12 /* ivector */
        start local 12 // javax.crypto.spec.IvParameterSpec ivector
        27: .line 146
            ldc "AES/CBC/PKCS5Padding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 13 /* encryptCipher */
        start local 13 // javax.crypto.Cipher encryptCipher
        28: .line 147
            aload 13 /* encryptCipher */
            iconst_1
            aload 4 /* skeySpec */
            aload 12 /* ivector */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
        29: .line 149
            iconst_0
            istore 14 /* count */
        start local 14 // int count
        30: .line 150
            iload 9 /* cipherStartIndex */
            istore 15 /* cipherIndex */
        start local 15 // int cipherIndex
        31: .line 152
            iload 5 /* numBlocks */
            iconst_1
            if_icmple 34
        32: .line 153
            iload 5 /* numBlocks */
            iconst_1
            isub
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            imul
            istore 14 /* count */
        33: .line 154
            iload 15 /* cipherIndex */
            aload 13 /* encryptCipher */
            aload 1 /* plainText */
            iconst_0
            iload 14 /* count */
            aload 11 /* outBuffer */
            iload 15 /* cipherIndex */
            invokevirtual javax.crypto.Cipher.update:([BII[BI)I
            iadd
            istore 15 /* cipherIndex */
        34: .line 157
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] int byte[] javax.crypto.spec.SecretKeySpec int int int int int int byte[] javax.crypto.spec.IvParameterSpec javax.crypto.Cipher int int
      StackMap stack:
            aload 13 /* encryptCipher */
            aload 1 /* plainText */
            iload 14 /* count */
            aload 1 /* plainText */
            arraylength
            iload 14 /* count */
            isub
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 16 /* buffTmp */
        start local 16 // byte[] buffTmp
        35: .line 159
            aload 16 /* buffTmp */
            iconst_0
            aload 11 /* outBuffer */
            iload 15 /* cipherIndex */
            aload 16 /* buffTmp */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        36: .line 161
            iload 2 /* hasAuthenticationTag */
            ifeq 51
        37: .line 163
            ldc "HmacSHA256"
            invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 17 /* hmac */
        start local 17 // javax.crypto.Mac hmac
        38: .line 164
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getMacKey:()[B
            ldc "HmacSHA256"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 18 /* initkey */
        start local 18 // javax.crypto.spec.SecretKeySpec initkey
        39: .line 165
            aload 17 /* hmac */
            aload 18 /* initkey */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
        40: .line 166
            aload 17 /* hmac */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
            arraylength
            invokevirtual javax.crypto.Mac.update:([BII)V
        41: .line 167
            aload 17 /* hmac */
            aload 3 /* iv */
            iconst_0
            aload 3 /* iv */
            arraylength
            invokevirtual javax.crypto.Mac.update:([BII)V
        42: .line 168
            aload 17 /* hmac */
            aload 11 /* outBuffer */
            iload 9 /* cipherStartIndex */
            iload 5 /* numBlocks */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            imul
            invokevirtual javax.crypto.Mac.update:([BII)V
        43: .line 169
            aload 17 /* hmac */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.versionSize:[B
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
            arraylength
            invokevirtual javax.crypto.Mac.update:([BII)V
        44: .line 170
            aload 17 /* hmac */
            invokevirtual javax.crypto.Mac.doFinal:()[B
            astore 19 /* hash */
        start local 19 // byte[] hash
        45: .line 172
            aload 19 /* hash */
            iconst_0
            aload 11 /* outBuffer */
            iload 6 /* hmacStartIndex */
            iload 7 /* authenticationTagLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 19 // byte[] hash
        end local 18 // javax.crypto.spec.SecretKeySpec initkey
        end local 17 // javax.crypto.Mac hmac
        end local 16 // byte[] buffTmp
        end local 15 // int cipherIndex
        end local 14 // int count
        end local 13 // javax.crypto.Cipher encryptCipher
        end local 12 // javax.crypto.spec.IvParameterSpec ivector
        46: .line 175
            goto 51
        47: .line 176
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] int byte[] javax.crypto.spec.SecretKeySpec int int int int int int byte[]
      StackMap stack: java.security.GeneralSecurityException
            astore 12 /* e */
        start local 12 // java.security.GeneralSecurityException e
        48: .line 178
            new java.text.MessageFormat
            dup
            ldc "R_EncryptionFailed"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 13 /* form */
        start local 13 // java.text.MessageFormat form
        49: .line 179
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 12 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            aastore
            astore 14 /* msgArgs */
        start local 14 // java.lang.Object[] msgArgs
        50: .line 180
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 13 /* form */
            aload 14 /* msgArgs */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            iconst_0
            iconst_0
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
        end local 14 // java.lang.Object[] msgArgs
        end local 13 // java.text.MessageFormat form
        end local 12 // java.security.GeneralSecurityException e
        51: .line 183
      StackMap locals:
      StackMap stack:
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
            ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "encryptData"
            ldc "Data encrypted."
            invokevirtual java.util.logging.Logger.exiting:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
        52: .line 184
            aload 11 /* outBuffer */
            areturn
        end local 11 // byte[] outBuffer
        end local 10 // int outputBufSize
        end local 9 // int cipherStartIndex
        end local 8 // int ivStartIndex
        end local 7 // int authenticationTagLen
        end local 6 // int hmacStartIndex
        end local 5 // int numBlocks
        end local 4 // javax.crypto.spec.SecretKeySpec skeySpec
        end local 3 // byte[] iv
        end local 2 // boolean hasAuthenticationTag
        end local 1 // byte[] plainText
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   53     0                  this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            0   53     1             plainText  [B
            0   53     2  hasAuthenticationTag  Z
            3   53     3                    iv  [B
            4   53     4              skeySpec  Ljavax/crypto/spec/SecretKeySpec;
           10   13     5                     e  Ljava/security/GeneralSecurityException;
           11   13     6                  form  Ljava/text/MessageFormat;
           12   13     7               msgArgs  [Ljava/lang/Object;
           14   15     5                random  Ljava/security/SecureRandom;
           16   53     5             numBlocks  I
           17   53     6        hmacStartIndex  I
           20   53     7  authenticationTagLen  I
           21   53     8          ivStartIndex  I
           22   53     9      cipherStartIndex  I
           23   53    10         outputBufSize  I
           24   53    11             outBuffer  [B
           27   46    12               ivector  Ljavax/crypto/spec/IvParameterSpec;
           28   46    13         encryptCipher  Ljavax/crypto/Cipher;
           30   46    14                 count  I
           31   46    15           cipherIndex  I
           35   46    16               buffTmp  [B
           38   46    17                  hmac  Ljavax/crypto/Mac;
           39   46    18               initkey  Ljavax/crypto/spec/SecretKeySpec;
           45   46    19                  hash  [B
           48   51    12                     e  Ljava/security/GeneralSecurityException;
           49   51    13                  form  Ljava/text/MessageFormat;
           50   51    14               msgArgs  [Ljava/lang/Object;
      Exception table:
        from    to  target  type
           5     8       9  Class java.security.InvalidKeyException
           5     8       9  Class java.security.NoSuchAlgorithmException
          26    46      47  Class java.security.NoSuchAlgorithmException
          26    46      47  Class java.security.InvalidAlgorithmParameterException
          26    46      47  Class java.security.InvalidKeyException
          26    46      47  Class javax.crypto.NoSuchPaddingException
          26    46      47  Class javax.crypto.IllegalBlockSizeException
          26    46      47  Class javax.crypto.BadPaddingException
          26    46      47  Class javax.crypto.ShortBufferException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                      Name  Flags
      plainText             
      hasAuthenticationTag  

  byte[] decryptData(byte[]);
    descriptor: ([B)[B
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
        start local 1 // byte[] cipherText
         0: .line 190
            aload 0 /* this */
            aload 1 /* cipherText */
            iconst_1
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.decryptData:([BZ)[B
            areturn
        end local 1 // byte[] cipherText
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            0    1     1  cipherText  [B
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
            Name  Flags
      cipherText  

  private byte[] decryptData(byte[], boolean);
    descriptor: ([BZ)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=13, args_size=3
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
        start local 1 // byte[] cipherText
        start local 2 // boolean hasAuthenticationTag
         0: .line 204
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
            ifne 1
            aload 1 /* cipherText */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 206
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
            newarray 8
            astore 3 /* iv */
        start local 3 // byte[] iv
         2: .line 208
            iload 2 /* hasAuthenticationTag */
            ifeq 3
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesWithAuthenticationTag:I
            goto 4
         3: .line 209
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesNoAuthenticationTag:I
         4: .line 208
      StackMap locals:
      StackMap stack: int
            istore 4 /* minimumCipherTextLength */
        start local 4 // int minimumCipherTextLength
         5: .line 213
            aload 1 /* cipherText */
            arraylength
            iload 4 /* minimumCipherTextLength */
            if_icmpge 9
         6: .line 214
            new java.text.MessageFormat
            dup
            ldc "R_InvalidCipherTextSize"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 5 /* form */
        start local 5 // java.text.MessageFormat form
         7: .line 215
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* cipherText */
            arraylength
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iload 4 /* minimumCipherTextLength */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            astore 6 /* msgArgs */
        start local 6 // java.lang.Object[] msgArgs
         8: .line 216
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 5 /* form */
            aload 6 /* msgArgs */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            iconst_0
            iconst_0
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
        end local 6 // java.lang.Object[] msgArgs
        end local 5 // java.text.MessageFormat form
         9: .line 221
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 5 /* startIndex */
        start local 5 // int startIndex
        10: .line 222
            aload 1 /* cipherText */
            iload 5 /* startIndex */
            baload
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.algorithmVersion:B
            if_icmpeq 16
        11: .line 223
            new java.text.MessageFormat
            dup
            ldc "R_InvalidAlgorithmVersion"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 6 /* form */
        start local 6 // java.text.MessageFormat form
        12: .line 225
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "%02X "
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* cipherText */
            iload 5 /* startIndex */
            baload
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aastore
            dup
            iconst_1
        13: .line 226
            ldc "%02X "
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.algorithmVersion:B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aastore
        14: .line 225
            astore 7 /* msgArgs */
        start local 7 // java.lang.Object[] msgArgs
        15: .line 227
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 6 /* form */
            aload 7 /* msgArgs */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            iconst_0
            iconst_0
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
        end local 7 // java.lang.Object[] msgArgs
        end local 6 // java.text.MessageFormat form
        16: .line 231
      StackMap locals: int
      StackMap stack:
            iinc 5 /* startIndex */ 1
        17: .line 232
            iconst_0
            istore 6 /* authenticationTagOffset */
        start local 6 // int authenticationTagOffset
        18: .line 235
            iload 2 /* hasAuthenticationTag */
            ifeq 21
        19: .line 236
            iload 5 /* startIndex */
            istore 6 /* authenticationTagOffset */
        20: .line 238
            iload 5 /* startIndex */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
            iadd
            istore 5 /* startIndex */
        21: .line 242
      StackMap locals: int
      StackMap stack:
            aload 1 /* cipherText */
            iload 5 /* startIndex */
            aload 3 /* iv */
            iconst_0
            aload 3 /* iv */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        22: .line 243
            iload 5 /* startIndex */
            aload 3 /* iv */
            arraylength
            iadd
            istore 5 /* startIndex */
        23: .line 246
            iload 5 /* startIndex */
            istore 7 /* cipherTextOffset */
        start local 7 // int cipherTextOffset
        24: .line 248
            aload 1 /* cipherText */
            arraylength
            iload 5 /* startIndex */
            isub
            istore 8 /* cipherTextCount */
        start local 8 // int cipherTextCount
        25: .line 250
            iload 2 /* hasAuthenticationTag */
            ifeq 39
        26: .line 253
            aload 0 /* this */
            aload 3 /* iv */
            aload 1 /* cipherText */
            iload 7 /* cipherTextOffset */
            iload 8 /* cipherTextCount */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.prepareAuthenticationTag:([B[BII)[B
            astore 9 /* authenticationTag */
        start local 9 // byte[] authenticationTag
        27: .line 254
            goto 32
        end local 9 // byte[] authenticationTag
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] int byte[] int int int int int
      StackMap stack: java.security.GeneralSecurityException
        28: astore 10 /* e */
        start local 10 // java.security.GeneralSecurityException e
        29: .line 255
            new java.text.MessageFormat
            dup
            ldc "R_DecryptionFailed"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 11 /* form */
        start local 11 // java.text.MessageFormat form
        30: .line 256
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 10 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            aastore
            astore 12 /* msgArgs */
        start local 12 // java.lang.Object[] msgArgs
        31: .line 257
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 11 /* form */
            aload 12 /* msgArgs */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            iconst_0
            iconst_0
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
        end local 12 // java.lang.Object[] msgArgs
        end local 11 // java.text.MessageFormat form
        end local 10 // java.security.GeneralSecurityException e
        start local 9 // byte[] authenticationTag
        32: .line 260
      StackMap locals: byte[]
      StackMap stack:
            aload 9 /* authenticationTag */
            aload 1 /* cipherText */
            iload 6 /* authenticationTagOffset */
        33: .line 261
            iload 8 /* cipherTextCount */
        34: .line 260
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerSecurityUtility.compareBytes:([B[BII)Z
        35: .line 261
            ifne 39
        36: .line 263
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            ldc "R_InvalidAuthenticationTag"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
        37: .line 264
            iconst_0
            iconst_0
        38: .line 263
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
        end local 9 // byte[] authenticationTag
        39: .line 271
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* iv */
            aload 1 /* cipherText */
            iload 7 /* cipherTextOffset */
            iload 8 /* cipherTextCount */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.decryptData:([B[BII)[B
            areturn
        end local 8 // int cipherTextCount
        end local 7 // int cipherTextOffset
        end local 6 // int authenticationTagOffset
        end local 5 // int startIndex
        end local 4 // int minimumCipherTextLength
        end local 3 // byte[] iv
        end local 2 // boolean hasAuthenticationTag
        end local 1 // byte[] cipherText
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   40     0                     this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            0   40     1               cipherText  [B
            0   40     2     hasAuthenticationTag  Z
            2   40     3                       iv  [B
            5   40     4  minimumCipherTextLength  I
            7    9     5                     form  Ljava/text/MessageFormat;
            8    9     6                  msgArgs  [Ljava/lang/Object;
           10   40     5               startIndex  I
           12   16     6                     form  Ljava/text/MessageFormat;
           15   16     7                  msgArgs  [Ljava/lang/Object;
           18   40     6  authenticationTagOffset  I
           24   40     7         cipherTextOffset  I
           25   40     8          cipherTextCount  I
           27   28     9        authenticationTag  [B
           32   39     9        authenticationTag  [B
           29   32    10                        e  Ljava/security/GeneralSecurityException;
           30   32    11                     form  Ljava/text/MessageFormat;
           31   32    12                  msgArgs  [Ljava/lang/Object;
      Exception table:
        from    to  target  type
          26    27      28  Class java.security.InvalidKeyException
          26    27      28  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                      Name  Flags
      cipherText            
      hasAuthenticationTag  

  private byte[] decryptData(byte[], byte[], int, int);
    descriptor: ([B[BII)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=12, args_size=5
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
        start local 1 // byte[] iv
        start local 2 // byte[] cipherText
        start local 3 // int offset
        start local 4 // int count
         0: .line 289
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
            ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "decryptData"
            ldc "Decrypting data."
            invokevirtual java.util.logging.Logger.entering:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 290
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
            ifne 2
            aload 2 /* cipherText */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 291
      StackMap locals:
      StackMap stack:
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
            ifne 3
            aload 1 /* iv */
            ifnonnull 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 292
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* plainText */
        start local 5 // byte[] plainText
         4: .line 294
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getEncryptionKey:()[B
            ldc "AES"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 6 /* skeySpec */
        start local 6 // javax.crypto.spec.SecretKeySpec skeySpec
         5: .line 295
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 1 /* iv */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 7 /* ivector */
        start local 7 // javax.crypto.spec.IvParameterSpec ivector
         6: .line 298
            ldc "AES/CBC/PKCS5Padding"
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 8 /* decryptCipher */
        start local 8 // javax.crypto.Cipher decryptCipher
         7: .line 299
            aload 8 /* decryptCipher */
            iconst_2
            aload 6 /* skeySpec */
            aload 7 /* ivector */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
         8: .line 300
            aload 8 /* decryptCipher */
            aload 2 /* cipherText */
            iload 3 /* offset */
            iload 4 /* count */
            invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
            astore 5 /* plainText */
         9: .line 301
            goto 14
        end local 8 // javax.crypto.Cipher decryptCipher
        10: .line 302
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] byte[] int int byte[] javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec
      StackMap stack: java.security.GeneralSecurityException
            astore 9 /* e */
        start local 9 // java.security.GeneralSecurityException e
        11: .line 304
            new java.text.MessageFormat
            dup
            ldc "R_DecryptionFailed"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 10 /* form */
        start local 10 // java.text.MessageFormat form
        12: .line 305
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 9 /* e */
            invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
            aastore
            astore 11 /* msgArgs */
        start local 11 // java.lang.Object[] msgArgs
        13: .line 306
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 10 /* form */
            aload 11 /* msgArgs */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            iconst_0
            iconst_0
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
        end local 11 // java.lang.Object[] msgArgs
        end local 10 // java.text.MessageFormat form
        end local 9 // java.security.GeneralSecurityException e
        start local 8 // javax.crypto.Cipher decryptCipher
        14: .line 309
      StackMap locals: javax.crypto.Cipher
      StackMap stack:
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
            ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "decryptData"
            ldc "Data decrypted."
            invokevirtual java.util.logging.Logger.exiting:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
        15: .line 310
            aload 5 /* plainText */
            areturn
        end local 8 // javax.crypto.Cipher decryptCipher
        end local 7 // javax.crypto.spec.IvParameterSpec ivector
        end local 6 // javax.crypto.spec.SecretKeySpec skeySpec
        end local 5 // byte[] plainText
        end local 4 // int count
        end local 3 // int offset
        end local 2 // byte[] cipherText
        end local 1 // byte[] iv
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0           this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            0   16     1             iv  [B
            0   16     2     cipherText  [B
            0   16     3         offset  I
            0   16     4          count  I
            4   16     5      plainText  [B
            5   16     6       skeySpec  Ljavax/crypto/spec/SecretKeySpec;
            6   16     7        ivector  Ljavax/crypto/spec/IvParameterSpec;
            7   10     8  decryptCipher  Ljavax/crypto/Cipher;
           14   16     8  decryptCipher  Ljavax/crypto/Cipher;
           11   14     9              e  Ljava/security/GeneralSecurityException;
           12   14    10           form  Ljava/text/MessageFormat;
           13   14    11        msgArgs  [Ljava/lang/Object;
      Exception table:
        from    to  target  type
           6     9      10  Class java.security.NoSuchAlgorithmException
           6     9      10  Class java.security.InvalidAlgorithmParameterException
           6     9      10  Class java.security.InvalidKeyException
           6     9      10  Class javax.crypto.NoSuchPaddingException
           6     9      10  Class javax.crypto.IllegalBlockSizeException
           6     9      10  Class javax.crypto.BadPaddingException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
            Name  Flags
      iv          
      cipherText  
      offset      
      count       

  private byte[] prepareAuthenticationTag(byte[], byte[], int, int);
    descriptor: ([B[BII)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=5
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
        start local 1 // byte[] iv
        start local 2 // byte[] cipherText
        start local 3 // int offset
        start local 4 // int length
         0: .line 329
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
            ifne 1
            aload 2 /* cipherText */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 331
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
            newarray 8
            astore 6 /* authenticationTag */
        start local 6 // byte[] authenticationTag
         2: .line 333
            ldc "HmacSHA256"
            invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
            astore 7 /* hmac */
        start local 7 // javax.crypto.Mac hmac
         3: .line 334
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getMacKey:()[B
            ldc "HmacSHA256"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 8 /* key */
        start local 8 // javax.crypto.spec.SecretKeySpec key
         4: .line 335
            aload 7 /* hmac */
            aload 8 /* key */
            invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
         5: .line 336
            aload 7 /* hmac */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
            arraylength
            invokevirtual javax.crypto.Mac.update:([BII)V
         6: .line 337
            aload 7 /* hmac */
            aload 1 /* iv */
            iconst_0
            aload 1 /* iv */
            arraylength
            invokevirtual javax.crypto.Mac.update:([BII)V
         7: .line 338
            aload 7 /* hmac */
            aload 2 /* cipherText */
            iload 3 /* offset */
            iload 4 /* length */
            invokevirtual javax.crypto.Mac.update:([BII)V
         8: .line 339
            aload 7 /* hmac */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.versionSize:[B
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
            arraylength
            invokevirtual javax.crypto.Mac.update:([BII)V
         9: .line 340
            aload 7 /* hmac */
            invokevirtual javax.crypto.Mac.doFinal:()[B
            astore 5 /* computedHash */
        start local 5 // byte[] computedHash
        10: .line 341
            aload 5 /* computedHash */
            iconst_0
            aload 6 /* authenticationTag */
            iconst_0
            aload 6 /* authenticationTag */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 343
            aload 6 /* authenticationTag */
            areturn
        end local 8 // javax.crypto.spec.SecretKeySpec key
        end local 7 // javax.crypto.Mac hmac
        end local 6 // byte[] authenticationTag
        end local 5 // byte[] computedHash
        end local 4 // int length
        end local 3 // int offset
        end local 2 // byte[] cipherText
        end local 1 // byte[] iv
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
            0   12     1                 iv  [B
            0   12     2         cipherText  [B
            0   12     3             offset  I
            0   12     4             length  I
           10   12     5       computedHash  [B
            2   12     6  authenticationTag  [B
            3   12     7               hmac  Ljavax/crypto/Mac;
            4   12     8                key  Ljavax/crypto/spec/SecretKeySpec;
    Exceptions:
      throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException
    MethodParameters:
            Name  Flags
      iv          
      cipherText  
      offset      
      length      
}
SourceFile: "SQLServerAeadAes256CbcHmac256Algorithm.java"