final class sun.security.ssl.ClientHello$T13ClientHelloConsumer implements sun.security.ssl.HandshakeConsumer
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.ClientHello$T13ClientHelloConsumer
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.ClientHello$T13ClientHelloConsumer this
         0: .line 1132
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1134
            return
        end local 0 // sun.security.ssl.ClientHello$T13ClientHelloConsumer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/ClientHello$T13ClientHelloConsumer;

  public void consume(sun.security.ssl.ConnectionContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
    descriptor: (Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // sun.security.ssl.ClientHello$T13ClientHelloConsumer this
        start local 1 // sun.security.ssl.ConnectionContext context
        start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
         0: .line 1140
            aload 1 /* context */
            checkcast sun.security.ssl.ServerHandshakeContext
            astore 3 /* shc */
        start local 3 // sun.security.ssl.ServerHandshakeContext shc
         1: .line 1141
            aload 2 /* message */
            checkcast sun.security.ssl.ClientHello$ClientHelloMessage
            astore 4 /* clientHello */
        start local 4 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
         2: .line 1147
            aload 3 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.isNegotiated:Z
            ifeq 6
         3: .line 1148
            aload 3 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
         4: .line 1149
            ldc "Received unexpected renegotiation handshake message"
         5: .line 1148
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
         6: .line 1154
      StackMap locals: sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage
      StackMap stack:
            aload 3 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.consumers:Ljava/util/Map;
         7: .line 1155
            getstatic sun.security.ssl.ContentType.CHANGE_CIPHER_SPEC:Lsun/security/ssl/ContentType;
            getfield sun.security.ssl.ContentType.id:B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
         8: .line 1156
            getstatic sun.security.ssl.ChangeCipherSpec.t13Consumer:Lsun/security/ssl/SSLConsumer;
         9: .line 1154
            invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 1163
            aload 3 /* shc */
            iconst_1
            putfield sun.security.ssl.ServerHandshakeContext.isResumption:Z
        11: .line 1164
            iconst_2
            anewarray sun.security.ssl.SSLExtension
            dup
            iconst_0
        12: .line 1165
            getstatic sun.security.ssl.SSLExtension.PSK_KEY_EXCHANGE_MODES:Lsun/security/ssl/SSLExtension;
            aastore
            dup
            iconst_1
        13: .line 1166
            getstatic sun.security.ssl.SSLExtension.CH_PRE_SHARED_KEY:Lsun/security/ssl/SSLExtension;
            aastore
        14: .line 1164
            astore 5 /* extTypes */
        start local 5 // sun.security.ssl.SSLExtension[] extTypes
        15: .line 1168
            aload 4 /* clientHello */
            getfield sun.security.ssl.ClientHello$ClientHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
            aload 3 /* shc */
            aload 5 /* extTypes */
            invokevirtual sun.security.ssl.SSLExtensions.consumeOnLoad:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
        16: .line 1176
            aload 3 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
        17: .line 1177
            getstatic sun.security.ssl.SSLHandshake.CLIENT_HELLO:Lsun/security/ssl/SSLHandshake;
            iconst_3
            anewarray sun.security.ssl.SSLExtension
            dup
            iconst_0
        18: .line 1179
            getstatic sun.security.ssl.SSLExtension.PSK_KEY_EXCHANGE_MODES:Lsun/security/ssl/SSLExtension;
            aastore
            dup
            iconst_1
        19: .line 1180
            getstatic sun.security.ssl.SSLExtension.CH_PRE_SHARED_KEY:Lsun/security/ssl/SSLExtension;
            aastore
            dup
            iconst_2
        20: .line 1181
            getstatic sun.security.ssl.SSLExtension.CH_SUPPORTED_VERSIONS:Lsun/security/ssl/SSLExtension;
            aastore
        21: .line 1178
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
        22: .line 1176
            invokevirtual sun.security.ssl.SSLConfiguration.getExclusiveExtensions:(Lsun/security/ssl/SSLHandshake;Ljava/util/List;)[Lsun/security/ssl/SSLExtension;
            astore 5 /* extTypes */
        23: .line 1182
            aload 4 /* clientHello */
            getfield sun.security.ssl.ClientHello$ClientHelloMessage.extensions:Lsun/security/ssl/SSLExtensions;
            aload 3 /* shc */
            aload 5 /* extTypes */
            invokevirtual sun.security.ssl.SSLExtensions.consumeOnLoad:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
        24: .line 1184
            aload 3 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
            invokevirtual java.util.HashMap.isEmpty:()Z
            ifne 27
        25: .line 1186
            aload 0 /* this */
            aload 3 /* shc */
            aload 4 /* clientHello */
            invokevirtual sun.security.ssl.ClientHello$T13ClientHelloConsumer.goHelloRetryRequest:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)V
        26: .line 1187
            goto 28
        27: .line 1188
      StackMap locals: sun.security.ssl.SSLExtension[]
      StackMap stack:
            aload 0 /* this */
            aload 3 /* shc */
            aload 4 /* clientHello */
            invokevirtual sun.security.ssl.ClientHello$T13ClientHelloConsumer.goServerHello:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)V
        28: .line 1190
      StackMap locals:
      StackMap stack:
            return
        end local 5 // sun.security.ssl.SSLExtension[] extTypes
        end local 4 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        end local 3 // sun.security.ssl.ServerHandshakeContext shc
        end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
        end local 1 // sun.security.ssl.ConnectionContext context
        end local 0 // sun.security.ssl.ClientHello$T13ClientHelloConsumer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   29     0         this  Lsun/security/ssl/ClientHello$T13ClientHelloConsumer;
            0   29     1      context  Lsun/security/ssl/ConnectionContext;
            0   29     2      message  Lsun/security/ssl/SSLHandshake$HandshakeMessage;
            1   29     3          shc  Lsun/security/ssl/ServerHandshakeContext;
            2   29     4  clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
           15   29     5     extTypes  [Lsun/security/ssl/SSLExtension;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  
      message  

  private void goHelloRetryRequest(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.ClientHello$ClientHelloMessage);
    descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.security.ssl.ClientHello$T13ClientHelloConsumer this
        start local 1 // sun.security.ssl.ServerHandshakeContext shc
        start local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
         0: .line 1195
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
         1: .line 1196
            getstatic sun.security.ssl.SSLHandshake.HELLO_RETRY_REQUEST:Lsun/security/ssl/SSLHandshake;
            getfield sun.security.ssl.SSLHandshake.id:B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
         2: .line 1195
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeProducer
         3: .line 1194
            astore 3 /* handshakeProducer */
        start local 3 // sun.security.ssl.HandshakeProducer handshakeProducer
         4: .line 1197
            aload 3 /* handshakeProducer */
            ifnull 7
         5: .line 1198
            aload 3 /* handshakeProducer */
            aload 1 /* shc */
            aload 2 /* clientHello */
            invokeinterface sun.security.ssl.HandshakeProducer.produce:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
            pop
         6: .line 1199
            goto 10
         7: .line 1201
      StackMap locals: sun.security.ssl.HandshakeProducer
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
         8: .line 1202
            new java.lang.StringBuilder
            dup
            ldc "No HelloRetryRequest producer: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 1201
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        10: .line 1205
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
            invokevirtual java.util.HashMap.isEmpty:()Z
            ifne 14
        11: .line 1207
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        12: .line 1208
            new java.lang.StringBuilder
            dup
            ldc "unknown handshake producers: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 1207
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        14: .line 1210
      StackMap locals:
      StackMap stack:
            return
        end local 3 // sun.security.ssl.HandshakeProducer handshakeProducer
        end local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        end local 1 // sun.security.ssl.ServerHandshakeContext shc
        end local 0 // sun.security.ssl.ClientHello$T13ClientHelloConsumer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0               this  Lsun/security/ssl/ClientHello$T13ClientHelloConsumer;
            0   15     1                shc  Lsun/security/ssl/ServerHandshakeContext;
            0   15     2        clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            4   15     3  handshakeProducer  Lsun/security/ssl/HandshakeProducer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      shc          
      clientHello  

  private void goServerHello(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.ClientHello$ClientHelloMessage);
    descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // sun.security.ssl.ClientHello$T13ClientHelloConsumer this
        start local 1 // sun.security.ssl.ServerHandshakeContext shc
        start local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
         0: .line 1217
            aload 1 /* shc */
            aload 2 /* clientHello */
            getfield sun.security.ssl.ClientHello$ClientHelloMessage.clientRandom:Lsun/security/ssl/RandomCookie;
            putfield sun.security.ssl.ServerHandshakeContext.clientHelloRandom:Lsun/security/ssl/RandomCookie;
         1: .line 1222
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.isNegotiated:Z
            ifne 4
         2: .line 1223
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            putfield sun.security.ssl.TransportContext.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         3: .line 1224
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.outputRecord:Lsun/security/ssl/OutputRecord;
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.OutputRecord.setVersion:(Lsun/security/ssl/ProtocolVersion;)V
         4: .line 1231
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
            getstatic sun.security.ssl.SSLHandshake.SERVER_HELLO:Lsun/security/ssl/SSLHandshake;
            getfield sun.security.ssl.SSLHandshake.id:B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
         5: .line 1232
            getstatic sun.security.ssl.SSLHandshake.SERVER_HELLO:Lsun/security/ssl/SSLHandshake;
         6: .line 1231
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 1234
            bipush 6
            anewarray sun.security.ssl.SSLHandshake
            dup
            iconst_0
         8: .line 1235
            getstatic sun.security.ssl.SSLHandshake.SERVER_HELLO:Lsun/security/ssl/SSLHandshake;
            aastore
            dup
            iconst_1
         9: .line 1238
            getstatic sun.security.ssl.SSLHandshake.ENCRYPTED_EXTENSIONS:Lsun/security/ssl/SSLHandshake;
            aastore
            dup
            iconst_2
        10: .line 1239
            getstatic sun.security.ssl.SSLHandshake.CERTIFICATE_REQUEST:Lsun/security/ssl/SSLHandshake;
            aastore
            dup
            iconst_3
        11: .line 1240
            getstatic sun.security.ssl.SSLHandshake.CERTIFICATE:Lsun/security/ssl/SSLHandshake;
            aastore
            dup
            iconst_4
        12: .line 1241
            getstatic sun.security.ssl.SSLHandshake.CERTIFICATE_VERIFY:Lsun/security/ssl/SSLHandshake;
            aastore
            dup
            iconst_5
        13: .line 1242
            getstatic sun.security.ssl.SSLHandshake.FINISHED:Lsun/security/ssl/SSLHandshake;
            aastore
        14: .line 1234
            astore 3 /* probableHandshakeMessages */
        start local 3 // sun.security.ssl.SSLHandshake[] probableHandshakeMessages
        15: .line 1248
            aload 3 /* probableHandshakeMessages */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 22
      StackMap locals: sun.security.ssl.ClientHello$T13ClientHelloConsumer sun.security.ssl.ServerHandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLHandshake[] top int int sun.security.ssl.SSLHandshake[]
      StackMap stack:
        16: aload 7
            iload 5
            aaload
            astore 4 /* hs */
        start local 4 // sun.security.ssl.SSLHandshake hs
        17: .line 1250
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeProducers:Ljava/util/HashMap;
            aload 4 /* hs */
            getfield sun.security.ssl.SSLHandshake.id:B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeProducer
        18: .line 1249
            astore 8 /* handshakeProducer */
        start local 8 // sun.security.ssl.HandshakeProducer handshakeProducer
        19: .line 1251
            aload 8 /* handshakeProducer */
            ifnull 21
        20: .line 1252
            aload 8 /* handshakeProducer */
            aload 1 /* shc */
            aload 2 /* clientHello */
            invokeinterface sun.security.ssl.HandshakeProducer.produce:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
            pop
        end local 8 // sun.security.ssl.HandshakeProducer handshakeProducer
        end local 4 // sun.security.ssl.SSLHandshake hs
        21: .line 1248
      StackMap locals:
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        22: iload 5
            iload 6
            if_icmplt 16
        23: .line 1255
            return
        end local 3 // sun.security.ssl.SSLHandshake[] probableHandshakeMessages
        end local 2 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        end local 1 // sun.security.ssl.ServerHandshakeContext shc
        end local 0 // sun.security.ssl.ClientHello$T13ClientHelloConsumer this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   24     0                       this  Lsun/security/ssl/ClientHello$T13ClientHelloConsumer;
            0   24     1                        shc  Lsun/security/ssl/ServerHandshakeContext;
            0   24     2                clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
           15   24     3  probableHandshakeMessages  [Lsun/security/ssl/SSLHandshake;
           17   21     4                         hs  Lsun/security/ssl/SSLHandshake;
           19   21     8          handshakeProducer  Lsun/security/ssl/HandshakeProducer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      shc          
      clientHello  
}
SourceFile: "ClientHello.java"
NestHost: sun.security.ssl.ClientHello
InnerClasses:
  final ClientHelloMessage = sun.security.ssl.ClientHello$ClientHelloMessage of sun.security.ssl.ClientHello
  private final T13ClientHelloConsumer = sun.security.ssl.ClientHello$T13ClientHelloConsumer of sun.security.ssl.ClientHello
  abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake