public class com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider extends com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionKeyStoreProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider
  super_class: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionKeyStoreProvider
{
  private static final java.util.logging.Logger akvLogger;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int KEY_NAME_INDEX;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final int KEY_URL_SPLIT_LENGTH_WITH_VERSION;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  private static final java.lang.String KEY_URL_DELIMITER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "/"

  private static final java.lang.String NULL_VALUE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "R_NullValue"

  private com.azure.core.http.HttpPipeline keyVaultPipeline;
    descriptor: Lcom/azure/core/http/HttpPipeline;
    flags: (0x0002) ACC_PRIVATE

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

  java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  private static final java.lang.String MSSQL_JDBC_PROPERTIES;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "mssql-jdbc.properties"

  private static final java.lang.String AKV_TRUSTED_ENDPOINTS_KEYWORD;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "AKVTrustedEndpoints"

  private static final java.lang.String RSA_ENCRYPTION_ALGORITHM_WITH_OAEP_FOR_AKV;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "RSA-OAEP"

  private static final java.util.List<java.lang.String> akvTrustedEndpoints;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/String;>;

  private final byte[] firstVersion;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.util.Map<java.lang.String, com.azure.security.keyvault.keys.KeyClient> cachedKeyClients;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Lcom/azure/security/keyvault/keys/KeyClient;>;

  private java.util.Map<java.lang.String, com.azure.security.keyvault.keys.cryptography.CryptographyClient> cachedCryptographyClients;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;>;

  private com.azure.core.credential.TokenCredential credential;
    descriptor: Lcom/azure/core/credential/TokenCredential;
    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 54
            ldc Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            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.SQLServerColumnEncryptionAzureKeyVaultProvider.$assertionsDisabled:Z
         3: .line 57
            ldc "com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider"
            invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
         4: .line 56
            putstatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.akvLogger:Ljava/util/logging/Logger;
         5: .line 75
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getTrustedEndpoints:()Ljava/util/List;
            putstatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.akvTrustedEndpoints:Ljava/util/List;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void setName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String name
         0: .line 87
            aload 0 /* this */
            aload 1 /* name */
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.name:Ljava/lang/String;
         1: .line 88
            return
        end local 1 // java.lang.String name
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
         0: .line 91
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.name:Ljava/lang/String;
            areturn
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;

  public void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String clientId
        start local 2 // java.lang.String clientKey
         0: .line 105
            aload 0 /* this */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionKeyStoreProvider.<init>:()V
         1: .line 69
            aload 0 /* this */
            ldc "AZURE_KEY_VAULT"
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.name:Ljava/lang/String;
         2: .line 80
            aload 0 /* this */
            iconst_1
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
         3: .line 82
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
         4: .line 83
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
         5: .line 106
            aload 1 /* clientId */
            ifnull 6
            aload 1 /* clientId */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 9
         6: .line 107
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String java.lang.String
      StackMap stack:
            new java.text.MessageFormat
            dup
            ldc "R_NullValue"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 3 /* form */
        start local 3 // java.text.MessageFormat form
         7: .line 108
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Client ID"
            aastore
            astore 4 /* msgArgs1 */
        start local 4 // java.lang.Object[] msgArgs1
         8: .line 109
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 3 /* form */
            aload 4 /* msgArgs1 */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.Object[] msgArgs1
        end local 3 // java.text.MessageFormat form
         9: .line 111
      StackMap locals:
      StackMap stack:
            aload 2 /* clientKey */
            ifnull 10
            aload 2 /* clientKey */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 13
        10: .line 112
      StackMap locals:
      StackMap stack:
            new java.text.MessageFormat
            dup
            ldc "R_NullValue"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 3 /* form */
        start local 3 // java.text.MessageFormat form
        11: .line 113
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Client Key"
            aastore
            astore 4 /* msgArgs1 */
        start local 4 // java.lang.Object[] msgArgs1
        12: .line 114
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 3 /* form */
            aload 4 /* msgArgs1 */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.Object[] msgArgs1
        end local 3 // java.text.MessageFormat form
        13: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.microsoft.sqlserver.jdbc.KeyVaultTokenCredential
            dup
            aload 1 /* clientId */
            aload 2 /* clientKey */
            invokespecial com.microsoft.sqlserver.jdbc.KeyVaultTokenCredential.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.keyVaultTokenCredential:Lcom/microsoft/sqlserver/jdbc/KeyVaultTokenCredential;
        14: .line 120
            aload 0 /* this */
            new com.microsoft.sqlserver.jdbc.KeyVaultHttpPipelineBuilder
            dup
            invokespecial com.microsoft.sqlserver.jdbc.KeyVaultHttpPipelineBuilder.<init>:()V
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.keyVaultTokenCredential:Lcom/microsoft/sqlserver/jdbc/KeyVaultTokenCredential;
            invokevirtual com.microsoft.sqlserver.jdbc.KeyVaultHttpPipelineBuilder.credential:(Lcom/microsoft/sqlserver/jdbc/KeyVaultTokenCredential;)Lcom/microsoft/sqlserver/jdbc/KeyVaultHttpPipelineBuilder;
            invokevirtual com.microsoft.sqlserver.jdbc.KeyVaultHttpPipelineBuilder.buildPipeline:()Lcom/azure/core/http/HttpPipeline;
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.keyVaultPipeline:Lcom/azure/core/http/HttpPipeline;
        15: .line 121
            return
        end local 2 // java.lang.String clientKey
        end local 1 // java.lang.String clientId
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0       this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   16     1   clientId  Ljava/lang/String;
            0   16     2  clientKey  Ljava/lang/String;
            7    9     3       form  Ljava/text/MessageFormat;
            8    9     4   msgArgs1  [Ljava/lang/Object;
           11   13     3       form  Ljava/text/MessageFormat;
           12   13     4   msgArgs1  [Ljava/lang/Object;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
           Name  Flags
      clientId   
      clientKey  

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
         0: .line 130
            aload 0 /* this */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionKeyStoreProvider.<init>:()V
         1: .line 69
            aload 0 /* this */
            ldc "AZURE_KEY_VAULT"
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.name:Ljava/lang/String;
         2: .line 80
            aload 0 /* this */
            iconst_1
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
         3: .line 82
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
         4: .line 83
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
         5: .line 131
            aload 0 /* this */
            new com.azure.identity.ManagedIdentityCredentialBuilder
            dup
            invokespecial com.azure.identity.ManagedIdentityCredentialBuilder.<init>:()V
            invokevirtual com.azure.identity.ManagedIdentityCredentialBuilder.build:()Lcom/azure/identity/ManagedIdentityCredential;
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.setCredential:(Lcom/azure/core/credential/TokenCredential;)V
         6: .line 132
            return
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException

  void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String clientId
         0: .line 144
            aload 0 /* this */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionKeyStoreProvider.<init>:()V
         1: .line 69
            aload 0 /* this */
            ldc "AZURE_KEY_VAULT"
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.name:Ljava/lang/String;
         2: .line 80
            aload 0 /* this */
            iconst_1
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
         3: .line 82
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
         4: .line 83
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
         5: .line 145
            aload 1 /* clientId */
            ifnull 6
            aload 1 /* clientId */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 9
         6: .line 146
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String
      StackMap stack:
            new java.text.MessageFormat
            dup
            ldc "R_NullValue"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 2 /* form */
        start local 2 // java.text.MessageFormat form
         7: .line 147
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Client ID"
            aastore
            astore 3 /* msgArgs1 */
        start local 3 // java.lang.Object[] msgArgs1
         8: .line 148
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 2 /* form */
            aload 3 /* msgArgs1 */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Object[] msgArgs1
        end local 2 // java.text.MessageFormat form
         9: .line 150
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.azure.identity.ManagedIdentityCredentialBuilder
            dup
            invokespecial com.azure.identity.ManagedIdentityCredentialBuilder.<init>:()V
            aload 1 /* clientId */
            invokevirtual com.azure.identity.ManagedIdentityCredentialBuilder.clientId:(Ljava/lang/String;)Lcom/azure/identity/ManagedIdentityCredentialBuilder;
            invokevirtual com.azure.identity.ManagedIdentityCredentialBuilder.build:()Lcom/azure/identity/ManagedIdentityCredential;
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.setCredential:(Lcom/azure/core/credential/TokenCredential;)V
        10: .line 151
            return
        end local 1 // java.lang.String clientId
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   11     1  clientId  Ljava/lang/String;
            7    9     2      form  Ljava/text/MessageFormat;
            8    9     3  msgArgs1  [Ljava/lang/Object;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
          Name  Flags
      clientId  

  public void <init>(com.azure.core.credential.TokenCredential);
    descriptor: (Lcom/azure/core/credential/TokenCredential;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // com.azure.core.credential.TokenCredential tokenCredential
         0: .line 163
            aload 0 /* this */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionKeyStoreProvider.<init>:()V
         1: .line 69
            aload 0 /* this */
            ldc "AZURE_KEY_VAULT"
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.name:Ljava/lang/String;
         2: .line 80
            aload 0 /* this */
            iconst_1
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
         3: .line 82
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
         4: .line 83
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
         5: .line 164
            aload 1 /* tokenCredential */
            ifnonnull 9
         6: .line 165
            new java.text.MessageFormat
            dup
            ldc "R_NullValue"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 2 /* form */
        start local 2 // java.text.MessageFormat form
         7: .line 166
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Token Credential"
            aastore
            astore 3 /* msgArgs1 */
        start local 3 // java.lang.Object[] msgArgs1
         8: .line 167
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 2 /* form */
            aload 3 /* msgArgs1 */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Object[] msgArgs1
        end local 2 // java.text.MessageFormat form
         9: .line 170
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider com.azure.core.credential.TokenCredential
      StackMap stack:
            aload 0 /* this */
            aload 1 /* tokenCredential */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.setCredential:(Lcom/azure/core/credential/TokenCredential;)V
        10: .line 171
            return
        end local 1 // com.azure.core.credential.TokenCredential tokenCredential
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   11     1  tokenCredential  Lcom/azure/core/credential/TokenCredential;
            7    9     2             form  Ljava/text/MessageFormat;
            8    9     3         msgArgs1  [Ljava/lang/Object;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                 Name  Flags
      tokenCredential  

  public void <init>(com.microsoft.sqlserver.jdbc.SQLServerKeyVaultAuthenticationCallback);
    descriptor: (Lcom/microsoft/sqlserver/jdbc/SQLServerKeyVaultAuthenticationCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // com.microsoft.sqlserver.jdbc.SQLServerKeyVaultAuthenticationCallback authenticationCallback
         0: .line 185
            aload 0 /* this */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionKeyStoreProvider.<init>:()V
         1: .line 69
            aload 0 /* this */
            ldc "AZURE_KEY_VAULT"
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.name:Ljava/lang/String;
         2: .line 80
            aload 0 /* this */
            iconst_1
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
         3: .line 82
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
         4: .line 83
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
         5: .line 187
            aload 1 /* authenticationCallback */
            ifnonnull 9
         6: .line 188
            new java.text.MessageFormat
            dup
            ldc "R_NullValue"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 2 /* form */
        start local 2 // java.text.MessageFormat form
         7: .line 189
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "SQLServerKeyVaultAuthenticationCallback"
            aastore
            astore 3 /* msgArgs1 */
        start local 3 // java.lang.Object[] msgArgs1
         8: .line 190
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 2 /* form */
            aload 3 /* msgArgs1 */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Object[] msgArgs1
        end local 2 // java.text.MessageFormat form
         9: .line 193
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider com.microsoft.sqlserver.jdbc.SQLServerKeyVaultAuthenticationCallback
      StackMap stack:
            aload 0 /* this */
            new com.microsoft.sqlserver.jdbc.KeyVaultTokenCredential
            dup
            aload 1 /* authenticationCallback */
            invokespecial com.microsoft.sqlserver.jdbc.KeyVaultTokenCredential.<init>:(Lcom/microsoft/sqlserver/jdbc/SQLServerKeyVaultAuthenticationCallback;)V
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.keyVaultTokenCredential:Lcom/microsoft/sqlserver/jdbc/KeyVaultTokenCredential;
        10: .line 194
            aload 0 /* this */
            new com.microsoft.sqlserver.jdbc.KeyVaultHttpPipelineBuilder
            dup
            invokespecial com.microsoft.sqlserver.jdbc.KeyVaultHttpPipelineBuilder.<init>:()V
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.keyVaultTokenCredential:Lcom/microsoft/sqlserver/jdbc/KeyVaultTokenCredential;
            invokevirtual com.microsoft.sqlserver.jdbc.KeyVaultHttpPipelineBuilder.credential:(Lcom/microsoft/sqlserver/jdbc/KeyVaultTokenCredential;)Lcom/microsoft/sqlserver/jdbc/KeyVaultHttpPipelineBuilder;
            invokevirtual com.microsoft.sqlserver.jdbc.KeyVaultHttpPipelineBuilder.buildPipeline:()Lcom/azure/core/http/HttpPipeline;
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.keyVaultPipeline:Lcom/azure/core/http/HttpPipeline;
        11: .line 195
            return
        end local 1 // com.microsoft.sqlserver.jdbc.SQLServerKeyVaultAuthenticationCallback authenticationCallback
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   12     0                    this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   12     1  authenticationCallback  Lcom/microsoft/sqlserver/jdbc/SQLServerKeyVaultAuthenticationCallback;
            7    9     2                    form  Ljava/text/MessageFormat;
            8    9     3                msgArgs1  [Ljava/lang/Object;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                        Name  Flags
      authenticationCallback  

  private void setCredential(com.azure.core.credential.TokenCredential);
    descriptor: (Lcom/azure/core/credential/TokenCredential;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // com.azure.core.credential.TokenCredential credential
         0: .line 206
            aload 1 /* credential */
            ifnonnull 4
         1: .line 207
            new java.text.MessageFormat
            dup
            ldc "R_NullValue"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 2 /* form */
        start local 2 // java.text.MessageFormat form
         2: .line 208
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "Credential"
            aastore
            astore 3 /* msgArgs1 */
        start local 3 // java.lang.Object[] msgArgs1
         3: .line 209
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 2 /* form */
            aload 3 /* msgArgs1 */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Object[] msgArgs1
        end local 2 // java.text.MessageFormat form
         4: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* credential */
            putfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.credential:Lcom/azure/core/credential/TokenCredential;
         5: .line 213
            return
        end local 1 // com.azure.core.credential.TokenCredential credential
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0    6     1  credential  Lcom/azure/core/credential/TokenCredential;
            2    4     2        form  Ljava/text/MessageFormat;
            3    4     3    msgArgs1  [Ljava/lang/Object;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
            Name  Flags
      credential  

  public byte[] decryptColumnEncryptionKey(java.lang.String, java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;[B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=17, args_size=4
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
        start local 2 // java.lang.String encryptionAlgorithm
        start local 3 // byte[] encryptedColumnEncryptionKey
         0: .line 231
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.ValidateNonEmptyAKVPath:(Ljava/lang/String;)V
         1: .line 233
            aload 3 /* encryptedColumnEncryptionKey */
            ifnonnull 3
         2: .line 234
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_NullEncryptedColumnEncryptionKey"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         3: .line 237
      StackMap locals:
      StackMap stack:
            aload 3 /* encryptedColumnEncryptionKey */
            arraylength
            ifne 5
         4: .line 238
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_EmptyEncryptedColumnEncryptionKey"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         5: .line 242
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* encryptionAlgorithm */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.validateEncryptionAlgorithm:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
            astore 4 /* keyWrapAlgorithm */
        start local 4 // com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm keyWrapAlgorithm
         6: .line 245
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getAKVKeySize:(Ljava/lang/String;)I
            istore 5 /* keySizeInBytes */
        start local 5 // int keySizeInBytes
         7: .line 256
            aload 3 /* encryptedColumnEncryptionKey */
            iconst_0
            baload
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
            iconst_0
            baload
            if_icmpeq 15
         8: .line 257
            new java.text.MessageFormat
            dup
         9: .line 258
            ldc "R_InvalidEcryptionAlgorithmVersion"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
        10: .line 257
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 6 /* form */
        start local 6 // java.text.MessageFormat form
        11: .line 259
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "%02X "
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* encryptedColumnEncryptionKey */
            iconst_0
            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
        12: .line 260
            ldc "%02X "
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
            iconst_0
            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
        13: .line 259
            astore 7 /* msgArgs */
        start local 7 // java.lang.Object[] msgArgs
        14: .line 261
            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
        15: .line 265
      StackMap locals: com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm int
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
            arraylength
            istore 6 /* currentIndex */
        start local 6 // int currentIndex
        16: .line 266
            aload 0 /* this */
            aload 3 /* encryptedColumnEncryptionKey */
            iload 6 /* currentIndex */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.convertTwoBytesToShort:([BI)S
            istore 7 /* keyPathLength */
        start local 7 // short keyPathLength
        17: .line 268
            iinc 6 /* currentIndex */ 2
        18: .line 271
            aload 0 /* this */
            aload 3 /* encryptedColumnEncryptionKey */
            iload 6 /* currentIndex */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.convertTwoBytesToShort:([BI)S
            istore 8 /* cipherTextLength */
        start local 8 // short cipherTextLength
        19: .line 272
            iinc 6 /* currentIndex */ 2
        20: .line 276
            iload 6 /* currentIndex */
            iload 7 /* keyPathLength */
            iadd
            istore 6 /* currentIndex */
        21: .line 279
            iload 8 /* cipherTextLength */
            iload 5 /* keySizeInBytes */
            if_icmpeq 25
        22: .line 280
            new java.text.MessageFormat
            dup
            ldc "R_AKVKeyLengthError"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 9 /* form */
        start local 9 // java.text.MessageFormat form
        23: .line 281
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            iload 8 /* cipherTextLength */
            invokestatic java.lang.Short.valueOf:(S)Ljava/lang/Short;
            aastore
            dup
            iconst_1
            iload 5 /* keySizeInBytes */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 1 /* masterKeyPath */
            aastore
            astore 10 /* msgArgs */
        start local 10 // java.lang.Object[] msgArgs
        24: .line 282
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 9 /* form */
            aload 10 /* 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 10 // java.lang.Object[] msgArgs
        end local 9 // java.text.MessageFormat form
        25: .line 286
      StackMap locals: int int int
      StackMap stack:
            aload 3 /* encryptedColumnEncryptionKey */
            arraylength
            iload 6 /* currentIndex */
            isub
            iload 8 /* cipherTextLength */
            isub
            istore 9 /* signatureLength */
        start local 9 // int signatureLength
        26: .line 288
            iload 9 /* signatureLength */
            iload 5 /* keySizeInBytes */
            if_icmpeq 30
        27: .line 289
            new java.text.MessageFormat
            dup
            ldc "R_AKVSignatureLengthError"
            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
        28: .line 290
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            iload 9 /* signatureLength */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iload 5 /* keySizeInBytes */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 1 /* masterKeyPath */
            aastore
            astore 11 /* msgArgs */
        start local 11 // java.lang.Object[] msgArgs
        29: .line 291
            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
        30: .line 295
      StackMap locals: int
      StackMap stack:
            iload 8 /* cipherTextLength */
            newarray 8
            astore 10 /* cipherText */
        start local 10 // byte[] cipherText
        31: .line 296
            aload 3 /* encryptedColumnEncryptionKey */
            iload 6 /* currentIndex */
            aload 10 /* cipherText */
            iconst_0
            iload 8 /* cipherTextLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        32: .line 297
            iload 6 /* currentIndex */
            iload 8 /* cipherTextLength */
            iadd
            istore 6 /* currentIndex */
        33: .line 300
            iload 9 /* signatureLength */
            newarray 8
            astore 11 /* signature */
        start local 11 // byte[] signature
        34: .line 301
            aload 3 /* encryptedColumnEncryptionKey */
            iload 6 /* currentIndex */
            aload 11 /* signature */
            iconst_0
            iload 9 /* signatureLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        35: .line 304
            aload 3 /* encryptedColumnEncryptionKey */
            arraylength
            aload 11 /* signature */
            arraylength
            isub
            newarray 8
            astore 12 /* hash */
        start local 12 // byte[] hash
        36: .line 306
            aload 3 /* encryptedColumnEncryptionKey */
            iconst_0
            aload 12 /* hash */
            iconst_0
        37: .line 307
            aload 3 /* encryptedColumnEncryptionKey */
            arraylength
            aload 11 /* signature */
            arraylength
            isub
        38: .line 306
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        39: .line 309
            aconst_null
            astore 13 /* md */
        start local 13 // java.security.MessageDigest md
        40: .line 311
            ldc "SHA-256"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 13 /* md */
        41: .line 312
            goto 44
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String java.lang.String byte[] com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm int int int int int byte[] byte[] byte[] java.security.MessageDigest
      StackMap stack: java.security.NoSuchAlgorithmException
        42: astore 14 /* e */
        start local 14 // java.security.NoSuchAlgorithmException e
        43: .line 313
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_NoSHA256Algorithm"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aload 14 /* e */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 14 // java.security.NoSuchAlgorithmException e
        44: .line 315
      StackMap locals:
      StackMap stack:
            aload 13 /* md */
            aload 12 /* hash */
            invokevirtual java.security.MessageDigest.update:([B)V
        45: .line 316
            aload 13 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 14 /* dataToVerify */
        start local 14 // byte[] dataToVerify
        46: .line 318
            aload 14 /* dataToVerify */
            ifnonnull 48
        47: .line 319
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_HashNull"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        48: .line 323
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            aload 14 /* dataToVerify */
            aload 11 /* signature */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.AzureKeyVaultVerifySignature:([B[BLjava/lang/String;)Z
            ifne 52
        49: .line 324
            new java.text.MessageFormat
            dup
            ldc "R_CEKSignatureNotMatchCMK"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 15 /* form */
        start local 15 // java.text.MessageFormat form
        50: .line 325
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* masterKeyPath */
            aastore
            astore 16 /* msgArgs */
        start local 16 // java.lang.Object[] msgArgs
        51: .line 326
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 15 /* form */
            aload 16 /* 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 16 // java.lang.Object[] msgArgs
        end local 15 // java.text.MessageFormat form
        52: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            aload 4 /* keyWrapAlgorithm */
            aload 10 /* cipherText */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.AzureKeyVaultUnWrap:(Ljava/lang/String;Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;[B)[B
            astore 15 /* decryptedCEK */
        start local 15 // byte[] decryptedCEK
        53: .line 332
            aload 15 /* decryptedCEK */
            areturn
        end local 15 // byte[] decryptedCEK
        end local 14 // byte[] dataToVerify
        end local 13 // java.security.MessageDigest md
        end local 12 // byte[] hash
        end local 11 // byte[] signature
        end local 10 // byte[] cipherText
        end local 9 // int signatureLength
        end local 8 // short cipherTextLength
        end local 7 // short keyPathLength
        end local 6 // int currentIndex
        end local 5 // int keySizeInBytes
        end local 4 // com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm keyWrapAlgorithm
        end local 3 // byte[] encryptedColumnEncryptionKey
        end local 2 // java.lang.String encryptionAlgorithm
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   54     0                          this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   54     1                 masterKeyPath  Ljava/lang/String;
            0   54     2           encryptionAlgorithm  Ljava/lang/String;
            0   54     3  encryptedColumnEncryptionKey  [B
            6   54     4              keyWrapAlgorithm  Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
            7   54     5                keySizeInBytes  I
           11   15     6                          form  Ljava/text/MessageFormat;
           14   15     7                       msgArgs  [Ljava/lang/Object;
           16   54     6                  currentIndex  I
           17   54     7                 keyPathLength  S
           19   54     8              cipherTextLength  S
           23   25     9                          form  Ljava/text/MessageFormat;
           24   25    10                       msgArgs  [Ljava/lang/Object;
           26   54     9               signatureLength  I
           28   30    10                          form  Ljava/text/MessageFormat;
           29   30    11                       msgArgs  [Ljava/lang/Object;
           31   54    10                    cipherText  [B
           34   54    11                     signature  [B
           36   54    12                          hash  [B
           40   54    13                            md  Ljava/security/MessageDigest;
           43   44    14                             e  Ljava/security/NoSuchAlgorithmException;
           46   54    14                  dataToVerify  [B
           50   52    15                          form  Ljava/text/MessageFormat;
           51   52    16                       msgArgs  [Ljava/lang/Object;
           53   54    15                  decryptedCEK  [B
      Exception table:
        from    to  target  type
          40    41      42  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                              Name  Flags
      masterKeyPath                 
      encryptionAlgorithm           
      encryptedColumnEncryptionKey  

  private short convertTwoBytesToShort(byte[], int);
    descriptor: ([BI)S
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // byte[] input
        start local 2 // int index
         0: .line 338
            iload 2 /* index */
            iconst_1
            iadd
            aload 1 /* input */
            arraylength
            if_icmplt 4
         1: .line 339
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aconst_null
            ldc "R_ByteToShortConversion"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            iconst_0
         2: .line 340
            iconst_0
         3: .line 339
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
         4: .line 342
      StackMap locals:
      StackMap stack:
            iconst_2
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 4 /* byteBuffer */
        start local 4 // java.nio.ByteBuffer byteBuffer
         5: .line 343
            aload 4 /* byteBuffer */
            getstatic java.nio.ByteOrder.LITTLE_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
         6: .line 344
            aload 4 /* byteBuffer */
            aload 1 /* input */
            iload 2 /* index */
            baload
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         7: .line 345
            aload 4 /* byteBuffer */
            aload 1 /* input */
            iload 2 /* index */
            iconst_1
            iadd
            baload
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         8: .line 346
            aload 4 /* byteBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.getShort:(I)S
            istore 3 /* shortVal */
        start local 3 // short shortVal
         9: .line 347
            iload 3 /* shortVal */
            ireturn
        end local 4 // java.nio.ByteBuffer byteBuffer
        end local 3 // short shortVal
        end local 2 // int index
        end local 1 // byte[] input
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   10     1       input  [B
            0   10     2       index  I
            9   10     3    shortVal  S
            5   10     4  byteBuffer  Ljava/nio/ByteBuffer;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
       Name  Flags
      input  
      index  

  public byte[] encryptColumnEncryptionKey(java.lang.String, java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;Ljava/lang/String;[B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=19, args_size=4
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
        start local 2 // java.lang.String encryptionAlgorithm
        start local 3 // byte[] columnEncryptionKey
         0: .line 367
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.ValidateNonEmptyAKVPath:(Ljava/lang/String;)V
         1: .line 369
            aload 3 /* columnEncryptionKey */
            ifnonnull 3
         2: .line 370
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_NullColumnEncryptionKey"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         3: .line 373
      StackMap locals:
      StackMap stack:
            aload 3 /* columnEncryptionKey */
            arraylength
            ifne 5
         4: .line 374
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_EmptyCEK"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         5: .line 378
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* encryptionAlgorithm */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.validateEncryptionAlgorithm:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
            astore 4 /* keyWrapAlgorithm */
        start local 4 // com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm keyWrapAlgorithm
         6: .line 381
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getAKVKeySize:(Ljava/lang/String;)I
            istore 5 /* keySizeInBytes */
        start local 5 // int keySizeInBytes
         7: .line 388
            iconst_1
            newarray 8
            dup
            iconst_0
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.firstVersion:[B
            iconst_0
            baload
            bastore
            astore 6 /* version */
        start local 6 // byte[] version
         8: .line 391
            aload 1 /* masterKeyPath */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_16LE:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 7 /* masterKeyPathBytes */
        start local 7 // byte[] masterKeyPathBytes
         9: .line 393
            iconst_2
            newarray 8
            astore 8 /* keyPathLength */
        start local 8 // byte[] keyPathLength
        10: .line 394
            aload 8 /* keyPathLength */
            iconst_0
            aload 7 /* masterKeyPathBytes */
            arraylength
            i2s
            sipush 255
            iand
            i2b
            bastore
        11: .line 395
            aload 8 /* keyPathLength */
            iconst_1
            aload 7 /* masterKeyPathBytes */
            arraylength
            i2s
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
        12: .line 398
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            aload 4 /* keyWrapAlgorithm */
            aload 3 /* columnEncryptionKey */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.AzureKeyVaultWrap:(Ljava/lang/String;Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;[B)[B
            astore 9 /* cipherText */
        start local 9 // byte[] cipherText
        13: .line 400
            iconst_2
            newarray 8
            astore 10 /* cipherTextLength */
        start local 10 // byte[] cipherTextLength
        14: .line 401
            aload 10 /* cipherTextLength */
            iconst_0
            aload 9 /* cipherText */
            arraylength
            i2s
            sipush 255
            iand
            i2b
            bastore
        15: .line 402
            aload 10 /* cipherTextLength */
            iconst_1
            aload 9 /* cipherText */
            arraylength
            i2s
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            bastore
        16: .line 404
            aload 9 /* cipherText */
            arraylength
            iload 5 /* keySizeInBytes */
            if_icmpeq 18
        17: .line 405
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_CipherTextLengthNotMatchRSASize"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        18: .line 410
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String java.lang.String byte[] com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm int byte[] byte[] byte[] byte[] byte[]
      StackMap stack:
            aload 6 /* version */
            arraylength
            aload 8 /* keyPathLength */
            arraylength
            iadd
            aload 10 /* cipherTextLength */
            arraylength
            iadd
        19: .line 411
            aload 7 /* masterKeyPathBytes */
            arraylength
        20: .line 410
            iadd
        21: .line 411
            aload 9 /* cipherText */
            arraylength
        22: .line 410
            iadd
            newarray 8
            astore 11 /* dataToHash */
        start local 11 // byte[] dataToHash
        23: .line 412
            aload 6 /* version */
            arraylength
            istore 12 /* destinationPosition */
        start local 12 // int destinationPosition
        24: .line 413
            aload 6 /* version */
            iconst_0
            aload 11 /* dataToHash */
            iconst_0
            aload 6 /* version */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        25: .line 415
            aload 8 /* keyPathLength */
            iconst_0
            aload 11 /* dataToHash */
            iload 12 /* destinationPosition */
            aload 8 /* keyPathLength */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        26: .line 416
            iload 12 /* destinationPosition */
            aload 8 /* keyPathLength */
            arraylength
            iadd
            istore 12 /* destinationPosition */
        27: .line 418
            aload 10 /* cipherTextLength */
            iconst_0
            aload 11 /* dataToHash */
            iload 12 /* destinationPosition */
            aload 10 /* cipherTextLength */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        28: .line 419
            iload 12 /* destinationPosition */
            aload 10 /* cipherTextLength */
            arraylength
            iadd
            istore 12 /* destinationPosition */
        29: .line 421
            aload 7 /* masterKeyPathBytes */
            iconst_0
            aload 11 /* dataToHash */
            iload 12 /* destinationPosition */
            aload 7 /* masterKeyPathBytes */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        30: .line 422
            iload 12 /* destinationPosition */
            aload 7 /* masterKeyPathBytes */
            arraylength
            iadd
            istore 12 /* destinationPosition */
        31: .line 424
            aload 9 /* cipherText */
            iconst_0
            aload 11 /* dataToHash */
            iload 12 /* destinationPosition */
            aload 9 /* cipherText */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        32: .line 426
            aconst_null
            astore 13 /* md */
        start local 13 // java.security.MessageDigest md
        33: .line 428
            ldc "SHA-256"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 13 /* md */
        34: .line 429
            goto 37
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String java.lang.String byte[] com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm int byte[] byte[] byte[] byte[] byte[] byte[] int java.security.MessageDigest
      StackMap stack: java.security.NoSuchAlgorithmException
        35: astore 14 /* e */
        start local 14 // java.security.NoSuchAlgorithmException e
        36: .line 430
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_NoSHA256Algorithm"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aload 14 /* e */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 14 // java.security.NoSuchAlgorithmException e
        37: .line 432
      StackMap locals:
      StackMap stack:
            aload 13 /* md */
            aload 11 /* dataToHash */
            invokevirtual java.security.MessageDigest.update:([B)V
        38: .line 433
            aload 13 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 14 /* dataToSign */
        start local 14 // byte[] dataToSign
        39: .line 436
            aload 0 /* this */
            aload 14 /* dataToSign */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.AzureKeyVaultSignHashedData:([BLjava/lang/String;)[B
            astore 15 /* signedHash */
        start local 15 // byte[] signedHash
        40: .line 438
            aload 15 /* signedHash */
            arraylength
            iload 5 /* keySizeInBytes */
            if_icmpeq 42
        41: .line 439
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_SignedHashLengthError"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        42: .line 442
      StackMap locals: byte[] byte[]
      StackMap stack:
            aload 0 /* this */
            aload 14 /* dataToSign */
            aload 15 /* signedHash */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.AzureKeyVaultVerifySignature:([B[BLjava/lang/String;)Z
            ifne 44
        43: .line 443
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_InvalidSignatureComputed"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        44: .line 448
      StackMap locals:
      StackMap stack:
            aload 6 /* version */
            arraylength
            aload 10 /* cipherTextLength */
            arraylength
            iadd
            aload 8 /* keyPathLength */
            arraylength
            iadd
        45: .line 449
            aload 9 /* cipherText */
            arraylength
        46: .line 448
            iadd
        47: .line 449
            aload 7 /* masterKeyPathBytes */
            arraylength
        48: .line 448
            iadd
        49: .line 449
            aload 15 /* signedHash */
            arraylength
        50: .line 448
            iadd
            istore 16 /* encryptedColumnEncryptionKeyLength */
        start local 16 // int encryptedColumnEncryptionKeyLength
        51: .line 450
            iload 16 /* encryptedColumnEncryptionKeyLength */
            newarray 8
            astore 17 /* encryptedColumnEncryptionKey */
        start local 17 // byte[] encryptedColumnEncryptionKey
        52: .line 453
            iconst_0
            istore 18 /* currentIndex */
        start local 18 // int currentIndex
        53: .line 454
            aload 6 /* version */
            iconst_0
            aload 17 /* encryptedColumnEncryptionKey */
            iload 18 /* currentIndex */
            aload 6 /* version */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        54: .line 455
            iload 18 /* currentIndex */
            aload 6 /* version */
            arraylength
            iadd
            istore 18 /* currentIndex */
        55: .line 458
            aload 8 /* keyPathLength */
            iconst_0
            aload 17 /* encryptedColumnEncryptionKey */
            iload 18 /* currentIndex */
            aload 8 /* keyPathLength */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        56: .line 459
            iload 18 /* currentIndex */
            aload 8 /* keyPathLength */
            arraylength
            iadd
            istore 18 /* currentIndex */
        57: .line 462
            aload 10 /* cipherTextLength */
            iconst_0
            aload 17 /* encryptedColumnEncryptionKey */
            iload 18 /* currentIndex */
            aload 10 /* cipherTextLength */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        58: .line 463
            iload 18 /* currentIndex */
            aload 10 /* cipherTextLength */
            arraylength
            iadd
            istore 18 /* currentIndex */
        59: .line 466
            aload 7 /* masterKeyPathBytes */
            iconst_0
            aload 17 /* encryptedColumnEncryptionKey */
            iload 18 /* currentIndex */
            aload 7 /* masterKeyPathBytes */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        60: .line 467
            iload 18 /* currentIndex */
            aload 7 /* masterKeyPathBytes */
            arraylength
            iadd
            istore 18 /* currentIndex */
        61: .line 470
            aload 9 /* cipherText */
            iconst_0
            aload 17 /* encryptedColumnEncryptionKey */
            iload 18 /* currentIndex */
            aload 9 /* cipherText */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        62: .line 471
            iload 18 /* currentIndex */
            aload 9 /* cipherText */
            arraylength
            iadd
            istore 18 /* currentIndex */
        63: .line 474
            aload 15 /* signedHash */
            iconst_0
            aload 17 /* encryptedColumnEncryptionKey */
            iload 18 /* currentIndex */
            aload 15 /* signedHash */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        64: .line 476
            aload 17 /* encryptedColumnEncryptionKey */
            areturn
        end local 18 // int currentIndex
        end local 17 // byte[] encryptedColumnEncryptionKey
        end local 16 // int encryptedColumnEncryptionKeyLength
        end local 15 // byte[] signedHash
        end local 14 // byte[] dataToSign
        end local 13 // java.security.MessageDigest md
        end local 12 // int destinationPosition
        end local 11 // byte[] dataToHash
        end local 10 // byte[] cipherTextLength
        end local 9 // byte[] cipherText
        end local 8 // byte[] keyPathLength
        end local 7 // byte[] masterKeyPathBytes
        end local 6 // byte[] version
        end local 5 // int keySizeInBytes
        end local 4 // com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm keyWrapAlgorithm
        end local 3 // byte[] columnEncryptionKey
        end local 2 // java.lang.String encryptionAlgorithm
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0   65     0                                this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   65     1                       masterKeyPath  Ljava/lang/String;
            0   65     2                 encryptionAlgorithm  Ljava/lang/String;
            0   65     3                 columnEncryptionKey  [B
            6   65     4                    keyWrapAlgorithm  Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
            7   65     5                      keySizeInBytes  I
            8   65     6                             version  [B
            9   65     7                  masterKeyPathBytes  [B
           10   65     8                       keyPathLength  [B
           13   65     9                          cipherText  [B
           14   65    10                    cipherTextLength  [B
           23   65    11                          dataToHash  [B
           24   65    12                 destinationPosition  I
           33   65    13                                  md  Ljava/security/MessageDigest;
           36   37    14                                   e  Ljava/security/NoSuchAlgorithmException;
           39   65    14                          dataToSign  [B
           40   65    15                          signedHash  [B
           51   65    16  encryptedColumnEncryptionKeyLength  I
           52   65    17        encryptedColumnEncryptionKey  [B
           53   65    18                        currentIndex  I
      Exception table:
        from    to  target  type
          33    34      35  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                     Name  Flags
      masterKeyPath        
      encryptionAlgorithm  
      columnEncryptionKey  

  private com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm validateEncryptionAlgorithm(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String encryptionAlgorithm
         0: .line 489
            aload 1 /* encryptionAlgorithm */
            ifnonnull 4
         1: .line 490
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aconst_null
            ldc "R_NullKeyEncryptionAlgorithm"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            iconst_0
         2: .line 491
            iconst_0
         3: .line 490
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
         4: .line 495
      StackMap locals:
      StackMap stack:
            ldc "RSA_OAEP"
            aload 1 /* encryptionAlgorithm */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 6
         5: .line 496
            ldc "RSA-OAEP"
            astore 1 /* encryptionAlgorithm */
         6: .line 499
      StackMap locals:
      StackMap stack:
            ldc "RSA-OAEP"
            aload 1 /* encryptionAlgorithm */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 10
         7: .line 500
            new java.text.MessageFormat
            dup
            ldc "R_InvalidKeyEncryptionAlgorithm"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 2 /* form */
        start local 2 // java.text.MessageFormat form
         8: .line 501
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* encryptionAlgorithm */
            aastore
            dup
            iconst_1
            ldc "RSA-OAEP"
            aastore
            astore 3 /* msgArgs */
        start local 3 // java.lang.Object[] msgArgs
         9: .line 502
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 2 /* form */
            aload 3 /* 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 3 // java.lang.Object[] msgArgs
        end local 2 // java.text.MessageFormat form
        10: .line 505
      StackMap locals:
      StackMap stack:
            aload 1 /* encryptionAlgorithm */
            invokestatic com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm.fromString:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
            areturn
        end local 1 // java.lang.String encryptionAlgorithm
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   11     0                 this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   11     1  encryptionAlgorithm  Ljava/lang/String;
            8   10     2                 form  Ljava/text/MessageFormat;
            9   10     3              msgArgs  [Ljava/lang/Object;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                     Name  Flags
      encryptionAlgorithm  

  private void ValidateNonEmptyAKVPath(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
         0: .line 516
            aload 1 /* masterKeyPath */
            ifnull 1
            aload 1 /* masterKeyPath */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 4
         1: .line 517
      StackMap locals:
      StackMap stack:
            new java.text.MessageFormat
            dup
            ldc "R_AKVPathNull"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 2 /* form */
        start local 2 // java.text.MessageFormat form
         2: .line 518
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* masterKeyPath */
            aastore
            astore 3 /* msgArgs */
        start local 3 // java.lang.Object[] msgArgs
         3: .line 519
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aconst_null
            aload 2 /* form */
            aload 3 /* 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 3 // java.lang.Object[] msgArgs
        end local 2 // java.text.MessageFormat form
         4: .line 521
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 2 /* parsedUri */
        start local 2 // java.net.URI parsedUri
         5: .line 523
            new java.net.URI
            dup
            aload 1 /* masterKeyPath */
            invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
            astore 2 /* parsedUri */
         6: .line 527
            aload 2 /* parsedUri */
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            astore 3 /* host */
        start local 3 // java.lang.String host
         7: .line 528
            aload 3 /* host */
            ifnull 9
         8: .line 529
            aload 3 /* host */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 3 /* host */
         9: .line 531
      StackMap locals: java.net.URI java.lang.String
      StackMap stack:
            getstatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.akvTrustedEndpoints:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 13
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String java.net.URI java.lang.String top java.util.Iterator
      StackMap stack:
        10: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* endpoint */
        start local 4 // java.lang.String endpoint
        11: .line 532
            aload 3 /* host */
            ifnull 13
            aload 3 /* host */
            aload 4 /* endpoint */
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 13
        12: .line 533
            return
        end local 4 // java.lang.String endpoint
        13: .line 531
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        end local 3 // java.lang.String host
        14: .line 536
            goto 19
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String java.net.URI
      StackMap stack: java.net.URISyntaxException
        15: astore 3 /* e */
        start local 3 // java.net.URISyntaxException e
        16: .line 537
            new java.text.MessageFormat
            dup
            ldc "R_AKVURLInvalid"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 4 /* form */
        start local 4 // java.text.MessageFormat form
        17: .line 538
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* masterKeyPath */
            aastore
            astore 5 /* msgArgs */
        start local 5 // java.lang.Object[] msgArgs
        18: .line 539
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 4 /* form */
            aload 5 /* msgArgs */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            iconst_0
            aload 3 /* e */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.Object[] msgArgs
        end local 4 // java.text.MessageFormat form
        end local 3 // java.net.URISyntaxException e
        19: .line 542
      StackMap locals:
      StackMap stack:
            new java.text.MessageFormat
            dup
            ldc "R_AKVMasterKeyPathInvalid"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 3 /* form */
        start local 3 // java.text.MessageFormat form
        20: .line 543
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* masterKeyPath */
            aastore
            astore 4 /* msgArgs */
        start local 4 // java.lang.Object[] msgArgs
        21: .line 544
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aconst_null
            aload 3 /* form */
            aload 4 /* 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 4 // java.lang.Object[] msgArgs
        end local 3 // java.text.MessageFormat form
        end local 2 // java.net.URI parsedUri
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   22     0           this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   22     1  masterKeyPath  Ljava/lang/String;
            2    4     2           form  Ljava/text/MessageFormat;
            3    4     3        msgArgs  [Ljava/lang/Object;
            5   22     2      parsedUri  Ljava/net/URI;
            7   14     3           host  Ljava/lang/String;
           11   13     4       endpoint  Ljava/lang/String;
           16   19     3              e  Ljava/net/URISyntaxException;
           17   19     4           form  Ljava/text/MessageFormat;
           18   19     5        msgArgs  [Ljava/lang/Object;
           20   22     3           form  Ljava/text/MessageFormat;
           21   22     4        msgArgs  [Ljava/lang/Object;
      Exception table:
        from    to  target  type
           5    12      15  Class java.net.URISyntaxException
          13    14      15  Class java.net.URISyntaxException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
               Name  Flags
      masterKeyPath  

  private byte[] AzureKeyVaultWrap(java.lang.String, com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm, byte[]);
    descriptor: (Ljava/lang/String;Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;[B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
        start local 2 // com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm encryptionAlgorithm
        start local 3 // byte[] columnEncryptionKey
         0: .line 562
            aload 3 /* columnEncryptionKey */
            ifnonnull 2
         1: .line 563
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_CEKNull"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         2: .line 566
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getCryptographyClient:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
            astore 4 /* cryptoClient */
        start local 4 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
         3: .line 567
            aload 4 /* cryptoClient */
            getstatic com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm.RSA_OAEP:Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
            aload 3 /* columnEncryptionKey */
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClient.wrapKey:(Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;[B)Lcom/azure/security/keyvault/keys/cryptography/models/WrapResult;
            astore 5 /* wrappedKey */
        start local 5 // com.azure.security.keyvault.keys.cryptography.models.WrapResult wrappedKey
         4: .line 568
            aload 5 /* wrappedKey */
            invokevirtual com.azure.security.keyvault.keys.cryptography.models.WrapResult.getEncryptedKey:()[B
            areturn
        end local 5 // com.azure.security.keyvault.keys.cryptography.models.WrapResult wrappedKey
        end local 4 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
        end local 3 // byte[] columnEncryptionKey
        end local 2 // com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm encryptionAlgorithm
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    5     0                 this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0    5     1        masterKeyPath  Ljava/lang/String;
            0    5     2  encryptionAlgorithm  Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
            0    5     3  columnEncryptionKey  [B
            3    5     4         cryptoClient  Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
            4    5     5           wrappedKey  Lcom/azure/security/keyvault/keys/cryptography/models/WrapResult;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                     Name  Flags
      masterKeyPath        
      encryptionAlgorithm  
      columnEncryptionKey  

  private byte[] AzureKeyVaultUnWrap(java.lang.String, com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm, byte[]);
    descriptor: (Ljava/lang/String;Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;[B)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
        start local 2 // com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm encryptionAlgorithm
        start local 3 // byte[] encryptedColumnEncryptionKey
         0: .line 585
            aload 3 /* encryptedColumnEncryptionKey */
            ifnonnull 2
         1: .line 586
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_EncryptedCEKNull"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         2: .line 589
      StackMap locals:
      StackMap stack:
            aload 3 /* encryptedColumnEncryptionKey */
            arraylength
            ifne 4
         3: .line 590
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_EmptyEncryptedCEK"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         4: .line 593
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getCryptographyClient:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
            astore 4 /* cryptoClient */
        start local 4 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
         5: .line 595
            aload 4 /* cryptoClient */
            aload 2 /* encryptionAlgorithm */
            aload 3 /* encryptedColumnEncryptionKey */
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClient.unwrapKey:(Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;[B)Lcom/azure/security/keyvault/keys/cryptography/models/UnwrapResult;
            astore 5 /* unwrappedKey */
        start local 5 // com.azure.security.keyvault.keys.cryptography.models.UnwrapResult unwrappedKey
         6: .line 597
            aload 5 /* unwrappedKey */
            invokevirtual com.azure.security.keyvault.keys.cryptography.models.UnwrapResult.getKey:()[B
            areturn
        end local 5 // com.azure.security.keyvault.keys.cryptography.models.UnwrapResult unwrappedKey
        end local 4 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
        end local 3 // byte[] encryptedColumnEncryptionKey
        end local 2 // com.azure.security.keyvault.keys.cryptography.models.KeyWrapAlgorithm encryptionAlgorithm
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0    7     0                          this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0    7     1                 masterKeyPath  Ljava/lang/String;
            0    7     2           encryptionAlgorithm  Lcom/azure/security/keyvault/keys/cryptography/models/KeyWrapAlgorithm;
            0    7     3  encryptedColumnEncryptionKey  [B
            5    7     4                  cryptoClient  Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
            6    7     5                  unwrappedKey  Lcom/azure/security/keyvault/keys/cryptography/models/UnwrapResult;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                              Name  Flags
      masterKeyPath                 
      encryptionAlgorithm           
      encryptedColumnEncryptionKey  

  private com.azure.security.keyvault.keys.cryptography.CryptographyClient getCryptographyClient(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
         0: .line 601
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
            aload 1 /* masterKeyPath */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 602
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
            aload 1 /* masterKeyPath */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.azure.security.keyvault.keys.cryptography.CryptographyClient
            areturn
         2: .line 605
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getKeyVaultKey:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
            astore 2 /* retrievedKey */
        start local 2 // com.azure.security.keyvault.keys.models.KeyVaultKey retrievedKey
         3: .line 608
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.credential:Lcom/azure/core/credential/TokenCredential;
            ifnull 8
         4: .line 609
            new com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder
            dup
            invokespecial com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder.<init>:()V
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.credential:Lcom/azure/core/credential/TokenCredential;
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder.credential:(Lcom/azure/core/credential/TokenCredential;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClientBuilder;
            aload 2 /* retrievedKey */
            invokevirtual com.azure.security.keyvault.keys.models.KeyVaultKey.getId:()Ljava/lang/String;
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder.keyIdentifier:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClientBuilder;
         5: .line 610
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder.buildClient:()Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
         6: .line 609
            astore 3 /* cryptoClient */
        start local 3 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
         7: .line 611
            goto 11
        end local 3 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
         8: .line 612
      StackMap locals: com.azure.security.keyvault.keys.models.KeyVaultKey
      StackMap stack:
            new com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder
            dup
            invokespecial com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder.<init>:()V
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.keyVaultPipeline:Lcom/azure/core/http/HttpPipeline;
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder.pipeline:(Lcom/azure/core/http/HttpPipeline;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClientBuilder;
         9: .line 613
            aload 2 /* retrievedKey */
            invokevirtual com.azure.security.keyvault.keys.models.KeyVaultKey.getId:()Ljava/lang/String;
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder.keyIdentifier:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClientBuilder;
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder.buildClient:()Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
        10: .line 612
            astore 3 /* cryptoClient */
        start local 3 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
        11: .line 615
      StackMap locals: com.azure.security.keyvault.keys.cryptography.CryptographyClient
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
            aload 1 /* masterKeyPath */
            aload 3 /* cryptoClient */
            invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 616
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedCryptographyClients:Ljava/util/Map;
            aload 1 /* masterKeyPath */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.azure.security.keyvault.keys.cryptography.CryptographyClient
            areturn
        end local 3 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
        end local 2 // com.azure.security.keyvault.keys.models.KeyVaultKey retrievedKey
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   13     0           this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   13     1  masterKeyPath  Ljava/lang/String;
            3   13     2   retrievedKey  Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
            7    8     3   cryptoClient  Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
           11   13     3   cryptoClient  Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
               Name  Flags
      masterKeyPath  

  private byte[] AzureKeyVaultSignHashedData(byte[], java.lang.String);
    descriptor: ([BLjava/lang/String;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // byte[] dataToSign
        start local 2 // java.lang.String masterKeyPath
         0: .line 630
            getstatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.$assertionsDisabled:Z
            ifne 2
            aload 1 /* dataToSign */
            ifnull 1
            aload 1 /* dataToSign */
            arraylength
            ifne 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 632
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getCryptographyClient:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
            astore 3 /* cryptoClient */
        start local 3 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
         3: .line 633
            aload 3 /* cryptoClient */
            getstatic com.azure.security.keyvault.keys.cryptography.models.SignatureAlgorithm.RS256:Lcom/azure/security/keyvault/keys/cryptography/models/SignatureAlgorithm;
            aload 1 /* dataToSign */
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClient.sign:(Lcom/azure/security/keyvault/keys/cryptography/models/SignatureAlgorithm;[B)Lcom/azure/security/keyvault/keys/cryptography/models/SignResult;
            astore 4 /* signedData */
        start local 4 // com.azure.security.keyvault.keys.cryptography.models.SignResult signedData
         4: .line 634
            aload 4 /* signedData */
            invokevirtual com.azure.security.keyvault.keys.cryptography.models.SignResult.getSignature:()[B
            areturn
        end local 4 // com.azure.security.keyvault.keys.cryptography.models.SignResult signedData
        end local 3 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
        end local 2 // java.lang.String masterKeyPath
        end local 1 // byte[] dataToSign
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0    5     1     dataToSign  [B
            0    5     2  masterKeyPath  Ljava/lang/String;
            3    5     3   cryptoClient  Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
            4    5     4     signedData  Lcom/azure/security/keyvault/keys/cryptography/models/SignResult;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
               Name  Flags
      dataToSign     
      masterKeyPath  

  private boolean AzureKeyVaultVerifySignature(byte[], byte[], java.lang.String);
    descriptor: ([B[BLjava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // byte[] dataToVerify
        start local 2 // byte[] signature
        start local 3 // java.lang.String masterKeyPath
         0: .line 649
            getstatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.$assertionsDisabled:Z
            ifne 2
            aload 1 /* dataToVerify */
            ifnull 1
            aload 1 /* dataToVerify */
            arraylength
            ifne 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 650
      StackMap locals:
      StackMap stack:
            getstatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.$assertionsDisabled:Z
            ifne 4
            aload 2 /* signature */
            ifnull 3
            aload 2 /* signature */
            arraylength
            ifne 4
      StackMap locals:
      StackMap stack:
         3: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 652
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getCryptographyClient:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
            astore 4 /* cryptoClient */
        start local 4 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
         5: .line 653
            aload 4 /* cryptoClient */
            getstatic com.azure.security.keyvault.keys.cryptography.models.SignatureAlgorithm.RS256:Lcom/azure/security/keyvault/keys/cryptography/models/SignatureAlgorithm;
            aload 1 /* dataToVerify */
            aload 2 /* signature */
            invokevirtual com.azure.security.keyvault.keys.cryptography.CryptographyClient.verify:(Lcom/azure/security/keyvault/keys/cryptography/models/SignatureAlgorithm;[B[B)Lcom/azure/security/keyvault/keys/cryptography/models/VerifyResult;
            astore 5 /* valid */
        start local 5 // com.azure.security.keyvault.keys.cryptography.models.VerifyResult valid
         6: .line 655
            aload 5 /* valid */
            invokevirtual com.azure.security.keyvault.keys.cryptography.models.VerifyResult.isValid:()Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 5 // com.azure.security.keyvault.keys.cryptography.models.VerifyResult valid
        end local 4 // com.azure.security.keyvault.keys.cryptography.CryptographyClient cryptoClient
        end local 3 // java.lang.String masterKeyPath
        end local 2 // byte[] signature
        end local 1 // byte[] dataToVerify
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0    7     1   dataToVerify  [B
            0    7     2      signature  [B
            0    7     3  masterKeyPath  Ljava/lang/String;
            5    7     4   cryptoClient  Lcom/azure/security/keyvault/keys/cryptography/CryptographyClient;
            6    7     5          valid  Lcom/azure/security/keyvault/keys/cryptography/models/VerifyResult;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
               Name  Flags
      dataToVerify   
      signature      
      masterKeyPath  

  private int getAKVKeySize(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
         0: .line 668
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getKeyVaultKey:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
            astore 2 /* retrievedKey */
        start local 2 // com.azure.security.keyvault.keys.models.KeyVaultKey retrievedKey
         1: .line 669
            aload 2 /* retrievedKey */
            invokevirtual com.azure.security.keyvault.keys.models.KeyVaultKey.getKey:()Lcom/azure/security/keyvault/keys/models/JsonWebKey;
            invokevirtual com.azure.security.keyvault.keys.models.JsonWebKey.getN:()[B
            arraylength
            ireturn
        end local 2 // com.azure.security.keyvault.keys.models.KeyVaultKey retrievedKey
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0    2     1  masterKeyPath  Ljava/lang/String;
            1    2     2   retrievedKey  Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
               Name  Flags
      masterKeyPath  

  private com.azure.security.keyvault.keys.models.KeyVaultKey getKeyVaultKey(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=9, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
         0: .line 683
            aload 1 /* masterKeyPath */
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* keyTokens */
        start local 2 // java.lang.String[] keyTokens
         1: .line 684
            aload 2 /* keyTokens */
            iconst_4
            aaload
            astore 3 /* keyName */
        start local 3 // java.lang.String keyName
         2: .line 685
            aconst_null
            astore 4 /* keyVersion */
        start local 4 // java.lang.String keyVersion
         3: .line 686
            aload 2 /* keyTokens */
            arraylength
            bipush 6
            if_icmpne 5
         4: .line 687
            aload 2 /* keyTokens */
            aload 2 /* keyTokens */
            arraylength
            iconst_1
            isub
            aaload
            astore 4 /* keyVersion */
         5: .line 691
      StackMap locals: java.lang.String[] java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getKeyClient:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/KeyClient;
            astore 5 /* keyClient */
        start local 5 // com.azure.security.keyvault.keys.KeyClient keyClient
         6: .line 693
            aload 4 /* keyVersion */
            ifnull 9
         7: .line 694
            aload 5 /* keyClient */
            aload 3 /* keyName */
            aload 4 /* keyVersion */
            invokevirtual com.azure.security.keyvault.keys.KeyClient.getKey:(Ljava/lang/String;Ljava/lang/String;)Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
            astore 6 /* retrievedKey */
        start local 6 // com.azure.security.keyvault.keys.models.KeyVaultKey retrievedKey
         8: .line 695
            goto 10
        end local 6 // com.azure.security.keyvault.keys.models.KeyVaultKey retrievedKey
         9: .line 696
      StackMap locals: com.azure.security.keyvault.keys.KeyClient
      StackMap stack:
            aload 5 /* keyClient */
            aload 3 /* keyName */
            invokevirtual com.azure.security.keyvault.keys.KeyClient.getKey:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
            astore 6 /* retrievedKey */
        start local 6 // com.azure.security.keyvault.keys.models.KeyVaultKey retrievedKey
        10: .line 698
      StackMap locals: com.azure.security.keyvault.keys.models.KeyVaultKey
      StackMap stack:
            aload 6 /* retrievedKey */
            ifnonnull 14
        11: .line 699
            new java.text.MessageFormat
            dup
            ldc "R_AKVKeyNotFound"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 7 /* form */
        start local 7 // java.text.MessageFormat form
        12: .line 700
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* keyTokens */
            aload 2 /* keyTokens */
            arraylength
            iconst_1
            isub
            aaload
            aastore
            astore 8 /* msgArgs */
        start local 8 // java.lang.Object[] msgArgs
        13: .line 701
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aconst_null
            aload 7 /* form */
            aload 8 /* 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 8 // java.lang.Object[] msgArgs
        end local 7 // java.text.MessageFormat form
        14: .line 704
      StackMap locals:
      StackMap stack:
            aload 6 /* retrievedKey */
            invokevirtual com.azure.security.keyvault.keys.models.KeyVaultKey.getKeyType:()Lcom/azure/security/keyvault/keys/models/KeyType;
            getstatic com.azure.security.keyvault.keys.models.KeyType.RSA:Lcom/azure/security/keyvault/keys/models/KeyType;
            if_acmpeq 18
            aload 6 /* retrievedKey */
            invokevirtual com.azure.security.keyvault.keys.models.KeyVaultKey.getKeyType:()Lcom/azure/security/keyvault/keys/models/KeyType;
            getstatic com.azure.security.keyvault.keys.models.KeyType.RSA_HSM:Lcom/azure/security/keyvault/keys/models/KeyType;
            if_acmpeq 18
        15: .line 705
            new java.text.MessageFormat
            dup
            ldc "R_NonRSAKey"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 7 /* form */
        start local 7 // java.text.MessageFormat form
        16: .line 706
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* retrievedKey */
            invokevirtual com.azure.security.keyvault.keys.models.KeyVaultKey.getKeyType:()Lcom/azure/security/keyvault/keys/models/KeyType;
            invokevirtual com.azure.security.keyvault.keys.models.KeyType.toString:()Ljava/lang/String;
            aastore
            astore 8 /* msgArgs */
        start local 8 // java.lang.Object[] msgArgs
        17: .line 707
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aconst_null
            aload 7 /* form */
            aload 8 /* 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 8 // java.lang.Object[] msgArgs
        end local 7 // java.text.MessageFormat form
        18: .line 709
      StackMap locals:
      StackMap stack:
            aload 6 /* retrievedKey */
        19: areturn
        end local 6 // com.azure.security.keyvault.keys.models.KeyVaultKey retrievedKey
        end local 5 // com.azure.security.keyvault.keys.KeyClient keyClient
        20: .line 710
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String java.lang.String[] java.lang.String java.lang.String
      StackMap stack: java.lang.RuntimeException
            astore 5 /* e */
        start local 5 // java.lang.RuntimeException e
        21: .line 711
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 5 /* e */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            aload 5 /* e */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.RuntimeException e
        end local 4 // java.lang.String keyVersion
        end local 3 // java.lang.String keyName
        end local 2 // java.lang.String[] keyTokens
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   22     0           this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   22     1  masterKeyPath  Ljava/lang/String;
            1   22     2      keyTokens  [Ljava/lang/String;
            2   22     3        keyName  Ljava/lang/String;
            3   22     4     keyVersion  Ljava/lang/String;
            6   20     5      keyClient  Lcom/azure/security/keyvault/keys/KeyClient;
            8    9     6   retrievedKey  Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
           10   20     6   retrievedKey  Lcom/azure/security/keyvault/keys/models/KeyVaultKey;
           12   14     7           form  Ljava/text/MessageFormat;
           13   14     8        msgArgs  [Ljava/lang/Object;
           16   18     7           form  Ljava/text/MessageFormat;
           17   18     8        msgArgs  [Ljava/lang/Object;
           21   22     5              e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           5    19      20  Class java.lang.RuntimeException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
               Name  Flags
      masterKeyPath  

  private com.azure.security.keyvault.keys.KeyClient getKeyClient(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/azure/security/keyvault/keys/KeyClient;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
         0: .line 725
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
            aload 1 /* masterKeyPath */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 726
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
            aload 1 /* masterKeyPath */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.azure.security.keyvault.keys.KeyClient
            areturn
         2: .line 728
      StackMap locals:
      StackMap stack:
            aload 1 /* masterKeyPath */
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getVaultUrl:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* vaultUrl */
        start local 2 // java.lang.String vaultUrl
         3: .line 731
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.credential:Lcom/azure/core/credential/TokenCredential;
            ifnull 6
         4: .line 732
            new com.azure.security.keyvault.keys.KeyClientBuilder
            dup
            invokespecial com.azure.security.keyvault.keys.KeyClientBuilder.<init>:()V
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.credential:Lcom/azure/core/credential/TokenCredential;
            invokevirtual com.azure.security.keyvault.keys.KeyClientBuilder.credential:(Lcom/azure/core/credential/TokenCredential;)Lcom/azure/security/keyvault/keys/KeyClientBuilder;
            aload 2 /* vaultUrl */
            invokevirtual com.azure.security.keyvault.keys.KeyClientBuilder.vaultUrl:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/KeyClientBuilder;
            invokevirtual com.azure.security.keyvault.keys.KeyClientBuilder.buildClient:()Lcom/azure/security/keyvault/keys/KeyClient;
            astore 3 /* keyClient */
        start local 3 // com.azure.security.keyvault.keys.KeyClient keyClient
         5: .line 733
            goto 7
        end local 3 // com.azure.security.keyvault.keys.KeyClient keyClient
         6: .line 734
      StackMap locals: java.lang.String
      StackMap stack:
            new com.azure.security.keyvault.keys.KeyClientBuilder
            dup
            invokespecial com.azure.security.keyvault.keys.KeyClientBuilder.<init>:()V
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.keyVaultPipeline:Lcom/azure/core/http/HttpPipeline;
            invokevirtual com.azure.security.keyvault.keys.KeyClientBuilder.pipeline:(Lcom/azure/core/http/HttpPipeline;)Lcom/azure/security/keyvault/keys/KeyClientBuilder;
            aload 2 /* vaultUrl */
            invokevirtual com.azure.security.keyvault.keys.KeyClientBuilder.vaultUrl:(Ljava/lang/String;)Lcom/azure/security/keyvault/keys/KeyClientBuilder;
            invokevirtual com.azure.security.keyvault.keys.KeyClientBuilder.buildClient:()Lcom/azure/security/keyvault/keys/KeyClient;
            astore 3 /* keyClient */
        start local 3 // com.azure.security.keyvault.keys.KeyClient keyClient
         7: .line 736
      StackMap locals: com.azure.security.keyvault.keys.KeyClient
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
            aload 1 /* masterKeyPath */
            aload 3 /* keyClient */
            invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 737
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.cachedKeyClients:Ljava/util/Map;
            aload 1 /* masterKeyPath */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.azure.security.keyvault.keys.KeyClient
            areturn
        end local 3 // com.azure.security.keyvault.keys.KeyClient keyClient
        end local 2 // java.lang.String vaultUrl
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0    9     1  masterKeyPath  Ljava/lang/String;
            3    9     2       vaultUrl  Ljava/lang/String;
            5    6     3      keyClient  Lcom/azure/security/keyvault/keys/KeyClient;
            7    9     3      keyClient  Lcom/azure/security/keyvault/keys/KeyClient;
    MethodParameters:
               Name  Flags
      masterKeyPath  

  private static java.lang.String getVaultUrl(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String masterKeyPath
         0: .line 748
            aload 0 /* masterKeyPath */
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 1 /* keyTokens */
        start local 1 // java.lang.String[] keyTokens
         1: .line 749
            aload 1 /* keyTokens */
            iconst_2
            aaload
            astore 2 /* hostName */
        start local 2 // java.lang.String hostName
         2: .line 750
            new java.lang.StringBuilder
            dup
            ldc "https://"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* hostName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.String hostName
        end local 1 // java.lang.String[] keyTokens
        end local 0 // java.lang.String masterKeyPath
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0  masterKeyPath  Ljava/lang/String;
            1    3     1      keyTokens  [Ljava/lang/String;
            2    3     2       hostName  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      masterKeyPath  

  public boolean verifyColumnMasterKeyMetadata(java.lang.String, boolean, byte[]);
    descriptor: (Ljava/lang/String;Z[B)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
        start local 1 // java.lang.String masterKeyPath
        start local 2 // boolean allowEnclaveComputations
        start local 3 // byte[] signature
         0: .line 756
            iload 2 /* allowEnclaveComputations */
            ifne 2
         1: .line 757
            iconst_0
            ireturn
         2: .line 760
      StackMap locals:
      StackMap stack:
            aload 1 /* masterKeyPath */
            invokestatic com.microsoft.sqlserver.jdbc.KeyStoreProviderCommon.validateNonEmptyMasterKeyPath:(Ljava/lang/String;)V
         3: .line 763
            ldc "SHA-256"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 4 /* md */
        start local 4 // java.security.MessageDigest md
         4: .line 764
            aload 4 /* md */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.name:Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_16LE:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual java.security.MessageDigest.update:([B)V
         5: .line 765
            aload 4 /* md */
            aload 1 /* masterKeyPath */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_16LE:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual java.security.MessageDigest.update:([B)V
         6: .line 767
            aload 4 /* md */
            ldc "true"
            getstatic java.nio.charset.StandardCharsets.UTF_16LE:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokevirtual java.security.MessageDigest.update:([B)V
         7: .line 769
            aload 4 /* md */
            invokevirtual java.security.MessageDigest.digest:()[B
            astore 5 /* dataToVerify */
        start local 5 // byte[] dataToVerify
         8: .line 770
            aload 5 /* dataToVerify */
            ifnonnull 10
         9: .line 771
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_HashNull"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        10: .line 775
      StackMap locals: java.security.MessageDigest byte[]
      StackMap stack:
            aload 0 /* this */
            aload 5 /* dataToVerify */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.AzureKeyVaultSignHashedData:([BLjava/lang/String;)[B
            astore 6 /* signedHash */
        start local 6 // byte[] signedHash
        11: .line 776
            aload 6 /* signedHash */
            ifnonnull 13
        12: .line 777
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_SignedHashLengthError"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aconst_null
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        13: .line 781
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            aload 5 /* dataToVerify */
            aload 3 /* signature */
            aload 1 /* masterKeyPath */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.AzureKeyVaultVerifySignature:([B[BLjava/lang/String;)Z
        14: ireturn
        end local 6 // byte[] signedHash
        end local 5 // byte[] dataToVerify
        end local 4 // java.security.MessageDigest md
        15: .line 782
      StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider java.lang.String int byte[]
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 4 /* e */
        start local 4 // java.security.NoSuchAlgorithmException e
        16: .line 783
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            ldc "R_NoSHA256Algorithm"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            aload 4 /* e */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.NoSuchAlgorithmException e
        end local 3 // byte[] signature
        end local 2 // boolean allowEnclaveComputations
        end local 1 // java.lang.String masterKeyPath
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   17     0                      this  Lcom/microsoft/sqlserver/jdbc/SQLServerColumnEncryptionAzureKeyVaultProvider;
            0   17     1             masterKeyPath  Ljava/lang/String;
            0   17     2  allowEnclaveComputations  Z
            0   17     3                 signature  [B
            4   15     4                        md  Ljava/security/MessageDigest;
            8   15     5              dataToVerify  [B
           11   15     6                signedHash  [B
           16   17     4                         e  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           3    14      15  Class java.security.NoSuchAlgorithmException
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                          Name  Flags
      masterKeyPath             
      allowEnclaveComputations  
      signature                 

  private static java.util.List<java.lang.String> getTrustedEndpoints();
    descriptor: ()Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=9, args_size=0
         0: .line 788
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.getMssqlJdbcProperties:()Ljava/util/Properties;
            astore 0 /* mssqlJdbcProperties */
        start local 0 // java.util.Properties mssqlJdbcProperties
         1: .line 789
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* trustedEndpoints */
        start local 1 // java.util.List trustedEndpoints
         2: .line 790
            iconst_1
            istore 2 /* append */
        start local 2 // boolean append
         3: .line 791
            aload 0 /* mssqlJdbcProperties */
            ifnull 18
         4: .line 792
            aload 0 /* mssqlJdbcProperties */
            ldc "AKVTrustedEndpoints"
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* endpoints */
        start local 3 // java.lang.String endpoints
         5: .line 793
            aload 3 /* endpoints */
            ifnull 18
            aload 3 /* endpoints */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 18
         6: .line 794
            aload 3 /* endpoints */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 3 /* endpoints */
         7: .line 796
            bipush 59
            aload 3 /* endpoints */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpeq 10
         8: .line 797
            iconst_0
            istore 2 /* append */
         9: .line 798
            goto 11
        10: .line 799
      StackMap locals: java.util.Properties java.util.List int java.lang.String
      StackMap stack:
            aload 3 /* endpoints */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* endpoints */
        11: .line 801
      StackMap locals:
      StackMap stack:
            aload 3 /* endpoints */
            ldc ";"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 4 /* entries */
        start local 4 // java.lang.String[] entries
        12: .line 802
            aload 4 /* entries */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 17
      StackMap locals: java.util.Properties java.util.List int java.lang.String java.lang.String[] top int int java.lang.String[]
      StackMap stack:
        13: aload 8
            iload 6
            aaload
            astore 5 /* entry */
        start local 5 // java.lang.String entry
        14: .line 803
            aload 5 /* entry */
            ifnull 16
            aload 5 /* entry */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 16
        15: .line 804
            aload 1 /* trustedEndpoints */
            aload 5 /* entry */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // java.lang.String entry
        16: .line 802
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        17: iload 6
            iload 7
            if_icmplt 13
        end local 4 // java.lang.String[] entries
        end local 3 // java.lang.String endpoints
        18: .line 813
      StackMap locals: java.util.Properties java.util.List int
      StackMap stack:
            iload 2 /* append */
            ifeq 27
        19: .line 814
            aload 1 /* trustedEndpoints */
            ldc "vault.azure.net"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        20: .line 815
            aload 1 /* trustedEndpoints */
            ldc "vault.azure.cn"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        21: .line 816
            aload 1 /* trustedEndpoints */
            ldc "vault.usgovcloudapi.net"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        22: .line 817
            aload 1 /* trustedEndpoints */
            ldc "vault.microsoftazure.de"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        23: .line 818
            aload 1 /* trustedEndpoints */
            ldc "managedhsm.azure.net"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        24: .line 819
            aload 1 /* trustedEndpoints */
            ldc "managedhsm.azure.cn"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        25: .line 820
            aload 1 /* trustedEndpoints */
            ldc "managedhsm.usgovcloudapi.net"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        26: .line 821
            aload 1 /* trustedEndpoints */
            ldc "managedhsm.microsoftazure.de"
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        27: .line 823
      StackMap locals:
      StackMap stack:
            aload 1 /* trustedEndpoints */
            areturn
        end local 2 // boolean append
        end local 1 // java.util.List trustedEndpoints
        end local 0 // java.util.Properties mssqlJdbcProperties
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            1   28     0  mssqlJdbcProperties  Ljava/util/Properties;
            2   28     1     trustedEndpoints  Ljava/util/List<Ljava/lang/String;>;
            3   28     2               append  Z
            5   18     3            endpoints  Ljava/lang/String;
           12   18     4              entries  [Ljava/lang/String;
           14   16     5                entry  Ljava/lang/String;
    Signature: ()Ljava/util/List<Ljava/lang/String;>;

  private static java.util.Properties getMssqlJdbcProperties();
    descriptor: ()Ljava/util/Properties;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=0
         0: .line 832
            aconst_null
            astore 0 /* props */
        start local 0 // java.util.Properties props
         1: .line 833
            aconst_null
            astore 1
            aconst_null
            astore 2
         2: new java.io.FileInputStream
            dup
            ldc "mssql-jdbc.properties"
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            astore 3 /* in */
        start local 3 // java.io.FileInputStream in
         3: .line 834
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 0 /* props */
         4: .line 835
            aload 0 /* props */
            aload 3 /* in */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         5: .line 836
            aload 3 /* in */
            ifnull 14
            aload 3 /* in */
            invokevirtual java.io.FileInputStream.close:()V
            goto 14
      StackMap locals: java.util.Properties java.lang.Throwable java.lang.Throwable java.io.FileInputStream
      StackMap stack: java.lang.Throwable
         6: astore 1
            aload 3 /* in */
            ifnull 7
            aload 3 /* in */
            invokevirtual java.io.FileInputStream.close:()V
        end local 3 // java.io.FileInputStream in
      StackMap locals:
      StackMap stack:
         7: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 2
            aload 1
            ifnonnull 9
            aload 2
            astore 1
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 1
            aload 2
            if_acmpeq 10
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 1
            athrow
      StackMap locals: java.util.Properties
      StackMap stack: java.io.IOException
        11: astore 1 /* e */
        start local 1 // java.io.IOException e
        12: .line 837
            getstatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.akvLogger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.FINER:Ljava/util/logging/Level;
            invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
            ifeq 14
        13: .line 838
            getstatic com.microsoft.sqlserver.jdbc.SQLServerColumnEncryptionAzureKeyVaultProvider.akvLogger:Ljava/util/logging/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Unable to load the mssql-jdbc.properties file: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.logging.Logger.finer:(Ljava/lang/String;)V
        end local 1 // java.io.IOException e
        14: .line 841
      StackMap locals:
      StackMap stack:
            aload 0 /* props */
            ifnull 15
            aload 0 /* props */
            invokevirtual java.util.Properties.isEmpty:()Z
            ifne 15
            aload 0 /* props */
            goto 16
      StackMap locals:
      StackMap stack:
        15: aconst_null
      StackMap locals:
      StackMap stack: java.util.Properties
        16: areturn
        end local 0 // java.util.Properties props
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1   17     0  props  Ljava/util/Properties;
            3    7     3     in  Ljava/io/FileInputStream;
           12   14     1      e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     5       6  any
           2     8       8  any
           1    11      11  Class java.io.IOException
}
SourceFile: "SQLServerColumnEncryptionAzureKeyVaultProvider.java"