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 109
            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 119
            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 73
            aload 0 /* this */
            invokespecial javax.crypto.KeyGeneratorSpi.<init>:()V
         1: .line 74
            aload 0 /* this */
            aload 1 /* token */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
         2: .line 75
            aload 0 /* this */
            aload 2 /* algorithm */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.algorithm:Ljava/lang/String;
         3: .line 76
            aload 0 /* this */
            lload 3 /* mechanism */
            putfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
         4: .line 77
            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 80
            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 86
            aload 1 /* params */
            instanceof sun.security.internal.spec.TlsPrfParameterSpec
            ifne 2
         1: .line 87
            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 89
      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 90
            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 91
            aload 3 /* key */
            ifnonnull 6
         5: .line 92
            getstatic sun.security.pkcs11.P11TlsPrfGenerator.NULL_KEY:Ljavax/crypto/SecretKey;
            astore 3 /* key */
         6: .line 95
      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 96
            goto 10
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
         8: astore 4 /* e */
        start local 4 // java.security.InvalidKeyException e
         9: .line 97
            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 99
      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 122
            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=9, args_size=1
        start local 0 // sun.security.pkcs11.P11TlsPrfGenerator this
         0: .line 126
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            ifnonnull 2
         1: .line 127
            new java.lang.IllegalStateException
            dup
            ldc "TlsPrfGenerator must be initialized"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 130
      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 133
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            ldc 996
            lcmp
            ifne 35
         4: .line 134
            aconst_null
            astore 2 /* k */
        start local 2 // javax.crypto.SecretKey k
         5: .line 135
            iconst_0
            istore 3 /* ulServerOrClient */
        start local 3 // int ulServerOrClient
         6: .line 136
            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 8
         7: .line 137
            iconst_1
            istore 3 /* ulServerOrClient */
         8: .line 139
      StackMap locals: byte[] javax.crypto.SecretKey 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 10
         9: .line 140
            iconst_2
            istore 3 /* ulServerOrClient */
        10: .line 143
      StackMap locals:
      StackMap stack:
            iload 3 /* ulServerOrClient */
            ifeq 33
        11: .line 145
            new sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS
            dup
        12: .line 146
            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
        13: .line 147
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.spec:Lsun/security/internal/spec/TlsPrfParameterSpec;
            invokevirtual sun.security.internal.spec.TlsPrfParameterSpec.getOutputLength:()I
            i2l
            iload 3 /* ulServerOrClient */
            i2l
        14: .line 145
            invokespecial sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS.<init>:(JJJ)V
            astore 4 /* params */
        start local 4 // sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS params
        15: .line 148
            aconst_null
            astore 5 /* session */
        start local 5 // sun.security.pkcs11.Session session
        16: .line 150
            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 */
        17: .line 151
            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
        18: .line 152
            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_MAC_PARAMS;)V
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            getfield sun.security.pkcs11.P11Key.keyID:J
        19: .line 151
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignInit:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V
        20: .line 153
            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
            lconst_0
            aload 1 /* seed */
            iconst_0
            aload 1 /* seed */
            arraylength
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignUpdate:(JJ[BII)V
        21: .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;
        22: .line 155
            aload 5 /* 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 154
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignFinal:(JI)[B
            astore 6 /* out */
        start local 6 // byte[] out
        24: .line 156
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 6 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 2 /* k */
        end local 6 // byte[] out
        25: .line 157
            goto 31
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] javax.crypto.SecretKey int sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
        26: astore 6 /* e */
        start local 6 // sun.security.pkcs11.wrapper.PKCS11Exception e
        27: .line 158
            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
        28: .line 159
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        29: .line 160
            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
        30: .line 161
            aload 7
            athrow
        31: .line 160
      StackMap locals:
      StackMap stack:
            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
        end local 5 // sun.security.pkcs11.Session session
        end local 4 // sun.security.pkcs11.wrapper.CK_TLS_MAC_PARAMS params
        32: .line 162
            goto 34
        33: .line 163
      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
        34: .line 166
      StackMap locals:
      StackMap stack:
            aload 2 /* k */
            areturn
        end local 3 // int ulServerOrClient
        end local 2 // javax.crypto.SecretKey k
        35: .line 169
      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;
            invokestatic sun.security.pkcs11.P11Util.getBytesUTF8:(Ljava/lang/String;)[B
            astore 2 /* label */
        start local 2 // byte[] label
        36: .line 171
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.mechanism:J
            ldc 2147484531
            lcmp
            ifne 55
        37: .line 172
            aconst_null
            astore 3 /* session */
        start local 3 // sun.security.pkcs11.Session session
        38: .line 174
            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 */
        39: .line 175
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.token:Lsun/security/pkcs11/Token;
            getfield sun.security.pkcs11.Token.p11:Lsun/security/pkcs11/wrapper/PKCS11;
        40: .line 176
            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
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            getfield sun.security.pkcs11.P11Key.keyID:J
        41: .line 175
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignInit:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J)V
        42: .line 177
            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
        43: .line 178
            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
        44: .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;
        45: .line 180
            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
        46: .line 179
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_SignFinal:(JI)[B
            astore 4 /* out */
        start local 4 // byte[] out
        47: .line 181
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 4 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 6
        48: .line 185
            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
        49: .line 181
            aload 6
            areturn
        end local 4 // byte[] out
        50: .line 182
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] byte[] sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 4 /* e */
        start local 4 // sun.security.pkcs11.wrapper.PKCS11Exception e
        51: .line 183
            new java.security.ProviderException
            dup
            ldc "Could not calculate PRF"
            aload 4 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // sun.security.pkcs11.wrapper.PKCS11Exception e
        52: .line 184
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        53: .line 185
            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
        54: .line 186
            aload 5
            athrow
        end local 3 // sun.security.pkcs11.Session session
        55: .line 191
      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
        56: .line 192
            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
        57: .line 194
            aconst_null
            astore 5 /* session */
        start local 5 // sun.security.pkcs11.Session session
        58: .line 196
            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 */
        59: .line 197
            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
        60: .line 198
            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
            aload 0 /* this */
            getfield sun.security.pkcs11.P11TlsPrfGenerator.p11Key:Lsun/security/pkcs11/P11Key;
            getfield sun.security.pkcs11.P11Key.keyID:J
            aconst_null
        61: .line 197
            invokevirtual sun.security.pkcs11.wrapper.PKCS11.C_DeriveKey:(JLsun/security/pkcs11/wrapper/CK_MECHANISM;J[Lsun/security/pkcs11/wrapper/CK_ATTRIBUTE;)J
            pop2
        62: .line 200
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 3 /* out */
            ldc "TlsPrf"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 8
        63: .line 204
            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
        64: .line 200
            aload 8
            areturn
        65: .line 201
      StackMap locals: sun.security.pkcs11.P11TlsPrfGenerator byte[] byte[] byte[] sun.security.pkcs11.wrapper.CK_TLS_PRF_PARAMS sun.security.pkcs11.Session
      StackMap stack: sun.security.pkcs11.wrapper.PKCS11Exception
            astore 6 /* e */
        start local 6 // sun.security.pkcs11.wrapper.PKCS11Exception e
        66: .line 202
            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
        67: .line 203
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        68: .line 204
            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 7
            athrow
        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   70     0              this  Lsun/security/pkcs11/P11TlsPrfGenerator;
            3   70     1              seed  [B
            5   35     2                 k  Ljavax/crypto/SecretKey;
            6   35     3  ulServerOrClient  I
           15   32     4            params  Lsun/security/pkcs11/wrapper/CK_TLS_MAC_PARAMS;
           16   32     5           session  Lsun/security/pkcs11/Session;
           24   25     6               out  [B
           27   28     6                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
           36   70     2             label  [B
           38   55     3           session  Lsun/security/pkcs11/Session;
           47   50     4               out  [B
           51   52     4                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
           56   70     3               out  [B
           57   70     4            params  Lsun/security/pkcs11/wrapper/CK_TLS_PRF_PARAMS;
           58   70     5           session  Lsun/security/pkcs11/Session;
           66   67     6                 e  Lsun/security/pkcs11/wrapper/PKCS11Exception;
      Exception table:
        from    to  target  type
          16    25      26  Class sun.security.pkcs11.wrapper.PKCS11Exception
          16    28      28  any
          38    48      50  Class sun.security.pkcs11.wrapper.PKCS11Exception
          38    48      52  any
          50    52      52  any
          58    63      65  Class sun.security.pkcs11.wrapper.PKCS11Exception
          58    63      67  any
          65    67      67  any
}
SourceFile: "P11TlsPrfGenerator.java"
NestMembers:
  sun.security.pkcs11.P11TlsPrfGenerator$1
InnerClasses:
  sun.security.pkcs11.P11TlsPrfGenerator$1