public class sun.security.provider.DSAParameterGenerator extends java.security.AlgorithmParameterGeneratorSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.security.provider.DSAParameterGenerator
  super_class: java.security.AlgorithmParameterGeneratorSpi
{
  private int valueL;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private static final java.math.BigInteger TWO;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 71
            ldc 2
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.security.provider.DSAParameterGenerator this
         0: .line 73
            aload 0 /* this */
            invokespecial java.security.AlgorithmParameterGeneratorSpi.<init>:()V
         1: .line 63
            aload 0 /* this */
            iconst_m1
            putfield sun.security.provider.DSAParameterGenerator.valueL:I
         2: .line 64
            aload 0 /* this */
            iconst_m1
            putfield sun.security.provider.DSAParameterGenerator.valueN:I
         3: .line 65
            aload 0 /* this */
            iconst_m1
            putfield sun.security.provider.DSAParameterGenerator.seedLen:I
         4: .line 74
            return
        end local 0 // sun.security.provider.DSAParameterGenerator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/security/provider/DSAParameterGenerator;

  protected void engineInit(int, java.security.SecureRandom);
    descriptor: (ILjava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // sun.security.provider.DSAParameterGenerator this
        start local 1 // int strength
        start local 2 // java.security.SecureRandom random
         0: .line 85
            iload 1 /* strength */
            sipush 2048
            if_icmpeq 7
            iload 1 /* strength */
            sipush 3072
            if_icmpeq 7
         1: .line 86
            iload 1 /* strength */
            sipush 512
            if_icmplt 2
            iload 1 /* strength */
            sipush 1024
            if_icmpgt 2
            iload 1 /* strength */
            bipush 64
            irem
            ifeq 7
         2: .line 87
      StackMap locals:
      StackMap stack:
            new java.security.InvalidParameterException
            dup
         3: .line 88
            new java.lang.StringBuilder
            dup
            ldc "Unexpected strength (size of prime): "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* strength */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         4: .line 89
            ldc ". Prime size should be 512-1024, 2048, or 3072"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 88
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 87
            invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* strength */
            putfield sun.security.provider.DSAParameterGenerator.valueL:I
         8: .line 92
            aload 0 /* this */
            iload 1 /* strength */
            invokestatic sun.security.util.SecurityProviderConstants.getDefDSASubprimeSize:(I)I
            putfield sun.security.provider.DSAParameterGenerator.valueN:I
         9: .line 93
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.security.provider.DSAParameterGenerator.valueN:I
            putfield sun.security.provider.DSAParameterGenerator.seedLen:I
        10: .line 94
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.provider.DSAParameterGenerator.random:Ljava/security/SecureRandom;
        11: .line 95
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // int strength
        end local 0 // sun.security.provider.DSAParameterGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lsun/security/provider/DSAParameterGenerator;
            0   12     1  strength  I
            0   12     2    random  Ljava/security/SecureRandom;
    MethodParameters:
          Name  Flags
      strength  
      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=4, args_size=3
        start local 0 // sun.security.provider.DSAParameterGenerator this
        start local 1 // java.security.spec.AlgorithmParameterSpec genParamSpec
        start local 2 // java.security.SecureRandom random
         0: .line 111
            aload 1 /* genParamSpec */
            instanceof java.security.spec.DSAGenParameterSpec
            ifne 2
         1: .line 112
            new java.security.InvalidAlgorithmParameterException
            dup
            ldc "Invalid parameter"
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 114
      StackMap locals:
      StackMap stack:
            aload 1 /* genParamSpec */
            checkcast java.security.spec.DSAGenParameterSpec
            astore 3 /* dsaGenParams */
        start local 3 // java.security.spec.DSAGenParameterSpec dsaGenParams
         3: .line 117
            aload 0 /* this */
            aload 3 /* dsaGenParams */
            invokevirtual java.security.spec.DSAGenParameterSpec.getPrimePLength:()I
            putfield sun.security.provider.DSAParameterGenerator.valueL:I
         4: .line 118
            aload 0 /* this */
            aload 3 /* dsaGenParams */
            invokevirtual java.security.spec.DSAGenParameterSpec.getSubprimeQLength:()I
            putfield sun.security.provider.DSAParameterGenerator.valueN:I
         5: .line 119
            aload 0 /* this */
            aload 3 /* dsaGenParams */
            invokevirtual java.security.spec.DSAGenParameterSpec.getSeedLength:()I
            putfield sun.security.provider.DSAParameterGenerator.seedLen:I
         6: .line 120
            aload 0 /* this */
            aload 2 /* random */
            putfield sun.security.provider.DSAParameterGenerator.random:Ljava/security/SecureRandom;
         7: .line 121
            return
        end local 3 // java.security.spec.DSAGenParameterSpec dsaGenParams
        end local 2 // java.security.SecureRandom random
        end local 1 // java.security.spec.AlgorithmParameterSpec genParamSpec
        end local 0 // sun.security.provider.DSAParameterGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lsun/security/provider/DSAParameterGenerator;
            0    8     1  genParamSpec  Ljava/security/spec/AlgorithmParameterSpec;
            0    8     2        random  Ljava/security/SecureRandom;
            3    8     3  dsaGenParams  Ljava/security/spec/DSAGenParameterSpec;
    Exceptions:
      throws java.security.InvalidAlgorithmParameterException
    MethodParameters:
              Name  Flags
      genParamSpec  
      random        

  protected java.security.AlgorithmParameters engineGenerateParameters();
    descriptor: ()Ljava/security/AlgorithmParameters;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // sun.security.provider.DSAParameterGenerator this
         0: .line 130
            aconst_null
            astore 1 /* algParams */
        start local 1 // java.security.AlgorithmParameters algParams
         1: .line 132
            aload 0 /* this */
            getfield sun.security.provider.DSAParameterGenerator.random:Ljava/security/SecureRandom;
            ifnonnull 3
         2: .line 133
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield sun.security.provider.DSAParameterGenerator.random:Ljava/security/SecureRandom;
         3: .line 135
      StackMap locals: java.security.AlgorithmParameters
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.provider.DSAParameterGenerator.valueL:I
            iconst_m1
            if_icmpne 5
         4: .line 136
            aload 0 /* this */
            getstatic sun.security.util.SecurityProviderConstants.DEF_DSA_KEY_SIZE:I
            aload 0 /* this */
            getfield sun.security.provider.DSAParameterGenerator.random:Ljava/security/SecureRandom;
            invokevirtual sun.security.provider.DSAParameterGenerator.engineInit:(ILjava/security/SecureRandom;)V
         5: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.provider.DSAParameterGenerator.random:Ljava/security/SecureRandom;
            aload 0 /* this */
            getfield sun.security.provider.DSAParameterGenerator.valueL:I
         6: .line 139
            aload 0 /* this */
            getfield sun.security.provider.DSAParameterGenerator.valueN:I
            aload 0 /* this */
            getfield sun.security.provider.DSAParameterGenerator.seedLen:I
         7: .line 138
            invokestatic sun.security.provider.DSAParameterGenerator.generatePandQ:(Ljava/security/SecureRandom;III)[Ljava/math/BigInteger;
            astore 2 /* pAndQ */
        start local 2 // java.math.BigInteger[] pAndQ
         8: .line 140
            aload 2 /* pAndQ */
            iconst_0
            aaload
            astore 3 /* paramP */
        start local 3 // java.math.BigInteger paramP
         9: .line 141
            aload 2 /* pAndQ */
            iconst_1
            aaload
            astore 4 /* paramQ */
        start local 4 // java.math.BigInteger paramQ
        10: .line 142
            aload 3 /* paramP */
            aload 4 /* paramQ */
            invokestatic sun.security.provider.DSAParameterGenerator.generateG:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 5 /* paramG */
        start local 5 // java.math.BigInteger paramG
        11: .line 145
            new java.security.spec.DSAParameterSpec
            dup
            aload 3 /* paramP */
            aload 4 /* paramQ */
            aload 5 /* paramG */
            invokespecial java.security.spec.DSAParameterSpec.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
        12: .line 144
            astore 6 /* dsaParamSpec */
        start local 6 // java.security.spec.DSAParameterSpec dsaParamSpec
        13: .line 146
            ldc "DSA"
            ldc "SUN"
            invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;
            astore 1 /* algParams */
        14: .line 147
            aload 1 /* algParams */
            aload 6 /* dsaParamSpec */
            invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
        end local 6 // java.security.spec.DSAParameterSpec dsaParamSpec
        end local 5 // java.math.BigInteger paramG
        end local 4 // java.math.BigInteger paramQ
        end local 3 // java.math.BigInteger paramP
        end local 2 // java.math.BigInteger[] pAndQ
        15: .line 148
            goto 22
      StackMap locals:
      StackMap stack: java.security.spec.InvalidParameterSpecException
        16: astore 2 /* e */
        start local 2 // java.security.spec.InvalidParameterSpecException e
        17: .line 150
            new java.lang.RuntimeException
            dup
            aload 2 /* e */
            invokevirtual java.security.spec.InvalidParameterSpecException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.security.spec.InvalidParameterSpecException e
        18: .line 151
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 2 /* e */
        start local 2 // java.security.NoSuchAlgorithmException e
        19: .line 153
            new java.lang.RuntimeException
            dup
            aload 2 /* e */
            invokevirtual java.security.NoSuchAlgorithmException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.security.NoSuchAlgorithmException e
        20: .line 154
      StackMap locals:
      StackMap stack: java.security.NoSuchProviderException
            astore 2 /* e */
        start local 2 // java.security.NoSuchProviderException e
        21: .line 156
            new java.lang.RuntimeException
            dup
            aload 2 /* e */
            invokevirtual java.security.NoSuchProviderException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.security.NoSuchProviderException e
        22: .line 159
      StackMap locals:
      StackMap stack:
            aload 1 /* algParams */
            areturn
        end local 1 // java.security.AlgorithmParameters algParams
        end local 0 // sun.security.provider.DSAParameterGenerator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   23     0          this  Lsun/security/provider/DSAParameterGenerator;
            1   23     1     algParams  Ljava/security/AlgorithmParameters;
            8   15     2         pAndQ  [Ljava/math/BigInteger;
            9   15     3        paramP  Ljava/math/BigInteger;
           10   15     4        paramQ  Ljava/math/BigInteger;
           11   15     5        paramG  Ljava/math/BigInteger;
           13   15     6  dsaParamSpec  Ljava/security/spec/DSAParameterSpec;
           17   18     2             e  Ljava/security/spec/InvalidParameterSpecException;
           19   20     2             e  Ljava/security/NoSuchAlgorithmException;
           21   22     2             e  Ljava/security/NoSuchProviderException;
      Exception table:
        from    to  target  type
           1    15      16  Class java.security.spec.InvalidParameterSpecException
           1    15      18  Class java.security.NoSuchAlgorithmException
           1    15      20  Class java.security.NoSuchProviderException

  private static java.math.BigInteger[] generatePandQ(java.security.SecureRandom, int, int, int);
    descriptor: (Ljava/security/SecureRandom;III)[Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=23, args_size=4
        start local 0 // java.security.SecureRandom random
        start local 1 // int valueL
        start local 2 // int valueN
        start local 3 // int seedLen
         0: .line 180
            aconst_null
            astore 4 /* hashAlg */
        start local 4 // java.lang.String hashAlg
         1: .line 181
            iload 2 /* valueN */
            sipush 160
            if_icmpne 4
         2: .line 182
            ldc "SHA"
            astore 4 /* hashAlg */
         3: .line 183
            goto 9
      StackMap locals: java.lang.String
      StackMap stack:
         4: iload 2 /* valueN */
            sipush 224
            if_icmpne 7
         5: .line 184
            ldc "SHA-224"
            astore 4 /* hashAlg */
         6: .line 185
            goto 9
      StackMap locals:
      StackMap stack:
         7: iload 2 /* valueN */
            sipush 256
            if_icmpne 9
         8: .line 186
            ldc "SHA-256"
            astore 4 /* hashAlg */
         9: .line 188
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* hashObj */
        start local 5 // java.security.MessageDigest hashObj
        10: .line 190
            aload 4 /* hashAlg */
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 5 /* hashObj */
        11: .line 191
            goto 14
      StackMap locals: java.security.SecureRandom int int int java.lang.String java.security.MessageDigest
      StackMap stack: java.security.NoSuchAlgorithmException
        12: astore 6 /* nsae */
        start local 6 // java.security.NoSuchAlgorithmException nsae
        13: .line 193
            aload 6 /* nsae */
            invokevirtual java.security.NoSuchAlgorithmException.printStackTrace:()V
        end local 6 // java.security.NoSuchAlgorithmException nsae
        14: .line 197
      StackMap locals:
      StackMap stack:
            aload 5 /* hashObj */
            invokevirtual java.security.MessageDigest.getDigestLength:()I
            bipush 8
            imul
            istore 6 /* outLen */
        start local 6 // int outLen
        15: .line 198
            iload 1 /* valueL */
            iconst_1
            isub
            iload 6 /* outLen */
            idiv
            istore 7 /* n */
        start local 7 // int n
        16: .line 199
            iload 1 /* valueL */
            iconst_1
            isub
            iload 6 /* outLen */
            irem
            istore 8 /* b */
        start local 8 // int b
        17: .line 200
            iload 3 /* seedLen */
            bipush 8
            idiv
            newarray 8
            astore 9 /* seedBytes */
        start local 9 // byte[] seedBytes
        18: .line 201
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            iload 3 /* seedLen */
            invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
            astore 10 /* twoSl */
        start local 10 // java.math.BigInteger twoSl
        19: .line 202
            iconst_m1
            istore 11 /* primeCertainty */
        start local 11 // int primeCertainty
        20: .line 203
            iload 1 /* valueL */
            sipush 1024
            if_icmpgt 23
        21: .line 204
            bipush 80
            istore 11 /* primeCertainty */
        22: .line 205
            goto 28
      StackMap locals: java.security.SecureRandom int int int java.lang.String java.security.MessageDigest int int int byte[] java.math.BigInteger int
      StackMap stack:
        23: iload 1 /* valueL */
            sipush 2048
            if_icmpne 26
        24: .line 206
            bipush 112
            istore 11 /* primeCertainty */
        25: .line 207
            goto 28
      StackMap locals:
      StackMap stack:
        26: iload 1 /* valueL */
            sipush 3072
            if_icmpne 28
        27: .line 208
            sipush 128
            istore 11 /* primeCertainty */
        28: .line 210
      StackMap locals:
      StackMap stack:
            iload 11 /* primeCertainty */
            ifge 30
        29: .line 211
            new java.security.ProviderException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid valueL: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* valueL */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.ProviderException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 213
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 14 /* seed */
        start local 14 // java.math.BigInteger seed
        31: .line 218
      StackMap locals: java.security.SecureRandom int int int java.lang.String java.security.MessageDigest int int int byte[] java.math.BigInteger int top top java.math.BigInteger
      StackMap stack:
            aload 0 /* random */
            aload 9 /* seedBytes */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
        32: .line 219
            new java.math.BigInteger
            dup
            iconst_1
            aload 9 /* seedBytes */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            astore 14 /* seed */
        33: .line 222
            new java.math.BigInteger
            dup
            iconst_1
            aload 5 /* hashObj */
            aload 9 /* seedBytes */
            invokevirtual java.security.MessageDigest.digest:([B)[B
            invokespecial java.math.BigInteger.<init>:(I[B)V
        34: .line 223
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            iload 2 /* valueN */
            iconst_1
            isub
            invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        35: .line 222
            astore 16 /* U */
        start local 16 // java.math.BigInteger U
        36: .line 226
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            iload 2 /* valueN */
            iconst_1
            isub
            invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
        37: .line 227
            aload 16 /* U */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        38: .line 228
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        39: .line 229
            aload 16 /* U */
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        40: .line 226
            astore 13 /* resultQ */
        end local 16 // java.math.BigInteger U
        start local 13 // java.math.BigInteger resultQ
        41: .line 230
            aload 13 /* resultQ */
            iload 11 /* primeCertainty */
            invokevirtual java.math.BigInteger.isProbablePrime:(I)Z
            ifeq 31
        42: .line 233
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            astore 16 /* offset */
        start local 16 // java.math.BigInteger offset
        43: .line 235
            iconst_0
            istore 15 /* counter */
        start local 15 // int counter
        44: goto 75
        45: .line 236
      StackMap locals: java.security.SecureRandom int int int java.lang.String java.security.MessageDigest int int int byte[] java.math.BigInteger int top java.math.BigInteger java.math.BigInteger int java.math.BigInteger
      StackMap stack:
            iload 7 /* n */
            iconst_1
            iadd
            anewarray java.math.BigInteger
            astore 17 /* V */
        start local 17 // java.math.BigInteger[] V
        46: .line 238
            iconst_0
            istore 18 /* j */
        start local 18 // int j
        47: goto 53
        48: .line 239
      StackMap locals: java.math.BigInteger[] int
      StackMap stack:
            iload 18 /* j */
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            astore 19 /* J */
        start local 19 // java.math.BigInteger J
        49: .line 240
            aload 14 /* seed */
            aload 16 /* offset */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 19 /* J */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 10 /* twoSl */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 20 /* tmp */
        start local 20 // java.math.BigInteger tmp
        50: .line 241
            aload 5 /* hashObj */
            aload 20 /* tmp */
            invokestatic sun.security.provider.DSAParameterGenerator.toByteArray:(Ljava/math/BigInteger;)[B
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 21 /* vjBytes */
        start local 21 // byte[] vjBytes
        51: .line 242
            aload 17 /* V */
            iload 18 /* j */
            new java.math.BigInteger
            dup
            iconst_1
            aload 21 /* vjBytes */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            aastore
        end local 21 // byte[] vjBytes
        end local 20 // java.math.BigInteger tmp
        end local 19 // java.math.BigInteger J
        52: .line 238
            iinc 18 /* j */ 1
      StackMap locals:
      StackMap stack:
        53: iload 18 /* j */
            iload 7 /* n */
            if_icmple 48
        end local 18 // int j
        54: .line 245
            aload 17 /* V */
            iconst_0
            aaload
            astore 18 /* W */
        start local 18 // java.math.BigInteger W
        55: .line 246
            iconst_1
            istore 19 /* i */
        start local 19 // int i
        56: goto 59
        57: .line 247
      StackMap locals: java.security.SecureRandom int int int java.lang.String java.security.MessageDigest int int int byte[] java.math.BigInteger int top java.math.BigInteger java.math.BigInteger int java.math.BigInteger java.math.BigInteger[] java.math.BigInteger int
      StackMap stack:
            aload 18 /* W */
            aload 17 /* V */
            iload 19 /* i */
            aaload
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            iload 19 /* i */
            iload 6 /* outLen */
            imul
            invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 18 /* W */
        58: .line 246
            iinc 19 /* i */ 1
      StackMap locals:
      StackMap stack:
        59: iload 19 /* i */
            iload 7 /* n */
            if_icmplt 57
        end local 19 // int i
        60: .line 249
            aload 18 /* W */
            aload 17 /* V */
            iload 7 /* n */
            aaload
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            iload 8 /* b */
            invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        61: .line 250
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            iload 7 /* n */
            iload 6 /* outLen */
            imul
            invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        62: .line 249
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 18 /* W */
        63: .line 252
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            iload 1 /* valueL */
            iconst_1
            isub
            invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
            astore 19 /* twoLm1 */
        start local 19 // java.math.BigInteger twoLm1
        64: .line 253
            aload 18 /* W */
            aload 19 /* twoLm1 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 20 /* X */
        start local 20 // java.math.BigInteger X
        65: .line 255
            aload 20 /* X */
            aload 13 /* resultQ */
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 21 /* c */
        start local 21 // java.math.BigInteger c
        66: .line 256
            aload 20 /* X */
            aload 21 /* c */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 12 /* resultP */
        start local 12 // java.math.BigInteger resultP
        67: .line 258
            aload 12 /* resultP */
            aload 19 /* twoLm1 */
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            iconst_m1
            if_icmple 73
        68: .line 259
            aload 12 /* resultP */
            iload 11 /* primeCertainty */
            invokevirtual java.math.BigInteger.isProbablePrime:(I)Z
            ifeq 73
        69: .line 261
            iconst_4
            anewarray java.math.BigInteger
            dup
            iconst_0
            aload 12 /* resultP */
            aastore
            dup
            iconst_1
            aload 13 /* resultQ */
            aastore
            dup
            iconst_2
            aload 14 /* seed */
            aastore
            dup
            iconst_3
        70: .line 262
            iload 15 /* counter */
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            aastore
        71: .line 261
            astore 22 /* result */
        start local 22 // java.math.BigInteger[] result
        72: .line 263
            aload 22 /* result */
            areturn
        end local 22 // java.math.BigInteger[] result
        73: .line 266
      StackMap locals: java.security.SecureRandom int int int java.lang.String java.security.MessageDigest int int int byte[] java.math.BigInteger int java.math.BigInteger java.math.BigInteger java.math.BigInteger int java.math.BigInteger java.math.BigInteger[] java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger
      StackMap stack:
            aload 16 /* offset */
            iload 7 /* n */
            i2l
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 16 /* offset */
        end local 21 // java.math.BigInteger c
        end local 20 // java.math.BigInteger X
        end local 19 // java.math.BigInteger twoLm1
        end local 18 // java.math.BigInteger W
        end local 17 // java.math.BigInteger[] V
        74: .line 235
            iinc 15 /* counter */ 1
        end local 12 // java.math.BigInteger resultP
      StackMap locals: java.security.SecureRandom int int int java.lang.String java.security.MessageDigest int int int byte[] java.math.BigInteger int top java.math.BigInteger java.math.BigInteger int java.math.BigInteger
      StackMap stack:
        75: iload 15 /* counter */
            iconst_4
            iload 1 /* valueL */
            imul
            if_icmplt 45
        end local 16 // java.math.BigInteger offset
        end local 15 // int counter
        end local 13 // java.math.BigInteger resultQ
        76: .line 215
            goto 31
        end local 14 // java.math.BigInteger seed
        end local 11 // int primeCertainty
        end local 10 // java.math.BigInteger twoSl
        end local 9 // byte[] seedBytes
        end local 8 // int b
        end local 7 // int n
        end local 6 // int outLen
        end local 5 // java.security.MessageDigest hashObj
        end local 4 // java.lang.String hashAlg
        end local 3 // int seedLen
        end local 2 // int valueN
        end local 1 // int valueL
        end local 0 // java.security.SecureRandom random
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   77     0          random  Ljava/security/SecureRandom;
            0   77     1          valueL  I
            0   77     2          valueN  I
            0   77     3         seedLen  I
            1   77     4         hashAlg  Ljava/lang/String;
           10   77     5         hashObj  Ljava/security/MessageDigest;
           13   14     6            nsae  Ljava/security/NoSuchAlgorithmException;
           15   77     6          outLen  I
           16   77     7               n  I
           17   77     8               b  I
           18   77     9       seedBytes  [B
           19   77    10           twoSl  Ljava/math/BigInteger;
           20   77    11  primeCertainty  I
           67   75    12         resultP  Ljava/math/BigInteger;
           41   76    13         resultQ  Ljava/math/BigInteger;
           31   77    14            seed  Ljava/math/BigInteger;
           44   76    15         counter  I
           36   41    16               U  Ljava/math/BigInteger;
           43   76    16          offset  Ljava/math/BigInteger;
           46   74    17               V  [Ljava/math/BigInteger;
           47   54    18               j  I
           49   52    19               J  Ljava/math/BigInteger;
           50   52    20             tmp  Ljava/math/BigInteger;
           51   52    21         vjBytes  [B
           55   74    18               W  Ljava/math/BigInteger;
           56   60    19               i  I
           64   74    19          twoLm1  Ljava/math/BigInteger;
           65   74    20               X  Ljava/math/BigInteger;
           66   74    21               c  Ljava/math/BigInteger;
           72   73    22          result  [Ljava/math/BigInteger;
      Exception table:
        from    to  target  type
          10    11      12  Class java.security.NoSuchAlgorithmException
    MethodParameters:
         Name  Flags
      random   
      valueL   
      valueN   
      seedLen  

  private static java.math.BigInteger generateG(java.math.BigInteger, java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.math.BigInteger p
        start local 1 // java.math.BigInteger q
         0: .line 281
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            astore 2 /* h */
        start local 2 // java.math.BigInteger h
         1: .line 283
            aload 0 /* p */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 1 /* q */
            invokevirtual java.math.BigInteger.divide:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 3 /* pMinusOneOverQ */
        start local 3 // java.math.BigInteger pMinusOneOverQ
         2: .line 284
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            astore 4 /* resultG */
        start local 4 // java.math.BigInteger resultG
         3: .line 285
            goto 6
         4: .line 287
      StackMap locals: java.math.BigInteger java.math.BigInteger java.math.BigInteger
      StackMap stack:
            aload 2 /* h */
            aload 3 /* pMinusOneOverQ */
            aload 0 /* p */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 4 /* resultG */
         5: .line 288
            aload 2 /* h */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 2 /* h */
         6: .line 285
      StackMap locals:
      StackMap stack:
            aload 4 /* resultG */
            getstatic sun.security.provider.DSAParameterGenerator.TWO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            iflt 4
         7: .line 290
            aload 4 /* resultG */
            areturn
        end local 4 // java.math.BigInteger resultG
        end local 3 // java.math.BigInteger pMinusOneOverQ
        end local 2 // java.math.BigInteger h
        end local 1 // java.math.BigInteger q
        end local 0 // java.math.BigInteger p
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0               p  Ljava/math/BigInteger;
            0    8     1               q  Ljava/math/BigInteger;
            1    8     2               h  Ljava/math/BigInteger;
            2    8     3  pMinusOneOverQ  Ljava/math/BigInteger;
            3    8     4         resultG  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      p     
      q     

  private static byte[] toByteArray(java.math.BigInteger);
    descriptor: (Ljava/math/BigInteger;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.math.BigInteger bigInt
         0: .line 298
            aload 0 /* bigInt */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 1 /* result */
        start local 1 // byte[] result
         1: .line 299
            aload 1 /* result */
            iconst_0
            baload
            ifne 5
         2: .line 300
            aload 1 /* result */
            arraylength
            iconst_1
            isub
            newarray 8
            astore 2 /* tmp */
        start local 2 // byte[] tmp
         3: .line 301
            aload 1 /* result */
            iconst_1
            aload 2 /* tmp */
            iconst_0
            aload 2 /* tmp */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 302
            aload 2 /* tmp */
            astore 1 /* result */
        end local 2 // byte[] tmp
         5: .line 304
      StackMap locals: byte[]
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 1 // byte[] result
        end local 0 // java.math.BigInteger bigInt
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  bigInt  Ljava/math/BigInteger;
            1    6     1  result  [B
            3    5     2     tmp  [B
    MethodParameters:
        Name  Flags
      bigInt  
}
SourceFile: "DSAParameterGenerator.java"