class sun.security.provider.DSAKeyPairGenerator extends java.security.KeyPairGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.security.provider.DSAKeyPairGenerator
  super_class: java.security.KeyPairGenerator
{
  private int plen;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

  boolean forceNewParameters;
    descriptor: Z
    flags: (0x0000) 

  private java.security.spec.DSAParameterSpec params;
    descriptor: Ljava/security/spec/DSAParameterSpec;
    flags: (0x0002) ACC_PRIVATE

  private java.security.SecureRandom random;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0002) ACC_PRIVATE

  void <init>(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // int defaultKeySize
         0: .line 66
            aload 0 /* this */
            ldc "DSA"
            invokespecial java.security.KeyPairGenerator.<init>:(Ljava/lang/String;)V
         1: .line 67
            aload 0 /* this */
            iload 1 /* defaultKeySize */
            aconst_null
            invokevirtual sun.security.provider.DSAKeyPairGenerator.initialize:(ILjava/security/SecureRandom;)V
         2: .line 68
            return
        end local 1 // int defaultKeySize
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lsun/security/provider/DSAKeyPairGenerator;
            0    3     1  defaultKeySize  I
    MethodParameters:
                Name  Flags
      defaultKeySize  

  private static void checkStrength(int, int);
    descriptor: (II)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // int sizeP
        start local 1 // int sizeQ
         0: .line 71
            iload 0 /* sizeP */
            sipush 512
            if_icmplt 2
            iload 0 /* sizeP */
            sipush 1024
            if_icmpgt 2
            iload 0 /* sizeP */
            bipush 64
            irem
            ifne 2
         1: .line 72
            iload 1 /* sizeQ */
            sipush 160
            if_icmpeq 9
         2: .line 76
      StackMap locals:
      StackMap stack:
            iload 0 /* sizeP */
            sipush 2048
            if_icmpne 3
            iload 1 /* sizeQ */
            sipush 224
            if_icmpeq 9
            iload 1 /* sizeQ */
            sipush 256
            if_icmpeq 9
         3: .line 78
      StackMap locals:
      StackMap stack:
            iload 0 /* sizeP */
            sipush 3072
            if_icmpne 4
            iload 1 /* sizeQ */
            sipush 256
            if_icmpeq 9
         4: .line 81
      StackMap locals:
      StackMap stack:
            new java.security.InvalidParameterException
            dup
         5: .line 82
            new java.lang.StringBuilder
            dup
            ldc "Unsupported prime and subprime size combination: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 83
            iload 0 /* sizeP */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* sizeQ */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         7: .line 82
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 81
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 85
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int sizeQ
        end local 0 // int sizeP
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0  sizeP  I
            0   10     1  sizeQ  I
    MethodParameters:
       Name  Flags
      sizeP  
      sizeQ  

  public void initialize(int, java.security.SecureRandom);
    descriptor: (ILjava/security/SecureRandom;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // int modlen
        start local 2 // java.security.SecureRandom random
         0: .line 89
            aload 0 /* this */
            iload 1 /* modlen */
            iconst_1
            aload 2 /* random */
            invokevirtual sun.security.provider.DSAKeyPairGenerator.initialize:(IZLjava/security/SecureRandom;)V
         1: .line 90
            aload 0 /* this */
            iconst_0
            putfield sun.security.provider.DSAKeyPairGenerator.forceNewParameters:Z
         2: .line 91
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // int modlen
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lsun/security/provider/DSAKeyPairGenerator;
            0    3     1  modlen  I
            0    3     2  random  Ljava/security/SecureRandom;
    MethodParameters:
        Name  Flags
      modlen  
      random  

  public void initialize(int, boolean, java.security.SecureRandom);
    descriptor: (IZLjava/security/SecureRandom;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // int modlen
        start local 2 // boolean genParams
        start local 3 // java.security.SecureRandom random
         0: .line 98
            aload 0 /* this */
            iload 1 /* modlen */
            aload 3 /* random */
            iconst_0
            invokevirtual sun.security.provider.DSAKeyPairGenerator.init:(ILjava/security/SecureRandom;Z)V
         1: .line 99
            return
        end local 3 // java.security.SecureRandom random
        end local 2 // boolean genParams
        end local 1 // int modlen
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lsun/security/provider/DSAKeyPairGenerator;
            0    2     1     modlen  I
            0    2     2  genParams  Z
            0    2     3     random  Ljava/security/SecureRandom;
    MethodParameters:
           Name  Flags
      modlen     
      genParams  
      random     

  public void initialize(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // java.security.spec.AlgorithmParameterSpec params
        start local 2 // java.security.SecureRandom random
         0: .line 113
            aload 1 /* params */
            instanceof java.security.spec.DSAParameterSpec
            ifne 4
         1: .line 114
            new java.security.InvalidAlgorithmParameterException
            dup
         2: .line 115
            ldc "Inappropriate parameter"
         3: .line 114
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* params */
            checkcast java.security.spec.DSAParameterSpec
            aload 2 /* random */
            iconst_0
            invokevirtual sun.security.provider.DSAKeyPairGenerator.init:(Ljava/security/spec/DSAParameterSpec;Ljava/security/SecureRandom;Z)V
         5: .line 118
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.AlgorithmParameterSpec params
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lsun/security/provider/DSAKeyPairGenerator;
            0    6     1  params  Ljava/security/spec/AlgorithmParameterSpec;
            0    6     2  random  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      params  
      random  

  void init(int, java.security.SecureRandom, boolean);
    descriptor: (ILjava/security/SecureRandom;Z)V
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=4
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // int modlen
        start local 2 // java.security.SecureRandom random
        start local 3 // boolean forceNew
         0: .line 121
            iload 1 /* modlen */
            invokestatic sun.security.util.SecurityProviderConstants.getDefDSASubprimeSize:(I)I
            istore 4 /* subPrimeLen */
        start local 4 // int subPrimeLen
         1: .line 122
            iload 1 /* modlen */
            iload 4 /* subPrimeLen */
            invokestatic sun.security.provider.DSAKeyPairGenerator.checkStrength:(II)V
         2: .line 123
            aload 0 /* this */
            iload 1 /* modlen */
            putfield sun.security.provider.DSAKeyPairGenerator.plen:I
         3: .line 124
            aload 0 /* this */
            iload 4 /* subPrimeLen */
            putfield sun.security.provider.DSAKeyPairGenerator.qlen:I
         4: .line 125
            aload 0 /* this */
            aconst_null
            putfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
         5: .line 126
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
         6: .line 127
            aload 0 /* this */
            iload 3 /* forceNew */
            putfield sun.security.provider.DSAKeyPairGenerator.forceNewParameters:Z
         7: .line 128
            return
        end local 4 // int subPrimeLen
        end local 3 // boolean forceNew
        end local 2 // java.security.SecureRandom random
        end local 1 // int modlen
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lsun/security/provider/DSAKeyPairGenerator;
            0    8     1       modlen  I
            0    8     2       random  Ljava/security/SecureRandom;
            0    8     3     forceNew  Z
            1    8     4  subPrimeLen  I
    MethodParameters:
          Name  Flags
      modlen    
      random    
      forceNew  

  void init(java.security.spec.DSAParameterSpec, java.security.SecureRandom, boolean);
    descriptor: (Ljava/security/spec/DSAParameterSpec;Ljava/security/SecureRandom;Z)V
    flags: (0x0000) 
    Code:
      stack=2, locals=6, args_size=4
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // java.security.spec.DSAParameterSpec params
        start local 2 // java.security.SecureRandom random
        start local 3 // boolean forceNew
         0: .line 132
            aload 1 /* params */
            invokevirtual java.security.spec.DSAParameterSpec.getP:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 4 /* sizeP */
        start local 4 // int sizeP
         1: .line 133
            aload 1 /* params */
            invokevirtual java.security.spec.DSAParameterSpec.getQ:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 5 /* sizeQ */
        start local 5 // int sizeQ
         2: .line 134
            iload 4 /* sizeP */
            iload 5 /* sizeQ */
            invokestatic sun.security.provider.DSAKeyPairGenerator.checkStrength:(II)V
         3: .line 135
            aload 0 /* this */
            iload 4 /* sizeP */
            putfield sun.security.provider.DSAKeyPairGenerator.plen:I
         4: .line 136
            aload 0 /* this */
            iload 5 /* sizeQ */
            putfield sun.security.provider.DSAKeyPairGenerator.qlen:I
         5: .line 137
            aload 0 /* this */
            aload 1 /* params */
            putfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
         6: .line 138
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
         7: .line 139
            aload 0 /* this */
            iload 3 /* forceNew */
            putfield sun.security.provider.DSAKeyPairGenerator.forceNewParameters:Z
         8: .line 140
            return
        end local 5 // int sizeQ
        end local 4 // int sizeP
        end local 3 // boolean forceNew
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.DSAParameterSpec params
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lsun/security/provider/DSAKeyPairGenerator;
            0    9     1    params  Ljava/security/spec/DSAParameterSpec;
            0    9     2    random  Ljava/security/SecureRandom;
            0    9     3  forceNew  Z
            1    9     4     sizeP  I
            2    9     5     sizeQ  I
    MethodParameters:
          Name  Flags
      params    
      random    
      forceNew  

  public java.security.KeyPair generateKeyPair();
    descriptor: ()Ljava/security/KeyPair;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
         0: .line 147
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
            ifnonnull 2
         1: .line 148
            aload 0 /* this */
            invokestatic sun.security.jca.JCAUtil.getSecureRandom:()Ljava/security/SecureRandom;
            putfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
         2: .line 152
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.forceNewParameters:Z
            ifeq 5
         3: .line 154
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.plen:I
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.qlen:I
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
            invokestatic sun.security.provider.ParameterCache.getNewDSAParameterSpec:(IILjava/security/SecureRandom;)Ljava/security/spec/DSAParameterSpec;
            astore 1 /* spec */
        start local 1 // java.security.spec.DSAParameterSpec spec
         4: .line 155
            goto 13
        end local 1 // java.security.spec.DSAParameterSpec spec
         5: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
            ifnonnull 9
         6: .line 157
            aload 0 /* this */
         7: .line 158
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.plen:I
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.qlen:I
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
            invokestatic sun.security.provider.ParameterCache.getDSAParameterSpec:(IILjava/security/SecureRandom;)Ljava/security/spec/DSAParameterSpec;
         8: .line 157
            putfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
         9: .line 160
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
            astore 1 /* spec */
        start local 1 // java.security.spec.DSAParameterSpec spec
        10: .line 162
            goto 13
        end local 1 // java.security.spec.DSAParameterSpec spec
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
        11: astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
        12: .line 163
            new java.security.ProviderException
            dup
            aload 2 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        start local 1 // java.security.spec.DSAParameterSpec spec
        13: .line 165
      StackMap locals: java.security.spec.DSAParameterSpec
      StackMap stack:
            aload 0 /* this */
            aload 1 /* spec */
            invokevirtual java.security.spec.DSAParameterSpec.getP:()Ljava/math/BigInteger;
            aload 1 /* spec */
            invokevirtual java.security.spec.DSAParameterSpec.getQ:()Ljava/math/BigInteger;
            aload 1 /* spec */
            invokevirtual java.security.spec.DSAParameterSpec.getG:()Ljava/math/BigInteger;
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
            invokevirtual sun.security.provider.DSAKeyPairGenerator.generateKeyPair:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/security/KeyPair;
            areturn
        end local 1 // java.security.spec.DSAParameterSpec spec
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lsun/security/provider/DSAKeyPairGenerator;
            4    5     1  spec  Ljava/security/spec/DSAParameterSpec;
           10   11     1  spec  Ljava/security/spec/DSAParameterSpec;
           13   14     1  spec  Ljava/security/spec/DSAParameterSpec;
           12   13     2     e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           2    10      11  Class java.security.GeneralSecurityException

  private java.security.KeyPair generateKeyPair(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.security.SecureRandom);
    descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/security/KeyPair;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=10, args_size=5
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // java.math.BigInteger p
        start local 2 // java.math.BigInteger q
        start local 3 // java.math.BigInteger g
        start local 4 // java.security.SecureRandom random
         0: .line 171
            aload 0 /* this */
            aload 4 /* random */
            aload 2 /* q */
            invokevirtual sun.security.provider.DSAKeyPairGenerator.generateX:(Ljava/security/SecureRandom;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 5 /* x */
        start local 5 // java.math.BigInteger x
         1: .line 172
            aload 0 /* this */
            aload 5 /* x */
            aload 1 /* p */
            aload 3 /* g */
            invokevirtual sun.security.provider.DSAKeyPairGenerator.generateY:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 6 /* y */
        start local 6 // java.math.BigInteger y
         2: .line 179
            getstatic sun.security.provider.DSAKeyFactory.SERIAL_INTEROP:Z
            ifeq 5
         3: .line 180
            new sun.security.provider.DSAPublicKey
            dup
            aload 6 /* y */
            aload 1 /* p */
            aload 2 /* q */
            aload 3 /* g */
            invokespecial sun.security.provider.DSAPublicKey.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            astore 7 /* pub */
        start local 7 // sun.security.provider.DSAPublicKey pub
         4: .line 181
            goto 6
        end local 7 // sun.security.provider.DSAPublicKey pub
         5: .line 182
      StackMap locals: java.math.BigInteger java.math.BigInteger
      StackMap stack:
            new sun.security.provider.DSAPublicKeyImpl
            dup
            aload 6 /* y */
            aload 1 /* p */
            aload 2 /* q */
            aload 3 /* g */
            invokespecial sun.security.provider.DSAPublicKeyImpl.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            astore 7 /* pub */
        start local 7 // sun.security.provider.DSAPublicKey pub
         6: .line 184
      StackMap locals: sun.security.provider.DSAPublicKey
      StackMap stack:
            new sun.security.provider.DSAPrivateKey
            dup
            aload 5 /* x */
            aload 1 /* p */
            aload 2 /* q */
            aload 3 /* g */
            invokespecial sun.security.provider.DSAPrivateKey.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            astore 8 /* priv */
        start local 8 // sun.security.provider.DSAPrivateKey priv
         7: .line 186
            new java.security.KeyPair
            dup
            aload 7 /* pub */
            aload 8 /* priv */
            invokespecial java.security.KeyPair.<init>:(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V
            astore 9 /* pair */
        start local 9 // java.security.KeyPair pair
         8: .line 187
            aload 9 /* pair */
         9: areturn
        end local 9 // java.security.KeyPair pair
        end local 8 // sun.security.provider.DSAPrivateKey priv
        end local 7 // sun.security.provider.DSAPublicKey pub
        10: .line 188
      StackMap locals: sun.security.provider.DSAKeyPairGenerator java.math.BigInteger java.math.BigInteger java.math.BigInteger java.security.SecureRandom java.math.BigInteger java.math.BigInteger
      StackMap stack: java.security.InvalidKeyException
            astore 7 /* e */
        start local 7 // java.security.InvalidKeyException e
        11: .line 189
            new java.security.ProviderException
            dup
            aload 7 /* e */
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.security.InvalidKeyException e
        end local 6 // java.math.BigInteger y
        end local 5 // java.math.BigInteger x
        end local 4 // java.security.SecureRandom random
        end local 3 // java.math.BigInteger g
        end local 2 // java.math.BigInteger q
        end local 1 // java.math.BigInteger p
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lsun/security/provider/DSAKeyPairGenerator;
            0   12     1       p  Ljava/math/BigInteger;
            0   12     2       q  Ljava/math/BigInteger;
            0   12     3       g  Ljava/math/BigInteger;
            0   12     4  random  Ljava/security/SecureRandom;
            1   12     5       x  Ljava/math/BigInteger;
            2   12     6       y  Ljava/math/BigInteger;
            4    5     7     pub  Lsun/security/provider/DSAPublicKey;
            6   10     7     pub  Lsun/security/provider/DSAPublicKey;
            7   10     8    priv  Lsun/security/provider/DSAPrivateKey;
            8   10     9    pair  Ljava/security/KeyPair;
           11   12     7       e  Ljava/security/InvalidKeyException;
      Exception table:
        from    to  target  type
           2     9      10  Class java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      p       
      q       
      g       
      random  

  private java.math.BigInteger generateX(java.security.SecureRandom, java.math.BigInteger);
    descriptor: (Ljava/security/SecureRandom;Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // java.security.SecureRandom random
        start local 2 // java.math.BigInteger q
         0: .line 200
            aconst_null
            astore 3 /* x */
        start local 3 // java.math.BigInteger x
         1: .line 201
            aload 0 /* this */
            getfield sun.security.provider.DSAKeyPairGenerator.qlen:I
            newarray 8
            astore 4 /* temp */
        start local 4 // byte[] temp
         2: .line 203
      StackMap locals: java.math.BigInteger byte[]
      StackMap stack:
            aload 1 /* random */
            aload 4 /* temp */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         3: .line 204
            new java.math.BigInteger
            dup
            iconst_1
            aload 4 /* temp */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            aload 2 /* q */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 3 /* x */
         4: .line 205
            aload 3 /* x */
            invokevirtual java.math.BigInteger.signum:()I
            ifle 2
            aload 3 /* x */
            aload 2 /* q */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifge 2
         5: .line 206
            aload 3 /* x */
            areturn
        end local 4 // byte[] temp
        end local 3 // java.math.BigInteger x
        end local 2 // java.math.BigInteger q
        end local 1 // java.security.SecureRandom random
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lsun/security/provider/DSAKeyPairGenerator;
            0    6     1  random  Ljava/security/SecureRandom;
            0    6     2       q  Ljava/math/BigInteger;
            1    6     3       x  Ljava/math/BigInteger;
            2    6     4    temp  [B
    MethodParameters:
        Name  Flags
      random  
      q       

  java.math.BigInteger generateY(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // sun.security.provider.DSAKeyPairGenerator this
        start local 1 // java.math.BigInteger x
        start local 2 // java.math.BigInteger p
        start local 3 // java.math.BigInteger g
         0: .line 219
            aload 3 /* g */
            aload 1 /* x */
            aload 2 /* p */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 4 /* y */
        start local 4 // java.math.BigInteger y
         1: .line 220
            aload 4 /* y */
            areturn
        end local 4 // java.math.BigInteger y
        end local 3 // java.math.BigInteger g
        end local 2 // java.math.BigInteger p
        end local 1 // java.math.BigInteger x
        end local 0 // sun.security.provider.DSAKeyPairGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/provider/DSAKeyPairGenerator;
            0    2     1     x  Ljava/math/BigInteger;
            0    2     2     p  Ljava/math/BigInteger;
            0    2     3     g  Ljava/math/BigInteger;
            1    2     4     y  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      x     
      p     
      g     
}
SourceFile: "DSAKeyPairGenerator.java"
NestMembers:
  sun.security.provider.DSAKeyPairGenerator$Current  sun.security.provider.DSAKeyPairGenerator$Legacy
InnerClasses:
  public final Current = sun.security.provider.DSAKeyPairGenerator$Current of sun.security.provider.DSAKeyPairGenerator
  public final Legacy = sun.security.provider.DSAKeyPairGenerator$Legacy of sun.security.provider.DSAKeyPairGenerator