final class sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator implements sun.security.ssl.SSLKeyAgreementGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator
  super_class: java.lang.Object
{
  private static volatile int[] $SWITCH_TABLE$sun$security$ssl$NamedGroup$NamedGroupSpec;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator this
         0: .line 436
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 438
            return
        end local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/ECDHKeyExchange$ECDHEXDHKAGenerator;

  public sun.security.ssl.SSLKeyDerivation createKeyDerivation(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLKeyDerivation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator this
        start local 1 // sun.security.ssl.HandshakeContext context
         0: .line 444
            aconst_null
            astore 2 /* namedGroupPossession */
        start local 2 // sun.security.ssl.NamedGroupPossession namedGroupPossession
         1: .line 445
            aconst_null
            astore 3 /* namedGroupCredentials */
        start local 3 // sun.security.ssl.NamedGroupCredentials namedGroupCredentials
         2: .line 446
            aconst_null
            astore 4 /* namedGroup */
        start local 4 // sun.security.ssl.NamedGroup namedGroup
         3: .line 450
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.handshakePossessions:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 20
      StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator sun.security.ssl.HandshakeContext sun.security.ssl.NamedGroupPossession sun.security.ssl.NamedGroupCredentials sun.security.ssl.NamedGroup top java.util.Iterator
      StackMap stack:
         4: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.SSLPossession
            astore 5 /* poss */
        start local 5 // sun.security.ssl.SSLPossession poss
         5: .line 451
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.handshakeCredentials:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 19
      StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator sun.security.ssl.HandshakeContext sun.security.ssl.NamedGroupPossession sun.security.ssl.NamedGroupCredentials sun.security.ssl.NamedGroup sun.security.ssl.SSLPossession java.util.Iterator top java.util.Iterator
      StackMap stack:
         6: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.SSLCredentials
            astore 7 /* cred */
        start local 7 // sun.security.ssl.SSLCredentials cred
         7: .line 452
            aload 5 /* poss */
            instanceof sun.security.ssl.ECDHKeyExchange$ECDHEPossession
            ifeq 9
         8: .line 453
            aload 7 /* cred */
            instanceof sun.security.ssl.ECDHKeyExchange$ECDHECredentials
            ifne 11
         9: .line 454
      StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator sun.security.ssl.HandshakeContext sun.security.ssl.NamedGroupPossession sun.security.ssl.NamedGroupCredentials sun.security.ssl.NamedGroup sun.security.ssl.SSLPossession java.util.Iterator sun.security.ssl.SSLCredentials java.util.Iterator
      StackMap stack:
            aload 5 /* poss */
            instanceof sun.security.ssl.XDHKeyExchange$XDHEPossession
            ifeq 19
        10: .line 455
            aload 7 /* cred */
            instanceof sun.security.ssl.XDHKeyExchange$XDHECredentials
            ifeq 19
        11: .line 456
      StackMap locals:
      StackMap stack:
            aload 5 /* poss */
            checkcast sun.security.ssl.NamedGroupPossession
            astore 9 /* p */
        start local 9 // sun.security.ssl.NamedGroupPossession p
        12: .line 457
            aload 7 /* cred */
            checkcast sun.security.ssl.NamedGroupCredentials
            astore 10 /* c */
        start local 10 // sun.security.ssl.NamedGroupCredentials c
        13: .line 458
            aload 9 /* p */
            invokeinterface sun.security.ssl.NamedGroupPossession.getNamedGroup:()Lsun/security/ssl/NamedGroup;
            aload 10 /* c */
            invokeinterface sun.security.ssl.NamedGroupCredentials.getNamedGroup:()Lsun/security/ssl/NamedGroup;
            if_acmpeq 15
        14: .line 459
            goto 19
        15: .line 461
      StackMap locals: sun.security.ssl.NamedGroupPossession sun.security.ssl.NamedGroupCredentials
      StackMap stack:
            aload 9 /* p */
            invokeinterface sun.security.ssl.NamedGroupPossession.getNamedGroup:()Lsun/security/ssl/NamedGroup;
            astore 4 /* namedGroup */
        16: .line 463
            aload 9 /* p */
            astore 2 /* namedGroupPossession */
        17: .line 464
            aload 10 /* c */
            astore 3 /* namedGroupCredentials */
        18: .line 465
            goto 21
        end local 10 // sun.security.ssl.NamedGroupCredentials c
        end local 9 // sun.security.ssl.NamedGroupPossession p
        end local 7 // sun.security.ssl.SSLCredentials cred
        19: .line 451
      StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator sun.security.ssl.HandshakeContext sun.security.ssl.NamedGroupPossession sun.security.ssl.NamedGroupCredentials sun.security.ssl.NamedGroup sun.security.ssl.SSLPossession java.util.Iterator top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 5 // sun.security.ssl.SSLPossession poss
        20: .line 450
      StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator sun.security.ssl.HandshakeContext sun.security.ssl.NamedGroupPossession sun.security.ssl.NamedGroupCredentials sun.security.ssl.NamedGroup top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        21: .line 470
      StackMap locals: sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator sun.security.ssl.HandshakeContext sun.security.ssl.NamedGroupPossession sun.security.ssl.NamedGroupCredentials sun.security.ssl.NamedGroup
      StackMap stack:
            aload 2 /* namedGroupPossession */
            ifnull 22
            aload 3 /* namedGroupCredentials */
            ifnonnull 25
        22: .line 471
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        23: .line 472
            ldc "No sufficient ECDHE/XDH key agreement parameters negotiated"
        24: .line 471
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        25: .line 477
      StackMap locals:
      StackMap stack:
            invokestatic sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator.$SWITCH_TABLE$sun$security$ssl$NamedGroup$NamedGroupSpec:()[I
            aload 4 /* namedGroup */
            getfield sun.security.ssl.NamedGroup.spec:Lsun/security/ssl/NamedGroup$NamedGroupSpec;
            invokevirtual sun.security.ssl.NamedGroup$NamedGroupSpec.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 26
                    2: 30
                    3: 28
              default: 30
          }
        26: .line 479
      StackMap locals:
      StackMap stack:
            ldc "ECDH"
            astore 5 /* alg */
        start local 5 // java.lang.String alg
        27: .line 480
            goto 31
        end local 5 // java.lang.String alg
        28: .line 482
      StackMap locals:
      StackMap stack:
            ldc "XDH"
            astore 5 /* alg */
        start local 5 // java.lang.String alg
        29: .line 483
            goto 31
        end local 5 // java.lang.String alg
        30: .line 485
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            ldc "Unexpected named group type"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        start local 5 // java.lang.String alg
        31: .line 488
      StackMap locals: java.lang.String
      StackMap stack:
            new sun.security.ssl.KAKeyDerivation
            dup
            aload 5 /* alg */
            aload 1 /* context */
        32: .line 489
            aload 2 /* namedGroupPossession */
            invokeinterface sun.security.ssl.NamedGroupPossession.getPrivateKey:()Ljava/security/PrivateKey;
        33: .line 490
            aload 3 /* namedGroupCredentials */
            invokeinterface sun.security.ssl.NamedGroupCredentials.getPublicKey:()Ljava/security/PublicKey;
        34: .line 488
            invokespecial sun.security.ssl.KAKeyDerivation.<init>:(Ljava/lang/String;Lsun/security/ssl/HandshakeContext;Ljava/security/PrivateKey;Ljava/security/PublicKey;)V
            areturn
        end local 5 // java.lang.String alg
        end local 4 // sun.security.ssl.NamedGroup namedGroup
        end local 3 // sun.security.ssl.NamedGroupCredentials namedGroupCredentials
        end local 2 // sun.security.ssl.NamedGroupPossession namedGroupPossession
        end local 1 // sun.security.ssl.HandshakeContext context
        end local 0 // sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   35     0                   this  Lsun/security/ssl/ECDHKeyExchange$ECDHEXDHKAGenerator;
            0   35     1                context  Lsun/security/ssl/HandshakeContext;
            1   35     2   namedGroupPossession  Lsun/security/ssl/NamedGroupPossession;
            2   35     3  namedGroupCredentials  Lsun/security/ssl/NamedGroupCredentials;
            3   35     4             namedGroup  Lsun/security/ssl/NamedGroup;
            5   20     5                   poss  Lsun/security/ssl/SSLPossession;
            7   19     7                   cred  Lsun/security/ssl/SSLCredentials;
           12   19     9                      p  Lsun/security/ssl/NamedGroupPossession;
           13   19    10                      c  Lsun/security/ssl/NamedGroupCredentials;
           27   28     5                    alg  Ljava/lang/String;
           29   30     5                    alg  Ljava/lang/String;
           31   35     5                    alg  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  

  static int[] $SWITCH_TABLE$sun$security$ssl$NamedGroup$NamedGroupSpec();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 434
            getstatic sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator.$SWITCH_TABLE$sun$security$ssl$NamedGroup$NamedGroupSpec:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic sun.security.ssl.NamedGroup$NamedGroupSpec.values:()[Lsun/security/ssl/NamedGroup$NamedGroupSpec;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic sun.security.ssl.NamedGroup$NamedGroupSpec.NAMED_GROUP_ARBITRARY:Lsun/security/ssl/NamedGroup$NamedGroupSpec;
            invokevirtual sun.security.ssl.NamedGroup$NamedGroupSpec.ordinal:()I
            iconst_4
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic sun.security.ssl.NamedGroup$NamedGroupSpec.NAMED_GROUP_ECDHE:Lsun/security/ssl/NamedGroup$NamedGroupSpec;
            invokevirtual sun.security.ssl.NamedGroup$NamedGroupSpec.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic sun.security.ssl.NamedGroup$NamedGroupSpec.NAMED_GROUP_FFDHE:Lsun/security/ssl/NamedGroup$NamedGroupSpec;
            invokevirtual sun.security.ssl.NamedGroup$NamedGroupSpec.ordinal:()I
            iconst_2
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic sun.security.ssl.NamedGroup$NamedGroupSpec.NAMED_GROUP_NONE:Lsun/security/ssl/NamedGroup$NamedGroupSpec;
            invokevirtual sun.security.ssl.NamedGroup$NamedGroupSpec.ordinal:()I
            iconst_5
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic sun.security.ssl.NamedGroup$NamedGroupSpec.NAMED_GROUP_XDH:Lsun/security/ssl/NamedGroup$NamedGroupSpec;
            invokevirtual sun.security.ssl.NamedGroup$NamedGroupSpec.ordinal:()I
            iconst_3
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            dup
            putstatic sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator.$SWITCH_TABLE$sun$security$ssl$NamedGroup$NamedGroupSpec:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
}
SourceFile: "ECDHKeyExchange.java"
NestHost: sun.security.ssl.ECDHKeyExchange
InnerClasses:
  final ECDHECredentials = sun.security.ssl.ECDHKeyExchange$ECDHECredentials of sun.security.ssl.ECDHKeyExchange
  final ECDHEPossession = sun.security.ssl.ECDHKeyExchange$ECDHEPossession of sun.security.ssl.ECDHKeyExchange
  private final ECDHEXDHKAGenerator = sun.security.ssl.ECDHKeyExchange$ECDHEXDHKAGenerator of sun.security.ssl.ECDHKeyExchange
  final NamedGroupSpec = sun.security.ssl.NamedGroup$NamedGroupSpec of sun.security.ssl.NamedGroup
  final XDHECredentials = sun.security.ssl.XDHKeyExchange$XDHECredentials of sun.security.ssl.XDHKeyExchange
  final XDHEPossession = sun.security.ssl.XDHKeyExchange$XDHEPossession of sun.security.ssl.XDHKeyExchange