final class sun.security.pkcs11.P11TlsPrfGenerator extends javax.crypto.KeyGeneratorSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.pkcs11.P11TlsPrfGenerator
  super_class: javax.crypto.KeyGeneratorSpi
{
  private static final java.lang.String MSG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "TlsPrfGenerator must be initialized using a TlsPrfParameterSpec"

  private final sun.security.pkcs11.Token token;
    descriptor: Lsun/security/pkcs11/Token;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String algorithm;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long mechanism;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private sun.security.internal.spec.TlsPrfParameterSpec spec;
    descriptor: Lsun/security/internal/spec/TlsPrfParameterSpec;
    flags: (0x0002) ACC_PRIVATE

  private sun.security.pkcs11.P11Key p11Key;
    descriptor: Lsun/security/pkcs11/P11Key;
    flags: (0x0002) ACC_PRIVATE

  private static final javax.crypto.SecretKey NULL_KEY;
    descriptor: Ljavax/crypto/SecretKey;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 111
            new sun.security.pkcs11.P11TlsPrfGenerator$1
            dup
            invokespecial sun.security.pkcs11.P11TlsPrfGenerator$1.<init>:()V
            putstatic sun.security.pkcs11.P11TlsPrfGenerator.NULL_KEY:Ljavax/crypto/SecretKey;
         1: .line 121
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(sun.security.pkcs11.Token, java.lang.String, long);
    descriptor: (Lsun/security/pkcs11/Token;Ljava/lang/String;J)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
        start local 1 // sun.security.pkcs11.Token token
        start local 2 // java.lang.String algorithm
        start local 3 // long mechanism
         0: .line 75
            aload 0 /* this */
            invokespecial javax.crypto.KeyGeneratorSpi.<init>:()V
         1: .line 76
            aload 0 /* this */
            aload 1 /* token */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
         2: .line 77
            aload 0 /* this */
            aload 2 /* algorithm */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.algorithm:Ljava/lang/String;
         3: .line 78
            aload 0 /* this */
            lload 3 /* mechanism */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
         4: .line 79
            return
        end local 3 // long mechanism
        end local 2 // java.lang.String algorithm
        end local 1 // sun.security.pkcs11.Token token
        end local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            0    5     1      token  Lsun/security/pkcs11/Token;
            0    5     2  algorithm  Ljava/lang/String;
            0    5     3  mechanism  J
    Exceptions:
      throws sun.security.pkcs11.wrapper.PKCS11Exception
    MethodParameters:
           Name  Flags
      token      
      algorithm  
      mechanism  

  protected void engineInit(java.security.SecureRandom);
    descriptor: (Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
        start local 1 // java.security.SecureRandom random
         0: .line 82
            new java.security.InvalidParameterException
            dup
            ldc "TlsPrfGenerator must be initialized using a TlsPrfParameterSpec"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.security.SecureRandom random
        end local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            0    1     1  random  Ljava/security/SecureRandom;
    MethodParameters:
        Name  Flags
      random  

  protected void engineInit(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
        start local 1 // java.security.spec.AlgorithmParameterSpec params
        start local 2 // java.security.SecureRandom random
         0: .line 88
            aload 1 /* params */
            instanceof sun.security.internal.spec.TlsPrfParameterSpec
            ifne 2
         1: .line 89
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "TlsPrfGenerator must be initialized using a TlsPrfParameterSpec"
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* params */
            checkcast sun.security.internal.spec.TlsPrfParameterSpec
            putfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
         3: .line 92
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getSecret:()Ljavax/crypto/SecretKey;
            astore 3 /* key */
        start local 3 // javax.crypto.SecretKey key
         4: .line 93
            aload 3 /* key */
            ifnonnull 6
         5: .line 94
            getstatic sun.security.pkcs11.P11TlsPrfGenerator.NULL_KEY:Ljavax/crypto/SecretKey;
            astore 3 /* key */
         6: .line 97
      StackMap locals: javax.crypto.SecretKey
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 3 /* key */
            aconst_null
            invokestatic sun.security.pkcs11.P11SecretKeyFactory.convertKey:(Lsun/security/pkcs11/Token;Ljava/security/Key;Ljava/lang/String;)Lsun/security/pkcs11/P11Key;
            putfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
         7: .line 98
            goto 10
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
         8: astore 4 /* e */
        start local 4 // java.security.InvalidKeyException e
         9: .line 99
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "init() failed"
            aload 4 /* e */
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.InvalidKeyException e
        10: .line 101
      StackMap locals:
      StackMap stack:
            return
        end local 3 // javax.crypto.SecretKey key
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.AlgorithmParameterSpec params
        end local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            0   11     1  params  Ljava/security/spec/AlgorithmParameterSpec;
            0   11     2  random  Ljava/security/SecureRandom;
            4   11     3     key  Ljavax/crypto/SecretKey;
            9   10     4       e  Ljava/security/InvalidKeyException;
      Exception table:
        from    to  target  type
           6     7       8  Class java.security.InvalidKeyException
    Exceptions:
      throws java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      params  
      random  

  protected void engineInit(int, java.security.SecureRandom);
    descriptor: (ILjava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
        start local 1 // int keysize
        start local 2 // java.security.SecureRandom random
         0: .line 124
            new java.security.InvalidParameterException
            dup
            ldc "TlsPrfGenerator must be initialized using a TlsPrfParameterSpec"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.security.SecureRandom random
        end local 1 // int keysize
        end local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            0    1     1  keysize  I
            0    1     2   random  Ljava/security/SecureRandom;
    MethodParameters:
         Name  Flags
      keysize  
      random   

  protected javax.crypto.SecretKey engineGenerateKey();
    descriptor: ()Ljavax/crypto/SecretKey;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=11, args_size=1
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
         0: .line 128
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            ifnonnull 2
         1: .line 129
            new java.lang.IllegalStateException
            dup
            ldc "TlsPrfGenerator must be initialized"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 132
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getSeed:()[B
            astore 1 /* seed */
        start local 1 // byte[] seed
         3: .line 135
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            ldc 996
            lcmp
            ifne 35
         4: .line 137
            iconst_0
            istore 2 /* ulServerOrClient */
        start local 2 // int ulServerOrClient
         5: .line 138
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getLabel:()Ljava/lang/String;
            ldc "server finished"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 139
            iconst_1
            istore 2 /* ulServerOrClient */
         7: .line 141
      StackMap locals: byte[] int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getLabel:()Ljava/lang/String;
            ldc "client finished"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 142
            iconst_2
            istore 2 /* ulServerOrClient */
         9: .line 145
      StackMap locals:
      StackMap stack:
            iload 2 /* ulServerOrClient */
            ifeq 34
        10: .line 147
            new sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS
            dup
        11: .line 148
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getPRFHashAlg:()Ljava/lang/String;
            invokestatic sun.security.pkcs11.wrapper.Functions.getHashMechId:(Ljava/lang/String;)J
        12: .line 149
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
            i2l
            iload 2 /* ulServerOrClient */
            i2l
        13: .line 147
            invokespecial sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS.<init>:(JJJ)V
            astore 3 /* params */
        start local 3 // sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS params
        14: .line 150
            aconst_null
            astore 4 /* session */
        start local 4 // sun.security.pkcs11.Session session
        15: .line 151
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.getKeyID:()J
            lstore 5 /* keyID */
        start local 5 // long keyID
        16: .line 153
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 4 /* session */
        17: .line 154
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
        18: .line 155
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            aload 3 /* params */
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(JLsun/security/pkcs11/wrapper/CK_TLS_MAC_PARAMS;)V
            lload 5 /* keyID */
        19: .line 154
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignInit:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V
        20: .line 156
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            lconst_0
            aload 1 /* seed */
            iconst_0
            aload 1 /* seed */
            arraylength
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate:(JJ[BII)V
        21: .line 157
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        22: .line 158
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
        23: .line 157
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignFinal:(JI)[B
            astore 7 /* out */
        start local 7 // byte[] out
        24: .line 159
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 7 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 9
        25: .line 163
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        26: .line 164
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        27: .line 159
            aload 9
            areturn
        end local 7 // byte[] out
        28: .line 160
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] int sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS sun.security.pkcs11.Session long
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 7 /* e */
        start local 7 // sun.security.pkcs11.wrapper.PKCS11Exception e
        29: .line 161
            new java.security.ProviderException
            dup
            ldc "Could not calculate PRF"
            aload 7 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // sun.security.pkcs11.wrapper.PKCS11Exception e
        30: .line 162
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        31: .line 163
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        32: .line 164
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 4 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        33: .line 165
            aload 8
            athrow
        end local 5 // long keyID
        end local 4 // sun.security.pkcs11.Session session
        end local 3 // sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS params
        34: .line 167
      StackMap locals:
      StackMap stack:
            new java.security.ProviderException
            dup
            ldc "Only Finished message authentication code generation supported for TLS 1.2."
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // int ulServerOrClient
        35: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getLabel:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 2 /* label */
        start local 2 // byte[] label
        36: .line 174
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            ldc 2147484531
            lcmp
            ifne 58
        37: .line 175
            aconst_null
            astore 3 /* session */
        start local 3 // sun.security.pkcs11.Session session
        38: .line 176
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.getKeyID:()J
            lstore 4 /* keyID */
        start local 4 // long keyID
        39: .line 178
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 3 /* session */
        40: .line 179
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        41: .line 180
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(J)V
            lload 4 /* keyID */
        42: .line 179
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignInit:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V
        43: .line 181
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            lconst_0
            aload 2 /* label */
            iconst_0
            aload 2 /* label */
            arraylength
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate:(JJ[BII)V
        44: .line 182
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            lconst_0
            aload 1 /* seed */
            iconst_0
            aload 1 /* seed */
            arraylength
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate:(JJ[BII)V
        45: .line 183
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        46: .line 184
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
        47: .line 183
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignFinal:(JI)[B
            astore 6 /* out */
        start local 6 // byte[] out
        48: .line 185
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 6 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 8
        49: .line 189
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        50: .line 190
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        51: .line 185
            aload 8
            areturn
        end local 6 // byte[] out
        52: .line 186
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] byte[] sun.security.pkcs11.Session long
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 6 /* e */
        start local 6 // sun.security.pkcs11.wrapper.PKCS11Exception e
        53: .line 187
            new java.security.ProviderException
            dup
            ldc "Could not calculate PRF"
            aload 6 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // sun.security.pkcs11.wrapper.PKCS11Exception e
        54: .line 188
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        55: .line 189
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        56: .line 190
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 3 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        57: .line 191
            aload 7
            athrow
        end local 4 // long keyID
        end local 3 // sun.security.pkcs11.Session session
        58: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
            newarray 8
            astore 3 /* out */
        start local 3 // byte[] out
        59: .line 197
            new sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS
            dup
            aload 1 /* seed */
            aload 2 /* label */
            aload 3 /* out */
            invokespecial sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS.<init>:([B[B[B)V
            astore 4 /* params */
        start local 4 // sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS params
        60: .line 199
            aconst_null
            astore 5 /* session */
        start local 5 // sun.security.pkcs11.Session session
        61: .line 200
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.getKeyID:()J
            lstore 6 /* keyID */
        start local 6 // long keyID
        62: .line 202
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            invokevirtual sun.security.pkcs11.Token.getOpSession:()Lsun/security/pkcs11/Session;
            astore 5 /* session */
        63: .line 203
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Session.id:()J
        64: .line 204
            new sun.security.pkcs11.wrapper.CK_MECHANISM
            dup
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            aload 4 /* params */
            invokespecial sun.security.pkcs11.wrapper.CK_MECHANISM.<init>:(JLsun/security/pkcs11/wrapper/CK_TLS_PRF_PARAMS;)V
            lload 6 /* keyID */
            aconst_null
        65: .line 203
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_DeriveKey:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J
            pop2
        66: .line 205
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 3 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 10
        67: .line 209
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        68: .line 210
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        69: .line 205
            aload 10
            areturn
        70: .line 206
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] byte[] byte[] sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS sun.security.pkcs11.Session long
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 8 /* e */
        start local 8 // sun.security.pkcs11.wrapper.PKCS11Exception e
        71: .line 207
            new java.security.ProviderException
            dup
            ldc "Could not calculate PRF"
            aload 8 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 8 // sun.security.pkcs11.wrapper.PKCS11Exception e
        72: .line 208
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        73: .line 209
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            invokevirtual sun.security.pkcs11.P11Key.releaseKeyID:()V
        74: .line 210
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            aload 5 /* session */
            invokevirtual sun.security.pkcs11.Token.releaseSession:(Lsun/security/pkcs11/Session;)Lsun/security/pkcs11/Session;
            pop
        75: .line 211
            aload 9
            athrow
        end local 6 // long keyID
        end local 5 // sun.security.pkcs11.Session session
        end local 4 // sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS params
        end local 3 // byte[] out
        end local 2 // byte[] label
        end local 1 // byte[] seed
        end local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   76     0              this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            3   76     1              seed  [B
            5   35     2  ulServerOrClient  I
           14   34     3            params  Lsun/security/pkcs11/wrapper/CK_TLS_MAC_PARAMS;
           15   34     4           session  Lsun/security/pkcs11/Session;
           16   34     5             keyID  J
           24   28     7               out  [B
           29   30     7                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
           36   76     2             label  [B
           38   58     3           session  Lsun/security/pkcs11/Session;
           39   58     4             keyID  J
           48   52     6               out  [B
           53   54     6                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
           59   76     3               out  [B
           60   76     4            params  Lsun/security/pkcs11/wrapper/CK_TLS_PRF_PARAMS;
           61   76     5           session  Lsun/security/pkcs11/Session;
           62   76     6             keyID  J
           71   72     8                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
          16    25      28  Class sun.security.pkcs11.wrapper.PKCS11Exception
          16    25      30  any
          28    30      30  any
          39    49      52  Class sun.security.pkcs11.wrapper.PKCS11Exception
          39    49      54  any
          52    54      54  any
          62    67      70  Class sun.security.pkcs11.wrapper.PKCS11Exception
          62    67      72  any
          70    72      72  any
}
SourceFile: "P11TlsPrfGenerator.java"
NestMembers:
  sun.security.pkcs11.P11TlsPrfGenerator$1
InnerClasses:
  sun.security.pkcs11.P11TlsPrfGenerator$1