public final class com.sun.crypto.provider.TlsKeyMaterialGenerator extends javax.crypto.KeyGeneratorSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.sun.crypto.provider.TlsKeyMaterialGenerator
  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: "TlsKeyMaterialGenerator must be initialized using a TlsKeyMaterialParameterSpec"

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

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
         0: .line 53
            aload 0 /* this */
            invokespecial javax.crypto.KeyGeneratorSpi.<init>:()V
         1: .line 54
            return
        end local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/crypto/provider/TlsKeyMaterialGenerator;

  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 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
        start local 1 // java.security.SecureRandom random
         0: .line 57
            new java.security.InvalidParameterException
            dup
            ldc "TlsKeyMaterialGenerator must be initialized using a TlsKeyMaterialParameterSpec"
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.security.SecureRandom random
        end local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/sun/crypto/provider/TlsKeyMaterialGenerator;
            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=3, locals=3, args_size=3
        start local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
        start local 1 // java.security.spec.AlgorithmParameterSpec params
        start local 2 // java.security.SecureRandom random
         0: .line 62
            aload 1 /* params */
            instanceof sun.security.internal.spec.TlsKeyMaterialParameterSpec
            ifne 2
         1: .line 63
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "TlsKeyMaterialGenerator must be initialized using a TlsKeyMaterialParameterSpec"
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 65
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* params */
            checkcast sun.security.internal.spec.TlsKeyMaterialParameterSpec
            putfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
         3: .line 66
            ldc "RAW"
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getMasterSecret:()Ljavax/crypto/SecretKey;
            invokeinterface javax.crypto.SecretKey.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 67
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "Key format must be RAW"
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 69
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getMajorVersion:()I
            bipush 8
            ishl
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getMinorVersion:()I
            ior
            putfield com.sun.crypto.provider.TlsKeyMaterialGenerator.protocolVersion:I
         6: .line 70
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.protocolVersion:I
            sipush 768
            if_icmplt 7
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.protocolVersion:I
            sipush 770
            if_icmple 10
         7: .line 71
      StackMap locals:
      StackMap stack:
            new java.security.InvalidAlgorithmParameterException
            dup
         8: .line 72
            ldc "Only SSL 3.0, TLS 1.0, and TLS 1.1 supported"
         9: .line 71
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 74
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.AlgorithmParameterSpec params
        end local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/sun/crypto/provider/TlsKeyMaterialGenerator;
            0   11     1  params  Ljava/security/spec/AlgorithmParameterSpec;
            0   11     2  random  Ljava/security/SecureRandom;
    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 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
        start local 1 // int keysize
        start local 2 // java.security.SecureRandom random
         0: .line 77
            new java.security.InvalidParameterException
            dup
            ldc "TlsKeyMaterialGenerator must be initialized using a TlsKeyMaterialParameterSpec"
            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 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/sun/crypto/provider/TlsKeyMaterialGenerator;
            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=3, locals=2, args_size=1
        start local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
         0: .line 81
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            ifnonnull 4
         1: .line 82
            new java.lang.IllegalStateException
            dup
         2: .line 83
            ldc "TlsKeyMaterialGenerator must be initialized"
         3: .line 82
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.crypto.provider.TlsKeyMaterialGenerator.engineGenerateKey0:()Ljavax/crypto/SecretKey;
         5: areturn
         6: .line 87
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 1 /* e */
        start local 1 // java.security.GeneralSecurityException e
         7: .line 88
            new java.security.ProviderException
            dup
            aload 1 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.GeneralSecurityException e
        end local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/sun/crypto/provider/TlsKeyMaterialGenerator;
            7    8     1     e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.security.GeneralSecurityException

  private javax.crypto.SecretKey engineGenerateKey0();
    descriptor: ()Ljavax/crypto/SecretKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=26, args_size=1
        start local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
         0: .line 93
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getMasterSecret:()Ljavax/crypto/SecretKey;
            invokeinterface javax.crypto.SecretKey.getEncoded:()[B
            astore 1 /* masterSecret */
        start local 1 // byte[] masterSecret
         1: .line 95
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getClientRandom:()[B
            astore 2 /* clientRandom */
        start local 2 // byte[] clientRandom
         2: .line 96
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getServerRandom:()[B
            astore 3 /* serverRandom */
        start local 3 // byte[] serverRandom
         3: .line 98
            aconst_null
            astore 4 /* clientMacKey */
        start local 4 // javax.crypto.SecretKey clientMacKey
         4: .line 99
            aconst_null
            astore 5 /* serverMacKey */
        start local 5 // javax.crypto.SecretKey serverMacKey
         5: .line 100
            aconst_null
            astore 6 /* clientCipherKey */
        start local 6 // javax.crypto.SecretKey clientCipherKey
         6: .line 101
            aconst_null
            astore 7 /* clientIv */
        start local 7 // javax.crypto.spec.IvParameterSpec clientIv
         7: .line 102
            aconst_null
            astore 8 /* serverCipherKey */
        start local 8 // javax.crypto.SecretKey serverCipherKey
         8: .line 103
            aconst_null
            astore 9 /* serverIv */
        start local 9 // javax.crypto.spec.IvParameterSpec serverIv
         9: .line 105
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getMacKeyLength:()I
            istore 10 /* macLength */
        start local 10 // int macLength
        10: .line 106
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getExpandedCipherKeyLength:()I
            istore 11 /* expandedKeyLength */
        start local 11 // int expandedKeyLength
        11: .line 107
            iload 11 /* expandedKeyLength */
            ifeq 12
            iconst_1
            goto 13
      StackMap locals: com.sun.crypto.provider.TlsKeyMaterialGenerator byte[] byte[] byte[] javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec int int
      StackMap stack:
        12: iconst_0
      StackMap locals:
      StackMap stack: int
        13: istore 12 /* isExportable */
        start local 12 // boolean isExportable
        14: .line 108
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getCipherKeyLength:()I
            istore 13 /* keyLength */
        start local 13 // int keyLength
        15: .line 109
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getIvLength:()I
            istore 14 /* ivLength */
        start local 14 // int ivLength
        16: .line 111
            iload 10 /* macLength */
            iload 13 /* keyLength */
            iadd
            iload 12 /* isExportable */
            ifeq 17
            iconst_0
            goto 18
      StackMap locals: com.sun.crypto.provider.TlsKeyMaterialGenerator byte[] byte[] byte[] javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec int int int int int
      StackMap stack: int
        17: iload 14 /* ivLength */
      StackMap locals: com.sun.crypto.provider.TlsKeyMaterialGenerator byte[] byte[] byte[] javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec int int int int int
      StackMap stack: int int
        18: iadd
            istore 15 /* keyBlockLen */
        start local 15 // int keyBlockLen
        19: .line 112
            iload 15 /* keyBlockLen */
            iconst_1
            ishl
            istore 15 /* keyBlockLen */
        20: .line 113
            iload 15 /* keyBlockLen */
            newarray 8
            astore 16 /* keyBlock */
        start local 16 // byte[] keyBlock
        21: .line 115
            ldc "MD5"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 17 /* md5 */
        start local 17 // java.security.MessageDigest md5
        22: .line 116
            ldc "SHA1"
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 18 /* sha */
        start local 18 // java.security.MessageDigest sha
        23: .line 119
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.protocolVersion:I
            sipush 769
            if_icmplt 29
        24: .line 121
            aload 3 /* serverRandom */
            aload 2 /* clientRandom */
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.concat:([B[B)[B
            astore 19 /* seed */
        start local 19 // byte[] seed
        25: .line 122
            aload 1 /* masterSecret */
            getstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_KEY_EXPANSION:[B
            aload 19 /* seed */
        26: .line 123
            iload 15 /* keyBlockLen */
            aload 17 /* md5 */
            aload 18 /* sha */
        27: .line 122
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doPRF:([B[B[BILjava/security/MessageDigest;Ljava/security/MessageDigest;)[B
            astore 16 /* keyBlock */
        end local 19 // byte[] seed
        28: .line 124
            goto 49
        29: .line 126
      StackMap locals: com.sun.crypto.provider.TlsKeyMaterialGenerator byte[] byte[] byte[] javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec int int int int int int byte[] java.security.MessageDigest java.security.MessageDigest
      StackMap stack:
            iload 15 /* keyBlockLen */
            newarray 8
            astore 16 /* keyBlock */
        30: .line 128
            bipush 20
            newarray 8
            astore 19 /* tmp */
        start local 19 // byte[] tmp
        31: .line 129
            iconst_0
            istore 20 /* i */
        start local 20 // int i
        32: iload 15 /* keyBlockLen */
            istore 21 /* remaining */
        start local 21 // int remaining
        33: .line 130
            goto 47
        34: .line 133
      StackMap locals: byte[] int int
      StackMap stack:
            aload 18 /* sha */
            getstatic com.sun.crypto.provider.TlsPrfGenerator.SSL3_CONST:[[B
            iload 20 /* i */
            aaload
            invokevirtual java.security.MessageDigest.update:([B)V
        35: .line 134
            aload 18 /* sha */
            aload 1 /* masterSecret */
            invokevirtual java.security.MessageDigest.update:([B)V
        36: .line 135
            aload 18 /* sha */
            aload 3 /* serverRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
        37: .line 136
            aload 18 /* sha */
            aload 2 /* clientRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
        38: .line 137
            aload 18 /* sha */
            aload 19 /* tmp */
            iconst_0
            bipush 20
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        39: .line 139
            aload 17 /* md5 */
            aload 1 /* masterSecret */
            invokevirtual java.security.MessageDigest.update:([B)V
        40: .line 140
            aload 17 /* md5 */
            aload 19 /* tmp */
            invokevirtual java.security.MessageDigest.update:([B)V
        41: .line 142
            iload 21 /* remaining */
            bipush 16
            if_icmplt 44
        42: .line 143
            aload 17 /* md5 */
            aload 16 /* keyBlock */
            iload 20 /* i */
            iconst_4
            ishl
            bipush 16
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        43: .line 144
            goto 46
        44: .line 145
      StackMap locals:
      StackMap stack:
            aload 17 /* md5 */
            aload 19 /* tmp */
            iconst_0
            bipush 16
            invokevirtual java.security.MessageDigest.digest:([BII)I
            pop
        45: .line 146
            aload 19 /* tmp */
            iconst_0
            aload 16 /* keyBlock */
            iload 20 /* i */
            iconst_4
            ishl
            iload 21 /* remaining */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        46: .line 131
      StackMap locals:
      StackMap stack:
            iinc 20 /* i */ 1
            iinc 21 /* remaining */ -16
        47: .line 130
      StackMap locals:
      StackMap stack:
            iload 21 /* remaining */
        48: .line 129
            ifgt 34
        end local 21 // int remaining
        end local 20 // int i
        end local 19 // byte[] tmp
        49: .line 153
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 19 /* ofs */
        start local 19 // int ofs
        50: .line 154
            iload 10 /* macLength */
            newarray 8
            astore 20 /* tmp */
        start local 20 // byte[] tmp
        51: .line 157
            aload 16 /* keyBlock */
            iload 19 /* ofs */
            aload 20 /* tmp */
            iconst_0
            iload 10 /* macLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        52: .line 158
            iload 19 /* ofs */
            iload 10 /* macLength */
            iadd
            istore 19 /* ofs */
        53: .line 159
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 20 /* tmp */
            ldc "Mac"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 4 /* clientMacKey */
        54: .line 161
            aload 16 /* keyBlock */
            iload 19 /* ofs */
            aload 20 /* tmp */
            iconst_0
            iload 10 /* macLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        55: .line 162
            iload 19 /* ofs */
            iload 10 /* macLength */
            iadd
            istore 19 /* ofs */
        56: .line 163
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 20 /* tmp */
            ldc "Mac"
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 5 /* serverMacKey */
        57: .line 165
            iload 13 /* keyLength */
            ifne 59
        58: .line 166
            new sun.security.internal.spec.TlsKeyMaterialSpec
            dup
            aload 4 /* clientMacKey */
            aload 5 /* serverMacKey */
            invokespecial sun.security.internal.spec.TlsKeyMaterialSpec.<init>:(Ljavax/crypto/SecretKey;Ljavax/crypto/SecretKey;)V
            areturn
        59: .line 169
      StackMap locals: int byte[]
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.spec:Lsun/security/internal/spec/TlsKeyMaterialParameterSpec;
            invokevirtual sun.security.internal.spec.TlsKeyMaterialParameterSpec.getCipherAlgorithm:()Ljava/lang/String;
            astore 21 /* alg */
        start local 21 // java.lang.String alg
        60: .line 171
            iload 13 /* keyLength */
            newarray 8
            astore 22 /* clientKeyBytes */
        start local 22 // byte[] clientKeyBytes
        61: .line 172
            aload 16 /* keyBlock */
            iload 19 /* ofs */
            aload 22 /* clientKeyBytes */
            iconst_0
            iload 13 /* keyLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        62: .line 173
            iload 19 /* ofs */
            iload 13 /* keyLength */
            iadd
            istore 19 /* ofs */
        63: .line 175
            iload 13 /* keyLength */
            newarray 8
            astore 23 /* serverKeyBytes */
        start local 23 // byte[] serverKeyBytes
        64: .line 176
            aload 16 /* keyBlock */
            iload 19 /* ofs */
            aload 23 /* serverKeyBytes */
            iconst_0
            iload 13 /* keyLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        65: .line 177
            iload 19 /* ofs */
            iload 13 /* keyLength */
            iadd
            istore 19 /* ofs */
        66: .line 179
            iload 12 /* isExportable */
            ifne 78
        67: .line 181
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 22 /* clientKeyBytes */
            aload 21 /* alg */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 6 /* clientCipherKey */
        68: .line 182
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 23 /* serverKeyBytes */
            aload 21 /* alg */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 8 /* serverCipherKey */
        69: .line 184
            iload 14 /* ivLength */
            ifeq 119
        70: .line 185
            iload 14 /* ivLength */
            newarray 8
            astore 20 /* tmp */
        71: .line 187
            aload 16 /* keyBlock */
            iload 19 /* ofs */
            aload 20 /* tmp */
            iconst_0
            iload 14 /* ivLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        72: .line 188
            iload 19 /* ofs */
            iload 14 /* ivLength */
            iadd
            istore 19 /* ofs */
        73: .line 189
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 20 /* tmp */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 7 /* clientIv */
        74: .line 191
            aload 16 /* keyBlock */
            iload 19 /* ofs */
            aload 20 /* tmp */
            iconst_0
            iload 14 /* ivLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        75: .line 192
            iload 19 /* ofs */
            iload 14 /* ivLength */
            iadd
            istore 19 /* ofs */
        76: .line 193
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 20 /* tmp */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 9 /* serverIv */
        77: .line 195
            goto 119
        78: .line 197
      StackMap locals: java.lang.String byte[] byte[]
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.TlsKeyMaterialGenerator.protocolVersion:I
            sipush 769
            if_icmplt 98
        79: .line 198
            aload 2 /* clientRandom */
            aload 3 /* serverRandom */
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.concat:([B[B)[B
            astore 24 /* seed */
        start local 24 // byte[] seed
        80: .line 200
            aload 22 /* clientKeyBytes */
            getstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_CLIENT_WRITE_KEY:[B
            aload 24 /* seed */
        81: .line 201
            iload 11 /* expandedKeyLength */
            aload 17 /* md5 */
            aload 18 /* sha */
        82: .line 200
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doPRF:([B[B[BILjava/security/MessageDigest;Ljava/security/MessageDigest;)[B
            astore 20 /* tmp */
        83: .line 202
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 20 /* tmp */
            aload 21 /* alg */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 6 /* clientCipherKey */
        84: .line 204
            aload 23 /* serverKeyBytes */
            getstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_SERVER_WRITE_KEY:[B
            aload 24 /* seed */
        85: .line 205
            iload 11 /* expandedKeyLength */
            aload 17 /* md5 */
            aload 18 /* sha */
        86: .line 204
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doPRF:([B[B[BILjava/security/MessageDigest;Ljava/security/MessageDigest;)[B
            astore 20 /* tmp */
        87: .line 206
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 20 /* tmp */
            aload 21 /* alg */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 8 /* serverCipherKey */
        88: .line 208
            iload 14 /* ivLength */
            ifeq 119
        89: .line 209
            iload 14 /* ivLength */
            newarray 8
            astore 20 /* tmp */
        90: .line 210
            aconst_null
            getstatic com.sun.crypto.provider.TlsPrfGenerator.LABEL_IV_BLOCK:[B
            aload 24 /* seed */
        91: .line 211
            iload 14 /* ivLength */
            iconst_1
            ishl
            aload 17 /* md5 */
            aload 18 /* sha */
        92: .line 210
            invokestatic com.sun.crypto.provider.TlsPrfGenerator.doPRF:([B[B[BILjava/security/MessageDigest;Ljava/security/MessageDigest;)[B
            astore 25 /* block */
        start local 25 // byte[] block
        93: .line 212
            aload 25 /* block */
            iconst_0
            aload 20 /* tmp */
            iconst_0
            iload 14 /* ivLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        94: .line 213
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 20 /* tmp */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 7 /* clientIv */
        95: .line 214
            aload 25 /* block */
            iload 14 /* ivLength */
            aload 20 /* tmp */
            iconst_0
            iload 14 /* ivLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        96: .line 215
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 20 /* tmp */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 9 /* serverIv */
        end local 25 // byte[] block
        end local 24 // byte[] seed
        97: .line 217
            goto 119
        98: .line 218
      StackMap locals:
      StackMap stack:
            iload 11 /* expandedKeyLength */
            newarray 8
            astore 20 /* tmp */
        99: .line 220
            aload 17 /* md5 */
            aload 22 /* clientKeyBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
       100: .line 221
            aload 17 /* md5 */
            aload 2 /* clientRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
       101: .line 222
            aload 17 /* md5 */
            aload 3 /* serverRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
       102: .line 223
            aload 17 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            iconst_0
            aload 20 /* tmp */
            iconst_0
            iload 11 /* expandedKeyLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
       103: .line 224
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 20 /* tmp */
            aload 21 /* alg */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 6 /* clientCipherKey */
       104: .line 226
            aload 17 /* md5 */
            aload 23 /* serverKeyBytes */
            invokevirtual java.security.MessageDigest.update:([B)V
       105: .line 227
            aload 17 /* md5 */
            aload 3 /* serverRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
       106: .line 228
            aload 17 /* md5 */
            aload 2 /* clientRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
       107: .line 229
            aload 17 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            iconst_0
            aload 20 /* tmp */
            iconst_0
            iload 11 /* expandedKeyLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
       108: .line 230
            new javax.crypto.spec.SecretKeySpec
            dup
            aload 20 /* tmp */
            aload 21 /* alg */
            invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
            astore 8 /* serverCipherKey */
       109: .line 232
            iload 14 /* ivLength */
            ifeq 119
       110: .line 233
            iload 14 /* ivLength */
            newarray 8
            astore 20 /* tmp */
       111: .line 235
            aload 17 /* md5 */
            aload 2 /* clientRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
       112: .line 236
            aload 17 /* md5 */
            aload 3 /* serverRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
       113: .line 237
            aload 17 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            iconst_0
            aload 20 /* tmp */
            iconst_0
            iload 14 /* ivLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
       114: .line 238
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 20 /* tmp */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 7 /* clientIv */
       115: .line 240
            aload 17 /* md5 */
            aload 3 /* serverRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
       116: .line 241
            aload 17 /* md5 */
            aload 2 /* clientRandom */
            invokevirtual java.security.MessageDigest.update:([B)V
       117: .line 242
            aload 17 /* md5 */
            invokevirtual java.security.MessageDigest.digest:()[B
            iconst_0
            aload 20 /* tmp */
            iconst_0
            iload 14 /* ivLength */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
       118: .line 243
            new javax.crypto.spec.IvParameterSpec
            dup
            aload 20 /* tmp */
            invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
            astore 9 /* serverIv */
       119: .line 248
      StackMap locals:
      StackMap stack:
            new sun.security.internal.spec.TlsKeyMaterialSpec
            dup
            aload 4 /* clientMacKey */
            aload 5 /* serverMacKey */
       120: .line 249
            aload 6 /* clientCipherKey */
            aload 7 /* clientIv */
            aload 8 /* serverCipherKey */
            aload 9 /* serverIv */
       121: .line 248
            invokespecial sun.security.internal.spec.TlsKeyMaterialSpec.<init>:(Ljavax/crypto/SecretKey;Ljavax/crypto/SecretKey;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;)V
            areturn
        end local 23 // byte[] serverKeyBytes
        end local 22 // byte[] clientKeyBytes
        end local 21 // java.lang.String alg
        end local 20 // byte[] tmp
        end local 19 // int ofs
        end local 18 // java.security.MessageDigest sha
        end local 17 // java.security.MessageDigest md5
        end local 16 // byte[] keyBlock
        end local 15 // int keyBlockLen
        end local 14 // int ivLength
        end local 13 // int keyLength
        end local 12 // boolean isExportable
        end local 11 // int expandedKeyLength
        end local 10 // int macLength
        end local 9 // javax.crypto.spec.IvParameterSpec serverIv
        end local 8 // javax.crypto.SecretKey serverCipherKey
        end local 7 // javax.crypto.spec.IvParameterSpec clientIv
        end local 6 // javax.crypto.SecretKey clientCipherKey
        end local 5 // javax.crypto.SecretKey serverMacKey
        end local 4 // javax.crypto.SecretKey clientMacKey
        end local 3 // byte[] serverRandom
        end local 2 // byte[] clientRandom
        end local 1 // byte[] masterSecret
        end local 0 // com.sun.crypto.provider.TlsKeyMaterialGenerator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0  122     0               this  Lcom/sun/crypto/provider/TlsKeyMaterialGenerator;
            1  122     1       masterSecret  [B
            2  122     2       clientRandom  [B
            3  122     3       serverRandom  [B
            4  122     4       clientMacKey  Ljavax/crypto/SecretKey;
            5  122     5       serverMacKey  Ljavax/crypto/SecretKey;
            6  122     6    clientCipherKey  Ljavax/crypto/SecretKey;
            7  122     7           clientIv  Ljavax/crypto/spec/IvParameterSpec;
            8  122     8    serverCipherKey  Ljavax/crypto/SecretKey;
            9  122     9           serverIv  Ljavax/crypto/spec/IvParameterSpec;
           10  122    10          macLength  I
           11  122    11  expandedKeyLength  I
           14  122    12       isExportable  Z
           15  122    13          keyLength  I
           16  122    14           ivLength  I
           19  122    15        keyBlockLen  I
           21  122    16           keyBlock  [B
           22  122    17                md5  Ljava/security/MessageDigest;
           23  122    18                sha  Ljava/security/MessageDigest;
           25   28    19               seed  [B
           31   49    19                tmp  [B
           32   49    20                  i  I
           33   49    21          remaining  I
           50  122    19                ofs  I
           51  122    20                tmp  [B
           60  122    21                alg  Ljava/lang/String;
           61  122    22     clientKeyBytes  [B
           64  122    23     serverKeyBytes  [B
           80   97    24               seed  [B
           93   97    25              block  [B
    Exceptions:
      throws java.security.GeneralSecurityException
}
SourceFile: "TlsKeyMaterialGenerator.java"