public class org.bouncycastle.jce.provider.X509AttrCertParser extends org.bouncycastle.x509.X509StreamParserSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.jce.provider.X509AttrCertParser
  super_class: org.bouncycastle.x509.X509StreamParserSpi
{
  private static final org.bouncycastle.jce.provider.PEMUtil PEM_PARSER;
    descriptor: Lorg/bouncycastle/jce/provider/PEMUtil;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private org.bouncycastle.asn1.ASN1Set sData;
    descriptor: Lorg/bouncycastle/asn1/ASN1Set;
    flags: (0x0002) ACC_PRIVATE

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

  private java.io.InputStream currentStream;
    descriptor: Ljava/io/InputStream;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 25
            new org.bouncycastle.jce.provider.PEMUtil
            dup
            ldc "ATTRIBUTE CERTIFICATE"
            invokespecial org.bouncycastle.jce.provider.PEMUtil.<init>:(Ljava/lang/String;)V
            putstatic org.bouncycastle.jce.provider.X509AttrCertParser.PEM_PARSER:Lorg/bouncycastle/jce/provider/PEMUtil;
            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 // org.bouncycastle.jce.provider.X509AttrCertParser this
         0: .line 22
            aload 0 /* this */
            invokespecial org.bouncycastle.x509.X509StreamParserSpi.<init>:()V
         1: .line 27
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
         2: .line 28
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.sDataObjectCount:I
         3: .line 29
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
         4: .line 22
            return
        end local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bouncycastle/jce/provider/X509AttrCertParser;

  private org.bouncycastle.x509.X509AttributeCertificate readDERCertificate(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Lorg/bouncycastle/x509/X509AttributeCertificate;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
        start local 1 // java.io.InputStream in
         0: .line 35
            new org.bouncycastle.asn1.ASN1InputStream
            dup
            aload 1 /* in */
            aload 1 /* in */
            invokestatic org.bouncycastle.jce.provider.ProviderUtil.getReadLimit:(Ljava/io/InputStream;)I
            invokespecial org.bouncycastle.asn1.ASN1InputStream.<init>:(Ljava/io/InputStream;I)V
            astore 2 /* dIn */
        start local 2 // org.bouncycastle.asn1.ASN1InputStream dIn
         1: .line 36
            aload 2 /* dIn */
            invokevirtual org.bouncycastle.asn1.ASN1InputStream.readObject:()Lorg/bouncycastle/asn1/DERObject;
            checkcast org.bouncycastle.asn1.ASN1Sequence
            astore 3 /* seq */
        start local 3 // org.bouncycastle.asn1.ASN1Sequence seq
         2: .line 38
            aload 3 /* seq */
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.size:()I
            iconst_1
            if_icmple 11
         3: .line 39
            aload 3 /* seq */
            iconst_0
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getObjectAt:(I)Lorg/bouncycastle/asn1/DEREncodable;
            instanceof org.bouncycastle.asn1.DERObjectIdentifier
            ifeq 11
         4: .line 41
            aload 3 /* seq */
            iconst_0
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getObjectAt:(I)Lorg/bouncycastle/asn1/DEREncodable;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.signedData:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 11
         5: .line 43
            aload 0 /* this */
            new org.bouncycastle.asn1.pkcs.SignedData
            dup
         6: .line 44
            aload 3 /* seq */
            iconst_1
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getObjectAt:(I)Lorg/bouncycastle/asn1/DEREncodable;
            checkcast org.bouncycastle.asn1.ASN1TaggedObject
            iconst_1
         7: .line 43
            invokestatic org.bouncycastle.asn1.ASN1Sequence.getInstance:(Lorg/bouncycastle/asn1/ASN1TaggedObject;Z)Lorg/bouncycastle/asn1/ASN1Sequence;
            invokespecial org.bouncycastle.asn1.pkcs.SignedData.<init>:(Lorg/bouncycastle/asn1/ASN1Sequence;)V
         8: .line 44
            invokevirtual org.bouncycastle.asn1.pkcs.SignedData.getCertificates:()Lorg/bouncycastle/asn1/ASN1Set;
         9: .line 43
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
        10: .line 46
            aload 0 /* this */
            invokevirtual org.bouncycastle.jce.provider.X509AttrCertParser.getCertificate:()Lorg/bouncycastle/x509/X509AttributeCertificate;
            areturn
        11: .line 50
      StackMap locals: org.bouncycastle.asn1.ASN1InputStream org.bouncycastle.asn1.ASN1Sequence
      StackMap stack:
            new org.bouncycastle.x509.X509V2AttributeCertificate
            dup
            aload 3 /* seq */
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getEncoded:()[B
            invokespecial org.bouncycastle.x509.X509V2AttributeCertificate.<init>:([B)V
            areturn
        end local 3 // org.bouncycastle.asn1.ASN1Sequence seq
        end local 2 // org.bouncycastle.asn1.ASN1InputStream dIn
        end local 1 // java.io.InputStream in
        end local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lorg/bouncycastle/jce/provider/X509AttrCertParser;
            0   12     1    in  Ljava/io/InputStream;
            1   12     2   dIn  Lorg/bouncycastle/asn1/ASN1InputStream;
            2   12     3   seq  Lorg/bouncycastle/asn1/ASN1Sequence;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    

  private org.bouncycastle.x509.X509AttributeCertificate getCertificate();
    descriptor: ()Lorg/bouncycastle/x509/X509AttributeCertificate;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
         0: .line 56
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            ifnull 8
         1: .line 58
            goto 7
         2: .line 60
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            aload 0 /* this */
            dup
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.sDataObjectCount:I
            dup_x1
            iconst_1
            iadd
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.sDataObjectCount:I
            invokevirtual org.bouncycastle.asn1.ASN1Set.getObjectAt:(I)Lorg/bouncycastle/asn1/DEREncodable;
            astore 1 /* obj */
        start local 1 // java.lang.Object obj
         3: .line 62
            aload 1 /* obj */
            instanceof org.bouncycastle.asn1.ASN1TaggedObject
            ifeq 7
            aload 1 /* obj */
            checkcast org.bouncycastle.asn1.ASN1TaggedObject
            invokevirtual org.bouncycastle.asn1.ASN1TaggedObject.getTagNo:()I
            iconst_2
            if_icmpne 7
         4: .line 64
            new org.bouncycastle.x509.X509V2AttributeCertificate
            dup
         5: .line 65
            aload 1 /* obj */
            checkcast org.bouncycastle.asn1.ASN1TaggedObject
            iconst_0
            invokestatic org.bouncycastle.asn1.ASN1Sequence.getInstance:(Lorg/bouncycastle/asn1/ASN1TaggedObject;Z)Lorg/bouncycastle/asn1/ASN1Sequence;
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getEncoded:()[B
         6: .line 64
            invokespecial org.bouncycastle.x509.X509V2AttributeCertificate.<init>:([B)V
            areturn
        end local 1 // java.lang.Object obj
         7: .line 58
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.sDataObjectCount:I
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            invokevirtual org.bouncycastle.asn1.ASN1Set.size:()I
            if_icmplt 2
         8: .line 70
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bouncycastle/jce/provider/X509AttrCertParser;
            3    7     1   obj  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException

  private org.bouncycastle.x509.X509AttributeCertificate readPEMCertificate(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Lorg/bouncycastle/x509/X509AttributeCertificate;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
        start local 1 // java.io.InputStream in
         0: .line 77
            getstatic org.bouncycastle.jce.provider.X509AttrCertParser.PEM_PARSER:Lorg/bouncycastle/jce/provider/PEMUtil;
            aload 1 /* in */
            invokevirtual org.bouncycastle.jce.provider.PEMUtil.readPEMObject:(Ljava/io/InputStream;)Lorg/bouncycastle/asn1/ASN1Sequence;
            astore 2 /* seq */
        start local 2 // org.bouncycastle.asn1.ASN1Sequence seq
         1: .line 79
            aload 2 /* seq */
            ifnull 3
         2: .line 81
            new org.bouncycastle.x509.X509V2AttributeCertificate
            dup
            aload 2 /* seq */
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getEncoded:()[B
            invokespecial org.bouncycastle.x509.X509V2AttributeCertificate.<init>:([B)V
            areturn
         3: .line 84
      StackMap locals: org.bouncycastle.asn1.ASN1Sequence
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.bouncycastle.asn1.ASN1Sequence seq
        end local 1 // java.io.InputStream in
        end local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bouncycastle/jce/provider/X509AttrCertParser;
            0    4     1    in  Ljava/io/InputStream;
            1    4     2   seq  Lorg/bouncycastle/asn1/ASN1Sequence;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    

  public void engineInit(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
        start local 1 // java.io.InputStream in
         0: .line 89
            aload 0 /* this */
            aload 1 /* in */
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
         1: .line 90
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
         2: .line 91
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.sDataObjectCount:I
         3: .line 93
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.markSupported:()Z
            ifne 5
         4: .line 95
            aload 0 /* this */
            new java.io.BufferedInputStream
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
         5: .line 97
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.InputStream in
        end local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/bouncycastle/jce/provider/X509AttrCertParser;
            0    6     1    in  Ljava/io/InputStream;
    MethodParameters:
      Name  Flags
      in    

  public java.lang.Object engineRead();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
         0: .line 104
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            ifnull 7
         1: .line 106
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.sDataObjectCount:I
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            invokevirtual org.bouncycastle.asn1.ASN1Set.size:()I
            if_icmpeq 4
         2: .line 108
            aload 0 /* this */
            invokevirtual org.bouncycastle.jce.provider.X509AttrCertParser.getCertificate:()Lorg/bouncycastle/x509/X509AttributeCertificate;
         3: areturn
         4: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
         5: .line 113
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.X509AttrCertParser.sDataObjectCount:I
         6: .line 114
            aconst_null
            areturn
         7: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
            bipush 10
            invokevirtual java.io.InputStream.mark:(I)V
         8: .line 119
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.read:()I
            istore 1 /* tag */
        start local 1 // int tag
         9: .line 121
            iload 1 /* tag */
            iconst_m1
            if_icmpne 11
        10: .line 123
            aconst_null
            areturn
        11: .line 126
      StackMap locals: int
      StackMap stack:
            iload 1 /* tag */
            bipush 48
            if_icmpeq 15
        12: .line 128
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.reset:()V
        13: .line 129
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
            invokevirtual org.bouncycastle.jce.provider.X509AttrCertParser.readPEMCertificate:(Ljava/io/InputStream;)Lorg/bouncycastle/x509/X509AttributeCertificate;
        14: areturn
        15: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.reset:()V
        16: .line 134
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509AttrCertParser.currentStream:Ljava/io/InputStream;
            invokevirtual org.bouncycastle.jce.provider.X509AttrCertParser.readDERCertificate:(Ljava/io/InputStream;)Lorg/bouncycastle/x509/X509AttributeCertificate;
        17: areturn
        end local 1 // int tag
        18: .line 137
      StackMap locals: org.bouncycastle.jce.provider.X509AttrCertParser
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        19: .line 139
            new org.bouncycastle.x509.util.StreamParsingException
            dup
            aload 1 /* e */
            invokevirtual java.lang.Exception.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial org.bouncycastle.x509.util.StreamParsingException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lorg/bouncycastle/jce/provider/X509AttrCertParser;
            9   18     1   tag  I
           19   20     1     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     3      18  Class java.lang.Exception
           4     6      18  Class java.lang.Exception
           7    10      18  Class java.lang.Exception
          11    14      18  Class java.lang.Exception
          15    17      18  Class java.lang.Exception
    Exceptions:
      throws org.bouncycastle.x509.util.StreamParsingException

  public java.util.Collection engineReadAll();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
         0: .line 147
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* certs */
        start local 2 // java.util.List certs
         1: .line 149
            goto 3
        start local 1 // org.bouncycastle.x509.X509AttributeCertificate cert
         2: .line 151
      StackMap locals: org.bouncycastle.x509.X509AttributeCertificate java.util.List
      StackMap stack:
            aload 2 /* certs */
            aload 1 /* cert */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 1 // org.bouncycastle.x509.X509AttributeCertificate cert
         3: .line 149
      StackMap locals: org.bouncycastle.jce.provider.X509AttrCertParser top java.util.List
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bouncycastle.jce.provider.X509AttrCertParser.engineRead:()Ljava/lang/Object;
            checkcast org.bouncycastle.x509.X509AttributeCertificate
            dup
            astore 1 /* cert */
        start local 1 // org.bouncycastle.x509.X509AttributeCertificate cert
         4: ifnonnull 2
         5: .line 154
            aload 2 /* certs */
            areturn
        end local 2 // java.util.List certs
        end local 1 // org.bouncycastle.x509.X509AttributeCertificate cert
        end local 0 // org.bouncycastle.jce.provider.X509AttrCertParser this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/bouncycastle/jce/provider/X509AttrCertParser;
            2    3     1   cert  Lorg/bouncycastle/x509/X509AttributeCertificate;
            4    6     1   cert  Lorg/bouncycastle/x509/X509AttributeCertificate;
            1    6     2  certs  Ljava/util/List;
    Exceptions:
      throws org.bouncycastle.x509.util.StreamParsingException
}
SourceFile: "X509AttrCertParser.java"