final class sun.security.ssl.HandshakeMessage$ClientHello extends sun.security.ssl.HandshakeMessage
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.HandshakeMessage$ClientHello
  super_class: sun.security.ssl.HandshakeMessage
{
  sun.security.ssl.ProtocolVersion protocolVersion;
    descriptor: Lsun/security/ssl/ProtocolVersion;
    flags: (0x0000) 

  sun.security.ssl.RandomCookie clnt_random;
    descriptor: Lsun/security/ssl/RandomCookie;
    flags: (0x0000) 

  sun.security.ssl.SessionId sessionId;
    descriptor: Lsun/security/ssl/SessionId;
    flags: (0x0000) 

  private sun.security.ssl.CipherSuiteList cipherSuites;
    descriptor: Lsun/security/ssl/CipherSuiteList;
    flags: (0x0002) ACC_PRIVATE

  byte[] compression_methods;
    descriptor: [B
    flags: (0x0000) 

  sun.security.ssl.HelloExtensions extensions;
    descriptor: Lsun/security/ssl/HelloExtensions;
    flags: (0x0000) 

  private static final byte[] NULL_COMPRESSION;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 224
            iconst_1
            newarray 8
            putstatic sun.security.ssl.HandshakeMessage$ClientHello.NULL_COMPRESSION:[B
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.security.SecureRandom, sun.security.ssl.ProtocolVersion, sun.security.ssl.SessionId, sun.security.ssl.CipherSuiteList);
    descriptor: (Ljava/security/SecureRandom;Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/SessionId;Lsun/security/ssl/CipherSuiteList;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // java.security.SecureRandom generator
        start local 2 // sun.security.ssl.ProtocolVersion protocolVersion
        start local 3 // sun.security.ssl.SessionId sessionId
        start local 4 // sun.security.ssl.CipherSuiteList cipherSuites
         0: .line 226
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage.<init>:()V
         1: .line 222
            aload 0 /* this */
            new sun.security.ssl.HelloExtensions
            dup
            invokespecial sun.security.ssl.HelloExtensions.<init>:()V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
         2: .line 229
            aload 0 /* this */
            aload 2 /* protocolVersion */
            putfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         3: .line 230
            aload 0 /* this */
            aload 3 /* sessionId */
            putfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
         4: .line 231
            aload 0 /* this */
            aload 4 /* cipherSuites */
            putfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
         5: .line 233
            aload 0 /* this */
            new sun.security.ssl.RandomCookie
            dup
            aload 1 /* generator */
            invokespecial sun.security.ssl.RandomCookie.<init>:(Ljava/security/SecureRandom;)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.clnt_random:Lsun/security/ssl/RandomCookie;
         6: .line 234
            aload 0 /* this */
            getstatic sun.security.ssl.HandshakeMessage$ClientHello.NULL_COMPRESSION:[B
            putfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
         7: .line 235
            return
        end local 4 // sun.security.ssl.CipherSuiteList cipherSuites
        end local 3 // sun.security.ssl.SessionId sessionId
        end local 2 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 1 // java.security.SecureRandom generator
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    8     1        generator  Ljava/security/SecureRandom;
            0    8     2  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            0    8     3        sessionId  Lsun/security/ssl/SessionId;
            0    8     4     cipherSuites  Lsun/security/ssl/CipherSuiteList;
    MethodParameters:
                 Name  Flags
      generator        
      protocolVersion  
      sessionId        
      cipherSuites     

  void <init>(sun.security.ssl.HandshakeInStream, int);
    descriptor: (Lsun/security/ssl/HandshakeInStream;I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // sun.security.ssl.HandshakeInStream s
        start local 2 // int messageLength
         0: .line 237
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage.<init>:()V
         1: .line 222
            aload 0 /* this */
            new sun.security.ssl.HelloExtensions
            dup
            invokespecial sun.security.ssl.HelloExtensions.<init>:()V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
         2: .line 238
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            invokestatic sun.security.ssl.ProtocolVersion.valueOf:(II)Lsun/security/ssl/ProtocolVersion;
            putfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         3: .line 239
            aload 0 /* this */
            new sun.security.ssl.RandomCookie
            dup
            aload 1 /* s */
            invokespecial sun.security.ssl.RandomCookie.<init>:(Lsun/security/ssl/HandshakeInStream;)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.clnt_random:Lsun/security/ssl/RandomCookie;
         4: .line 240
            aload 0 /* this */
            new sun.security.ssl.SessionId
            dup
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes8:()[B
            invokespecial sun.security.ssl.SessionId.<init>:([B)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
         5: .line 241
            aload 0 /* this */
            new sun.security.ssl.CipherSuiteList
            dup
            aload 1 /* s */
            invokespecial sun.security.ssl.CipherSuiteList.<init>:(Lsun/security/ssl/HandshakeInStream;)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
         6: .line 242
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes8:()[B
            putfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
         7: .line 243
            aload 0 /* this */
            invokevirtual sun.security.ssl.HandshakeMessage$ClientHello.messageLength:()I
            iload 2 /* messageLength */
            if_icmpeq 9
         8: .line 244
            aload 0 /* this */
            new sun.security.ssl.HelloExtensions
            dup
            aload 1 /* s */
            invokespecial sun.security.ssl.HelloExtensions.<init>:(Lsun/security/ssl/HandshakeInStream;)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
         9: .line 246
      StackMap locals: sun.security.ssl.HandshakeMessage$ClientHello sun.security.ssl.HandshakeInStream int
      StackMap stack:
            return
        end local 2 // int messageLength
        end local 1 // sun.security.ssl.HandshakeInStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0   10     1              s  Lsun/security/ssl/HandshakeInStream;
            0   10     2  messageLength  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      s              
      messageLength  

  sun.security.ssl.CipherSuiteList getCipherSuites();
    descriptor: ()Lsun/security/ssl/CipherSuiteList;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 249
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
            areturn
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  void addRenegotiationInfoExtension(byte[]);
    descriptor: ([B)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // byte[] clientVerifyData
         0: .line 254
            new sun.security.ssl.RenegotiationInfoExtension
            dup
         1: .line 255
            aload 1 /* clientVerifyData */
            iconst_0
            newarray 8
         2: .line 254
            invokespecial sun.security.ssl.RenegotiationInfoExtension.<init>:([B[B)V
            astore 2 /* renegotiationInfo */
        start local 2 // sun.security.ssl.HelloExtension renegotiationInfo
         3: .line 256
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            aload 2 /* renegotiationInfo */
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         4: .line 257
            return
        end local 2 // sun.security.ssl.HelloExtension renegotiationInfo
        end local 1 // byte[] clientVerifyData
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    5     1   clientVerifyData  [B
            3    5     2  renegotiationInfo  Lsun/security/ssl/HelloExtension;
    MethodParameters:
                  Name  Flags
      clientVerifyData  

  void addExtendedMasterSecretExtension();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 260
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            new sun.security.ssl.ExtendedMasterSecretExtension
            dup
            invokespecial sun.security.ssl.ExtendedMasterSecretExtension.<init>:()V
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         1: .line 261
            return
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  int messageType();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 264
            iconst_1
            ireturn
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  int messageLength();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 272
            bipush 38
         1: .line 273
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
            invokevirtual sun.security.ssl.SessionId.length:()I
         2: .line 272
            iadd
         3: .line 274
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
            invokevirtual sun.security.ssl.CipherSuiteList.size:()I
            iconst_2
            imul
         4: .line 272
            iadd
         5: .line 275
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
            arraylength
         6: .line 272
            iadd
         7: .line 276
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            invokevirtual sun.security.ssl.HelloExtensions.length:()I
         8: .line 272
            iadd
            ireturn
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  void send(sun.security.ssl.HandshakeOutStream);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // sun.security.ssl.HandshakeOutStream s
         0: .line 281
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.major:B
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         1: .line 282
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.minor:B
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         2: .line 283
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.clnt_random:Lsun/security/ssl/RandomCookie;
            aload 1 /* s */
            invokevirtual sun.security.ssl.RandomCookie.send:(Lsun/security/ssl/HandshakeOutStream;)V
         3: .line 284
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
            invokevirtual sun.security.ssl.SessionId.getId:()[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
         4: .line 285
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
            aload 1 /* s */
            invokevirtual sun.security.ssl.CipherSuiteList.send:(Lsun/security/ssl/HandshakeOutStream;)V
         5: .line 286
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
         6: .line 287
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            aload 1 /* s */
            invokevirtual sun.security.ssl.HelloExtensions.send:(Lsun/security/ssl/HandshakeOutStream;)V
         7: .line 288
            return
        end local 1 // sun.security.ssl.HandshakeOutStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    8     1     s  Lsun/security/ssl/HandshakeOutStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  void print(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // java.io.PrintStream s
         0: .line 292
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "*** ClientHello, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 294
            getstatic sun.security.ssl.HandshakeMessage$ClientHello.debug:Lsun/security/ssl/Debug;
            ifnull 9
            ldc "verbose"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 9
         2: .line 295
            aload 1 /* s */
            ldc "RandomCookie:  "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.clnt_random:Lsun/security/ssl/RandomCookie;
            aload 1 /* s */
            invokevirtual sun.security.ssl.RandomCookie.print:(Ljava/io/PrintStream;)V
         3: .line 297
            aload 1 /* s */
            ldc "Session ID:  "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         4: .line 298
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/Object;)V
         5: .line 300
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "Cipher Suites: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         6: .line 302
            aload 1 /* s */
            ldc "Compression Methods"
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
            invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
         7: .line 303
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            aload 1 /* s */
            invokevirtual sun.security.ssl.HelloExtensions.print:(Ljava/io/PrintStream;)V
         8: .line 304
            aload 1 /* s */
            ldc "***"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 306
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.PrintStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0   10     1     s  Ljava/io/PrintStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     
}
SourceFile: "HandshakeMessage.java"
NestHost: sun.security.ssl.HandshakeMessage
InnerClasses:
  final ClientHello = sun.security.ssl.HandshakeMessage$ClientHello of sun.security.ssl.HandshakeMessage