public final class org.bouncycastle.crypto.CryptoServicesRegistrar
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.bouncycastle.crypto.CryptoServicesRegistrar
  super_class: java.lang.Object
{
  private static final java.security.Permission CanSetDefaultProperty;
    descriptor: Ljava/security/Permission;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.security.Permission CanSetThreadProperty;
    descriptor: Ljava/security/Permission;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.security.Permission CanSetDefaultRandom;
    descriptor: Ljava/security/Permission;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.ThreadLocal<java.util.Map<java.lang.String, java.lang.Object[]>> threadProperties;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;>;

  private static final java.util.Map<java.lang.String, java.lang.Object[]> globalProperties;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;

  private static volatile java.security.SecureRandom defaultSecureRandom;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=9, locals=4, args_size=0
         0: .line 24
            new org.bouncycastle.crypto.CryptoServicesPermission
            dup
            ldc "globalConfig"
            invokespecial org.bouncycastle.crypto.CryptoServicesPermission.<init>:(Ljava/lang/String;)V
            putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultProperty:Ljava/security/Permission;
         1: .line 25
            new org.bouncycastle.crypto.CryptoServicesPermission
            dup
            ldc "threadLocalConfig"
            invokespecial org.bouncycastle.crypto.CryptoServicesPermission.<init>:(Ljava/lang/String;)V
            putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetThreadProperty:Ljava/security/Permission;
         2: .line 26
            new org.bouncycastle.crypto.CryptoServicesPermission
            dup
            ldc "defaultRandomConfig"
            invokespecial org.bouncycastle.crypto.CryptoServicesPermission.<init>:(Ljava/lang/String;)V
            putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultRandom:Ljava/security/Permission;
         3: .line 28
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
            putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
         4: .line 29
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            invokestatic java.util.Collections.synchronizedMap:(Ljava/util/Map;)Ljava/util/Map;
            putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.globalProperties:Ljava/util/Map;
         5: .line 37
            new org.bouncycastle.crypto.params.DSAParameters
            dup
         6: .line 38
            new java.math.BigInteger
            dup
            ldc "fca682ce8e12caba26efccf7110e526db078b05edecbcd1eb4a208f3ae1617ae01f35b91a47e6df63413c5e12ed0899bcd132acd50d99151bdc43ee737592e17"
            bipush 16
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
         7: .line 39
            new java.math.BigInteger
            dup
            ldc "962eddcc369cba8ebb260ee6b6a126d9346e38c5"
            bipush 16
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
         8: .line 40
            new java.math.BigInteger
            dup
            ldc "678471b27a9cf44ee91a49c5147db1a9aaf244f05a434d6486931d2d14271b9e35030b71fd73da179069b32e2935630e1c2062354d0da20a6c416e50be794ca4"
            bipush 16
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
         9: .line 41
            new org.bouncycastle.crypto.params.DSAValidationParameters
            dup
            ldc "b869c82b35d70e1b1ff91b28e37a62ecdc34409b"
            invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
            bipush 123
            invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
        10: .line 37
            invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
            astore 0 /* def512Params */
        start local 0 // org.bouncycastle.crypto.params.DSAParameters def512Params
        11: .line 43
            new org.bouncycastle.crypto.params.DSAParameters
            dup
        12: .line 44
            new java.math.BigInteger
            dup
            ldc "e9e642599d355f37c97ffd3567120b8e25c9cd43e927b3a9670fbec5d890141922d2c3b3ad2480093799869d1e846aab49fab0ad26d2ce6a22219d470bce7d777d4a21fbe9c270b57f607002f3cef8393694cf45ee3688c11a8c56ab127a3daf"
        13: .line 47
            bipush 16
        14: .line 44
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        15: .line 48
            new java.math.BigInteger
            dup
            ldc "9cdbd84c9f1ac2f38d0f80f42ab952e7338bf511"
            bipush 16
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        16: .line 49
            new java.math.BigInteger
            dup
            ldc "30470ad5a005fb14ce2d9dcd87e38bc7d1b1c5facbaecbe95f190aa7a31d23c4dbbcbe06174544401a5b2c020965d8c2bd2171d3668445771f74ba084d2029d83c1c158547f3a9f1a2715be23d51ae4d3e5a1f6a7064f316933a346d3f529252"
        17: .line 52
            bipush 16
        18: .line 49
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        19: .line 53
            new org.bouncycastle.crypto.params.DSAValidationParameters
            dup
            ldc "77d0f8c4dad15eb8c4f2f8d6726cefd96d5bb399"
            invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
            sipush 263
            invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
        20: .line 43
            invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
            astore 1 /* def768Params */
        start local 1 // org.bouncycastle.crypto.params.DSAParameters def768Params
        21: .line 55
            new org.bouncycastle.crypto.params.DSAParameters
            dup
        22: .line 56
            new java.math.BigInteger
            dup
            ldc "fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d402251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7"
        23: .line 60
            bipush 16
        24: .line 56
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        25: .line 61
            new java.math.BigInteger
            dup
            ldc "9760508f15230bccb292b982a2eb840bf0581cf5"
            bipush 16
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        26: .line 62
            new java.math.BigInteger
            dup
            ldc "f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d0782675159578ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea8519089a883dfe15ae59f06928b665e807b552564014c3bfecf492a"
        27: .line 66
            bipush 16
        28: .line 62
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        29: .line 67
            new org.bouncycastle.crypto.params.DSAValidationParameters
            dup
            ldc "8d5155894229d5e689ee01e6018a237e2cae64cd"
            invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
            bipush 92
            invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
        30: .line 55
            invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
            astore 2 /* def1024Params */
        start local 2 // org.bouncycastle.crypto.params.DSAParameters def1024Params
        31: .line 69
            new org.bouncycastle.crypto.params.DSAParameters
            dup
        32: .line 70
            new java.math.BigInteger
            dup
            ldc "95475cf5d93e596c3fcd1d902add02f427f5f3c7210313bb45fb4d5bb2e5fe1cbd678cd4bbdd84c9836be1f31c0777725aeb6c2fc38b85f48076fa76bcd8146cc89a6fb2f706dd719898c2083dc8d896f84062e2c9c94d137b054a8d8096adb8d51952398eeca852a0af12df83e475aa65d4ec0c38a9560d5661186ff98b9fc9eb60eee8b030376b236bc73be3acdbd74fd61c1d2475fa3077b8f080467881ff7e1ca56fee066d79506ade51edbb5443a563927dbc4ba520086746175c8885925ebc64c6147906773496990cb714ec667304e261faee33b3cbdf008e0c3fa90650d97d3909c9275bf4ac86ffcb3d03e6dfc8ada5934242dd6d3bcca2a406cb0b"
        33: .line 79
            bipush 16
        34: .line 70
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        35: .line 80
            new java.math.BigInteger
            dup
            ldc "f8183668ba5fc5bb06b5981e6d8b795d30b8978d43ca0ec572e37e09939a9773"
            bipush 16
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        36: .line 81
            new java.math.BigInteger
            dup
            ldc "42debb9da5b3d88cc956e08787ec3f3a09bba5f48b889a74aaf53174aa0fbe7e3c5b8fcd7a53bef563b0e98560328960a9517f4014d3325fc7962bf1e049370d76d1314a76137e792f3f0db859d095e4a5b932024f079ecf2ef09c797452b0770e1350782ed57ddf794979dcef23cb96f183061965c4ebc93c9c71c56b925955a75f94cccf1449ac43d586d0beee43251b0b2287349d68de0d144403f13e802f4146d882e057af19b6f6275c6676c8fa0e3ca2713a3257fd1b27d0639f695e347d8d1cf9ac819a26ca9b04cb0eb9b7b035988d15bbac65212a55239cfc7e58fae38d7250ab9991ffbc97134025fe8ce04c4399ad96569be91a546f4978693c7a"
        37: .line 90
            bipush 16
        38: .line 81
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
        39: .line 91
            new org.bouncycastle.crypto.params.DSAValidationParameters
            dup
            ldc "b0b4417601b59cbc9d8ac8f935cadaec4f5fbb2f23785609ae466748d9b5a536"
            invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
            sipush 497
            invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
        40: .line 69
            invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
            astore 3 /* def2048Params */
        start local 3 // org.bouncycastle.crypto.params.DSAParameters def2048Params
        41: .line 93
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar$Property.DSA_DEFAULT_PARAMS:Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            iconst_4
            anewarray org.bouncycastle.crypto.params.DSAParameters
            dup
            iconst_0
            aload 0 /* def512Params */
            aastore
            dup
            iconst_1
            aload 1 /* def768Params */
            aastore
            dup
            iconst_2
            aload 2 /* def1024Params */
            aastore
            dup
            iconst_3
            aload 3 /* def2048Params */
            aastore
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetGlobalProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
        42: .line 94
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar$Property.DH_DEFAULT_PARAMS:Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            iconst_4
            anewarray org.bouncycastle.crypto.params.DHParameters
            dup
            iconst_0
            aload 0 /* def512Params */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.toDH:(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
            aastore
            dup
            iconst_1
            aload 1 /* def768Params */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.toDH:(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
            aastore
            dup
            iconst_2
            aload 2 /* def1024Params */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.toDH:(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
            aastore
            dup
            iconst_3
            aload 3 /* def2048Params */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.toDH:(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
            aastore
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetGlobalProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
        end local 3 // org.bouncycastle.crypto.params.DSAParameters def2048Params
        end local 2 // org.bouncycastle.crypto.params.DSAParameters def1024Params
        end local 1 // org.bouncycastle.crypto.params.DSAParameters def768Params
        end local 0 // org.bouncycastle.crypto.params.DSAParameters def512Params
        43: .line 95
            return
      LocalVariableTable:
        Start  End  Slot           Name  Signature
           11   43     0   def512Params  Lorg/bouncycastle/crypto/params/DSAParameters;
           21   43     1   def768Params  Lorg/bouncycastle/crypto/params/DSAParameters;
           31   43     2  def1024Params  Lorg/bouncycastle/crypto/params/DSAParameters;
           41   43     3  def2048Params  Lorg/bouncycastle/crypto/params/DSAParameters;

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar this
         0: .line 97
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 100
            return
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bouncycastle/crypto/CryptoServicesRegistrar;

  public static java.security.SecureRandom getSecureRandom();
    descriptor: ()Ljava/security/SecureRandom;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 110
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.defaultSecureRandom:Ljava/security/SecureRandom;
            ifnonnull 2
         1: .line 112
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            areturn
         2: .line 115
      StackMap locals:
      StackMap stack:
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.defaultSecureRandom:Ljava/security/SecureRandom;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void setSecureRandom(java.security.SecureRandom);
    descriptor: (Ljava/security/SecureRandom;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.security.SecureRandom secureRandom
         0: .line 125
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultRandom:Ljava/security/Permission;
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
         1: .line 127
            aload 0 /* secureRandom */
            putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.defaultSecureRandom:Ljava/security/SecureRandom;
         2: .line 128
            return
        end local 0 // java.security.SecureRandom secureRandom
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  secureRandom  Ljava/security/SecureRandom;
    MethodParameters:
              Name  Flags
      secureRandom  

  public static <T> T getProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
         0: .line 140
            aload 0 /* property */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.lookupProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
            astore 1 /* values */
        start local 1 // java.lang.Object[] values
         1: .line 142
            aload 1 /* values */
            ifnull 3
         2: .line 144
            aload 1 /* values */
            iconst_0
            aaload
            areturn
         3: .line 147
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.Object[] values
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0  property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            1    4     1    values  [Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)TT;
    MethodParameters:
          Name  Flags
      property  

  private static java.lang.Object[] lookupProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
         0: .line 152
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast java.util.Map
            astore 1 /* properties */
        start local 1 // java.util.Map properties
         1: .line 155
            aload 1 /* properties */
            ifnull 2
            aload 1 /* properties */
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 4
         2: .line 157
      StackMap locals: java.util.Map
      StackMap stack:
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.globalProperties:Ljava/util/Map;
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Object[]
            astore 2 /* values */
        start local 2 // java.lang.Object[] values
         3: .line 158
            goto 5
        end local 2 // java.lang.Object[] values
         4: .line 161
      StackMap locals:
      StackMap stack:
            aload 1 /* properties */
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Object[]
            astore 2 /* values */
        start local 2 // java.lang.Object[] values
         5: .line 163
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 2 /* values */
            areturn
        end local 2 // java.lang.Object[] values
        end local 1 // java.util.Map properties
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0    property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            1    6     1  properties  Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;
            3    4     2      values  [Ljava/lang/Object;
            5    6     2      values  [Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      property  

  public static <T> T[] getSizedProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
         0: .line 176
            aload 0 /* property */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.lookupProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
            astore 1 /* values */
        start local 1 // java.lang.Object[] values
         1: .line 178
            aload 1 /* values */
            ifnonnull 3
         2: .line 180
            aconst_null
            areturn
         3: .line 183
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 1 /* values */
            invokevirtual java.lang.Object[].clone:()Ljava/lang/Object;
            checkcast java.lang.Object[]
            areturn
        end local 1 // java.lang.Object[] values
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0  property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            1    4     1    values  [Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[TT;
    MethodParameters:
          Name  Flags
      property  

  public static <T> T getSizedProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;I)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
        start local 1 // int size
         0: .line 197
            aload 0 /* property */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.lookupProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
            astore 2 /* values */
        start local 2 // java.lang.Object[] values
         1: .line 199
            aload 2 /* values */
            ifnonnull 3
         2: .line 201
            aconst_null
            areturn
         3: .line 204
      StackMap locals: java.lang.Object[]
      StackMap stack:
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.type:Ljava/lang/Class;
            ldc Lorg/bouncycastle/crypto/params/DHParameters;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 12
         4: .line 206
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         5: goto 10
         6: .line 208
      StackMap locals: int
      StackMap stack:
            aload 2 /* values */
            iload 3 /* i */
            aaload
            checkcast org.bouncycastle.crypto.params.DHParameters
            astore 4 /* params */
        start local 4 // org.bouncycastle.crypto.params.DHParameters params
         7: .line 210
            aload 4 /* params */
            invokevirtual org.bouncycastle.crypto.params.DHParameters.getP:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 1 /* size */
            if_icmpne 9
         8: .line 212
            aload 4 /* params */
            areturn
        end local 4 // org.bouncycastle.crypto.params.DHParameters params
         9: .line 206
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 2 /* values */
            arraylength
            if_icmpne 6
        end local 3 // int i
        11: .line 215
            goto 20
        12: .line 216
      StackMap locals:
      StackMap stack:
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.type:Ljava/lang/Class;
            ldc Lorg/bouncycastle/crypto/params/DSAParameters;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 20
        13: .line 218
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        14: goto 19
        15: .line 220
      StackMap locals: int
      StackMap stack:
            aload 2 /* values */
            iload 3 /* i */
            aaload
            checkcast org.bouncycastle.crypto.params.DSAParameters
            astore 4 /* params */
        start local 4 // org.bouncycastle.crypto.params.DSAParameters params
        16: .line 222
            aload 4 /* params */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getP:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            iload 1 /* size */
            if_icmpne 18
        17: .line 224
            aload 4 /* params */
            areturn
        end local 4 // org.bouncycastle.crypto.params.DSAParameters params
        18: .line 218
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 3 /* i */
            aload 2 /* values */
            arraylength
            if_icmpne 15
        end local 3 // int i
        20: .line 229
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.lang.Object[] values
        end local 1 // int size
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   21     0  property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            0   21     1      size  I
            1   21     2    values  [Ljava/lang/Object;
            5   11     3         i  I
            7    9     4    params  Lorg/bouncycastle/crypto/params/DHParameters;
           14   20     3         i  I
           16   18     4    params  Lorg/bouncycastle/crypto/params/DSAParameters;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;I)TT;
    MethodParameters:
          Name  Flags
      property  
      size      

  public static <T> void setThreadProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
        start local 1 // java.lang.Object[] propertyValue
         0: .line 243
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetThreadProperty:Ljava/security/Permission;
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
         1: .line 245
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.type:Ljava/lang/Class;
            aload 1 /* propertyValue */
            iconst_0
            aaload
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
         2: .line 247
            new java.lang.IllegalArgumentException
            dup
            ldc "Bad property value passed"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 250
      StackMap locals:
      StackMap stack:
            aload 0 /* property */
            aload 1 /* propertyValue */
            invokevirtual java.lang.Object[].clone:()Ljava/lang/Object;
            checkcast java.lang.Object[]
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetThread:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
         4: .line 251
            return
        end local 1 // java.lang.Object[] propertyValue
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0       property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            0    5     1  propertyValue  [Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[TT;)V
    MethodParameters:
               Name  Flags
      property       
      propertyValue  

  public static <T> void setGlobalProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
        start local 1 // java.lang.Object[] propertyValue
         0: .line 264
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultProperty:Ljava/security/Permission;
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
         1: .line 266
            aload 0 /* property */
            aload 1 /* propertyValue */
            invokevirtual java.lang.Object[].clone:()Ljava/lang/Object;
            checkcast java.lang.Object[]
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetGlobalProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
         2: .line 267
            return
        end local 1 // java.lang.Object[] propertyValue
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0       property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            0    3     1  propertyValue  [Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[TT;)V
    MethodParameters:
               Name  Flags
      property       
      propertyValue  

  private static <T> void localSetThread(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
        start local 1 // java.lang.Object[] propertyValue
         0: .line 271
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast java.util.Map
            astore 2 /* properties */
        start local 2 // java.util.Map properties
         1: .line 273
            aload 2 /* properties */
            ifnonnull 4
         2: .line 275
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* properties */
         3: .line 276
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
            aload 2 /* properties */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         4: .line 279
      StackMap locals: java.util.Map
      StackMap stack:
            aload 2 /* properties */
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
            aload 1 /* propertyValue */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 280
            return
        end local 2 // java.util.Map properties
        end local 1 // java.lang.Object[] propertyValue
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0       property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            0    6     1  propertyValue  [Ljava/lang/Object;
            1    6     2     properties  Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[TT;)V
    MethodParameters:
               Name  Flags
      property       
      propertyValue  

  private static <T> void localSetGlobalProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
        start local 1 // java.lang.Object[] propertyValue
         0: .line 284
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.type:Ljava/lang/Class;
            aload 1 /* propertyValue */
            iconst_0
            aaload
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 2
         1: .line 286
            new java.lang.IllegalArgumentException
            dup
            ldc "Bad property value passed"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 290
      StackMap locals:
      StackMap stack:
            aload 0 /* property */
            aload 1 /* propertyValue */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetThread:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
         3: .line 292
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.globalProperties:Ljava/util/Map;
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
            aload 1 /* propertyValue */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 293
            return
        end local 1 // java.lang.Object[] propertyValue
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0       property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            0    5     1  propertyValue  [Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[TT;)V
    MethodParameters:
               Name  Flags
      property       
      propertyValue  

  public static <T> T[] clearGlobalProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
         0: .line 304
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultProperty:Ljava/security/Permission;
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
         1: .line 307
            aload 0 /* property */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localClearThreadProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
            pop
         2: .line 309
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.globalProperties:Ljava/util/Map;
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Object[]
            areturn
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[TT;
    MethodParameters:
          Name  Flags
      property  

  public static <T> T[] clearThreadProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
         0: .line 321
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetThreadProperty:Ljava/security/Permission;
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
         1: .line 323
            aload 0 /* property */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localClearThreadProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
            areturn
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0  property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
    Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[TT;
    MethodParameters:
          Name  Flags
      property  

  private static java.lang.Object[] localClearThreadProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
    descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
         0: .line 328
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast java.util.Map
            astore 1 /* properties */
        start local 1 // java.util.Map properties
         1: .line 330
            aload 1 /* properties */
            ifnonnull 4
         2: .line 332
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* properties */
         3: .line 333
            getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
            aload 1 /* properties */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         4: .line 336
      StackMap locals: java.util.Map
      StackMap stack:
            aload 1 /* properties */
            aload 0 /* property */
            getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Object[]
            areturn
        end local 1 // java.util.Map properties
        end local 0 // org.bouncycastle.crypto.CryptoServicesRegistrar$Property property
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0    property  Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
            1    5     1  properties  Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;
    MethodParameters:
          Name  Flags
      property  

  private static void checkPermission(java.security.Permission);
    descriptor: (Ljava/security/Permission;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.security.Permission permission
         0: .line 341
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* securityManager */
        start local 1 // java.lang.SecurityManager securityManager
         1: .line 343
            aload 1 /* securityManager */
            ifnull 3
         2: .line 345
            new org.bouncycastle.crypto.CryptoServicesRegistrar$1
            dup
            aload 1 /* securityManager */
            aload 0 /* permission */
            invokespecial org.bouncycastle.crypto.CryptoServicesRegistrar$1.<init>:(Ljava/lang/SecurityManager;Ljava/security/Permission;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            pop
         3: .line 355
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            return
        end local 1 // java.lang.SecurityManager securityManager
        end local 0 // java.security.Permission permission
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0       permission  Ljava/security/Permission;
            1    4     1  securityManager  Ljava/lang/SecurityManager;
    MethodParameters:
            Name  Flags
      permission  final

  private static org.bouncycastle.crypto.params.DHParameters toDH(org.bouncycastle.crypto.params.DSAParameters);
    descriptor: (Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=12, locals=3, args_size=1
        start local 0 // org.bouncycastle.crypto.params.DSAParameters dsaParams
         0: .line 359
            aload 0 /* dsaParams */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getP:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 1 /* pSize */
        start local 1 // int pSize
         1: .line 360
            iload 1 /* pSize */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.chooseLowerBound:(I)I
            istore 2 /* m */
        start local 2 // int m
         2: .line 361
            new org.bouncycastle.crypto.params.DHParameters
            dup
            aload 0 /* dsaParams */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getP:()Ljava/math/BigInteger;
            aload 0 /* dsaParams */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getG:()Ljava/math/BigInteger;
            aload 0 /* dsaParams */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getQ:()Ljava/math/BigInteger;
            iload 2 /* m */
            iconst_0
            aconst_null
         3: .line 362
            new org.bouncycastle.crypto.params.DHValidationParameters
            dup
            aload 0 /* dsaParams */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getValidationParameters:()Lorg/bouncycastle/crypto/params/DSAValidationParameters;
            invokevirtual org.bouncycastle.crypto.params.DSAValidationParameters.getSeed:()[B
            aload 0 /* dsaParams */
            invokevirtual org.bouncycastle.crypto.params.DSAParameters.getValidationParameters:()Lorg/bouncycastle/crypto/params/DSAValidationParameters;
            invokevirtual org.bouncycastle.crypto.params.DSAValidationParameters.getCounter:()I
            invokespecial org.bouncycastle.crypto.params.DHValidationParameters.<init>:([BI)V
         4: .line 361
            invokespecial org.bouncycastle.crypto.params.DHParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;IILjava/math/BigInteger;Lorg/bouncycastle/crypto/params/DHValidationParameters;)V
            areturn
        end local 2 // int m
        end local 1 // int pSize
        end local 0 // org.bouncycastle.crypto.params.DSAParameters dsaParams
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  dsaParams  Lorg/bouncycastle/crypto/params/DSAParameters;
            1    5     1      pSize  I
            2    5     2          m  I
    MethodParameters:
           Name  Flags
      dsaParams  

  private static int chooseLowerBound(int);
    descriptor: (I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // int pSize
         0: .line 368
            sipush 160
            istore 1 /* m */
        start local 1 // int m
         1: .line 369
            iload 0 /* pSize */
            sipush 1024
            if_icmple 12
         2: .line 371
            iload 0 /* pSize */
            sipush 2048
            if_icmpgt 5
         3: .line 373
            sipush 224
            istore 1 /* m */
         4: .line 374
            goto 12
         5: .line 375
      StackMap locals: int
      StackMap stack:
            iload 0 /* pSize */
            sipush 3072
            if_icmpgt 8
         6: .line 377
            sipush 256
            istore 1 /* m */
         7: .line 378
            goto 12
         8: .line 379
      StackMap locals:
      StackMap stack:
            iload 0 /* pSize */
            sipush 7680
            if_icmpgt 11
         9: .line 381
            sipush 384
            istore 1 /* m */
        10: .line 382
            goto 12
        11: .line 385
      StackMap locals:
      StackMap stack:
            sipush 512
            istore 1 /* m */
        12: .line 388
      StackMap locals:
      StackMap stack:
            iload 1 /* m */
            ireturn
        end local 1 // int m
        end local 0 // int pSize
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0  pSize  I
            1   13     1      m  I
    MethodParameters:
       Name  Flags
      pSize  
}
SourceFile: "CryptoServicesRegistrar.java"
NestMembers:
  org.bouncycastle.crypto.CryptoServicesRegistrar$1  org.bouncycastle.crypto.CryptoServicesRegistrar$Property
InnerClasses:
  org.bouncycastle.crypto.CryptoServicesRegistrar$1
  public final Property = org.bouncycastle.crypto.CryptoServicesRegistrar$Property of org.bouncycastle.crypto.CryptoServicesRegistrar