public class android.content.pm.Signature implements android.os.Parcelable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.content.pm.Signature
  super_class: java.lang.Object
{
  private final byte[] mSignature;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private boolean mHaveHashCode;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.ref.SoftReference<java.lang.String> mStringRef;
    descriptor: Ljava/lang/ref/SoftReference;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/lang/ref/SoftReference<Ljava/lang/String;>;

  private java.security.cert.Certificate[] mCertificateChain;
    descriptor: [Ljava/security/cert/Certificate;
    flags: (0x0002) ACC_PRIVATE

  public static final android.os.Parcelable$Creator<android.content.pm.Signature> CREATOR;
    descriptor: Landroid/os/Parcelable$Creator;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Landroid/os/Parcelable$Creator<Landroid/content/pm/Signature;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 234
            new android.content.pm.Signature$1
            dup
            invokespecial android.content.pm.Signature$1.<init>:()V
         1: .line 233
            putstatic android.content.pm.Signature.CREATOR:Landroid/os/Parcelable$Creator;
         2: .line 242
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.content.pm.Signature this
        start local 1 // byte[] signature
         0: .line 51
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            aload 0 /* this */
            aload 1 /* signature */
            invokevirtual byte[].clone:()Ljava/lang/Object;
            checkcast byte[]
            putfield android.content.pm.Signature.mSignature:[B
         2: .line 53
            aload 0 /* this */
            aconst_null
            putfield android.content.pm.Signature.mCertificateChain:[Ljava/security/cert/Certificate;
         3: .line 54
            return
        end local 1 // byte[] signature
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Landroid/content/pm/Signature;
            0    4     1  signature  [B
    MethodParameters:
           Name  Flags
      signature  

  public void <init>(java.security.cert.Certificate[]);
    descriptor: ([Ljava/security/cert/Certificate;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.content.pm.Signature this
        start local 1 // java.security.cert.Certificate[] certificateChain
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 64
            aload 0 /* this */
            aload 1 /* certificateChain */
            iconst_0
            aaload
            invokevirtual java.security.cert.Certificate.getEncoded:()[B
            putfield android.content.pm.Signature.mSignature:[B
         2: .line 65
            aload 1 /* certificateChain */
            arraylength
            iconst_1
            if_icmple 4
         3: .line 66
            aload 0 /* this */
            aload 1 /* certificateChain */
            iconst_1
            aload 1 /* certificateChain */
            arraylength
            invokestatic java.util.Arrays.copyOfRange:([Ljava/lang/Object;II)[Ljava/lang/Object;
            checkcast java.security.cert.Certificate[]
            putfield android.content.pm.Signature.mCertificateChain:[Ljava/security/cert/Certificate;
         4: .line 68
      StackMap locals: android.content.pm.Signature java.security.cert.Certificate[]
      StackMap stack:
            return
        end local 1 // java.security.cert.Certificate[] certificateChain
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0              this  Landroid/content/pm/Signature;
            0    5     1  certificateChain  [Ljava/security/cert/Certificate;
    Exceptions:
      throws java.security.cert.CertificateEncodingException
    MethodParameters:
                  Name  Flags
      certificateChain  

  private static final int parseHexDigit(int);
    descriptor: (I)I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // int nibble
         0: .line 71
            bipush 48
            iload 0 /* nibble */
            if_icmpgt 2
            iload 0 /* nibble */
            bipush 57
            if_icmpgt 2
         1: .line 72
            iload 0 /* nibble */
            bipush 48
            isub
            ireturn
         2: .line 73
      StackMap locals:
      StackMap stack:
            bipush 97
            iload 0 /* nibble */
            if_icmpgt 4
            iload 0 /* nibble */
            bipush 102
            if_icmpgt 4
         3: .line 74
            iload 0 /* nibble */
            bipush 97
            isub
            bipush 10
            iadd
            ireturn
         4: .line 75
      StackMap locals:
      StackMap stack:
            bipush 65
            iload 0 /* nibble */
            if_icmpgt 6
            iload 0 /* nibble */
            bipush 70
            if_icmpgt 6
         5: .line 76
            iload 0 /* nibble */
            bipush 65
            isub
            bipush 10
            iadd
            ireturn
         6: .line 78
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid character "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* nibble */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " in hex string"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // int nibble
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  nibble  I
    MethodParameters:
        Name  Flags
      nibble  

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // android.content.pm.Signature this
        start local 1 // java.lang.String text
         0: .line 90
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 91
            aload 1 /* text */
            invokevirtual java.lang.String.getBytes:()[B
            astore 2 /* input */
        start local 2 // byte[] input
         2: .line 92
            aload 2 /* input */
            arraylength
            istore 3 /* N */
        start local 3 // int N
         3: .line 94
            iload 3 /* N */
            iconst_2
            irem
            ifeq 5
         4: .line 95
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "text size "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* N */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " is not even"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 98
      StackMap locals: android.content.pm.Signature java.lang.String byte[] int
      StackMap stack:
            iload 3 /* N */
            iconst_2
            idiv
            newarray 8
            astore 4 /* sig */
        start local 4 // byte[] sig
         6: .line 99
            iconst_0
            istore 5 /* sigIndex */
        start local 5 // int sigIndex
         7: .line 101
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         8: goto 12
         9: .line 102
      StackMap locals: byte[] int int
      StackMap stack:
            aload 2 /* input */
            iload 6 /* i */
            iinc 6 /* i */ 1
            baload
            invokestatic android.content.pm.Signature.parseHexDigit:(I)I
            istore 7 /* hi */
        start local 7 // int hi
        10: .line 103
            aload 2 /* input */
            iload 6 /* i */
            iinc 6 /* i */ 1
            baload
            invokestatic android.content.pm.Signature.parseHexDigit:(I)I
            istore 8 /* lo */
        start local 8 // int lo
        11: .line 104
            aload 4 /* sig */
            iload 5 /* sigIndex */
            iinc 5 /* sigIndex */ 1
            iload 7 /* hi */
            iconst_4
            ishl
            iload 8 /* lo */
            ior
            i2b
            bastore
        end local 8 // int lo
        end local 7 // int hi
        12: .line 101
      StackMap locals:
      StackMap stack:
            iload 6 /* i */
            iload 3 /* N */
            if_icmplt 9
        end local 6 // int i
        13: .line 107
            aload 0 /* this */
            aload 4 /* sig */
            putfield android.content.pm.Signature.mSignature:[B
        14: .line 108
            return
        end local 5 // int sigIndex
        end local 4 // byte[] sig
        end local 3 // int N
        end local 2 // byte[] input
        end local 1 // java.lang.String text
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Landroid/content/pm/Signature;
            0   15     1      text  Ljava/lang/String;
            2   15     2     input  [B
            3   15     3         N  I
            6   15     4       sig  [B
            7   15     5  sigIndex  I
            8   13     6         i  I
           10   12     7        hi  I
           11   12     8        lo  I
    MethodParameters:
      Name  Flags
      text  

  public char[] toChars();
    descriptor: ()[C
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.content.pm.Signature this
         0: .line 114
            aload 0 /* this */
            aconst_null
            aconst_null
            invokevirtual android.content.pm.Signature.toChars:([C[I)[C
            areturn
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/content/pm/Signature;

  public char[] toChars(char[], int[]);
    descriptor: ([C[I)[C
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // android.content.pm.Signature this
        start local 1 // char[] existingArray
        start local 2 // int[] outLen
         0: .line 128
            aload 0 /* this */
            getfield android.content.pm.Signature.mSignature:[B
            astore 3 /* sig */
        start local 3 // byte[] sig
         1: .line 129
            aload 3 /* sig */
            arraylength
            istore 4 /* N */
        start local 4 // int N
         2: .line 130
            iload 4 /* N */
            iconst_2
            imul
            istore 5 /* N2 */
        start local 5 // int N2
         3: .line 131
            aload 1 /* existingArray */
            ifnull 4
            iload 5 /* N2 */
            aload 1 /* existingArray */
            arraylength
            if_icmple 5
         4: .line 132
      StackMap locals: byte[] int int
      StackMap stack:
            iload 5 /* N2 */
            newarray 5
            goto 6
      StackMap locals:
      StackMap stack:
         5: aload 1 /* existingArray */
         6: .line 131
      StackMap locals:
      StackMap stack: char[]
            astore 6 /* text */
        start local 6 // char[] text
         7: .line 133
            iconst_0
            istore 7 /* j */
        start local 7 // int j
         8: goto 19
         9: .line 134
      StackMap locals: char[] int
      StackMap stack:
            aload 3 /* sig */
            iload 7 /* j */
            baload
            istore 8 /* v */
        start local 8 // byte v
        10: .line 135
            iload 8 /* v */
            iconst_4
            ishr
            bipush 15
            iand
            istore 9 /* d */
        start local 9 // int d
        11: .line 136
            aload 6 /* text */
            iload 7 /* j */
            iconst_2
            imul
            iload 9 /* d */
            bipush 10
            if_icmplt 12
            bipush 97
            iload 9 /* d */
            iadd
            bipush 10
            isub
            goto 13
      StackMap locals: android.content.pm.Signature char[] int[] byte[] int int char[] int int int
      StackMap stack: char[] int
        12: bipush 48
            iload 9 /* d */
            iadd
      StackMap locals: android.content.pm.Signature char[] int[] byte[] int int char[] int int int
      StackMap stack: char[] int int
        13: i2c
            castore
        14: .line 137
            iload 8 /* v */
            bipush 15
            iand
            istore 9 /* d */
        15: .line 138
            aload 6 /* text */
            iload 7 /* j */
            iconst_2
            imul
            iconst_1
            iadd
            iload 9 /* d */
            bipush 10
            if_icmplt 16
            bipush 97
            iload 9 /* d */
            iadd
            bipush 10
            isub
            goto 17
      StackMap locals: android.content.pm.Signature char[] int[] byte[] int int char[] int int int
      StackMap stack: char[] int
        16: bipush 48
            iload 9 /* d */
            iadd
      StackMap locals: android.content.pm.Signature char[] int[] byte[] int int char[] int int int
      StackMap stack: char[] int int
        17: i2c
            castore
        end local 9 // int d
        end local 8 // byte v
        18: .line 133
            iinc 7 /* j */ 1
      StackMap locals:
      StackMap stack:
        19: iload 7 /* j */
            iload 4 /* N */
            if_icmplt 9
        end local 7 // int j
        20: .line 140
            aload 2 /* outLen */
            ifnull 21
            aload 2 /* outLen */
            iconst_0
            iload 4 /* N */
            iastore
        21: .line 141
      StackMap locals:
      StackMap stack:
            aload 6 /* text */
            areturn
        end local 6 // char[] text
        end local 5 // int N2
        end local 4 // int N
        end local 3 // byte[] sig
        end local 2 // int[] outLen
        end local 1 // char[] existingArray
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   22     0           this  Landroid/content/pm/Signature;
            0   22     1  existingArray  [C
            0   22     2         outLen  [I
            1   22     3            sig  [B
            2   22     4              N  I
            3   22     5             N2  I
            7   22     6           text  [C
            8   20     7              j  I
           10   18     8              v  B
           11   18     9              d  I
    MethodParameters:
               Name  Flags
      existingArray  
      outLen         

  public java.lang.String toCharsString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // android.content.pm.Signature this
         0: .line 148
            aload 0 /* this */
            getfield android.content.pm.Signature.mStringRef:Ljava/lang/ref/SoftReference;
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield android.content.pm.Signature.mStringRef:Ljava/lang/ref/SoftReference;
            invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
            checkcast java.lang.String
      StackMap locals:
      StackMap stack: java.lang.String
         2: astore 1 /* str */
        start local 1 // java.lang.String str
         3: .line 149
            aload 1 /* str */
            ifnull 5
         4: .line 150
            aload 1 /* str */
            areturn
         5: .line 152
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.String
            dup
            aload 0 /* this */
            invokevirtual android.content.pm.Signature.toChars:()[C
            invokespecial java.lang.String.<init>:([C)V
            astore 1 /* str */
         6: .line 153
            aload 0 /* this */
            new java.lang.ref.SoftReference
            dup
            aload 1 /* str */
            invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
            putfield android.content.pm.Signature.mStringRef:Ljava/lang/ref/SoftReference;
         7: .line 154
            aload 1 /* str */
            areturn
        end local 1 // java.lang.String str
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Landroid/content/pm/Signature;
            3    8     1   str  Ljava/lang/String;

  public byte[] toByteArray();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // android.content.pm.Signature this
         0: .line 161
            aload 0 /* this */
            getfield android.content.pm.Signature.mSignature:[B
            arraylength
            newarray 8
            astore 1 /* bytes */
        start local 1 // byte[] bytes
         1: .line 162
            aload 0 /* this */
            getfield android.content.pm.Signature.mSignature:[B
            iconst_0
            aload 1 /* bytes */
            iconst_0
            aload 0 /* this */
            getfield android.content.pm.Signature.mSignature:[B
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 163
            aload 1 /* bytes */
            areturn
        end local 1 // byte[] bytes
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Landroid/content/pm/Signature;
            1    3     1  bytes  [B

  public java.security.PublicKey getPublicKey();
    descriptor: ()Ljava/security/PublicKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // android.content.pm.Signature this
         0: .line 174
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 1 /* certFactory */
        start local 1 // java.security.cert.CertificateFactory certFactory
         1: .line 175
            new java.io.ByteArrayInputStream
            dup
            aload 0 /* this */
            getfield android.content.pm.Signature.mSignature:[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 2 /* bais */
        start local 2 // java.io.ByteArrayInputStream bais
         2: .line 176
            aload 1 /* certFactory */
            aload 2 /* bais */
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            astore 3 /* cert */
        start local 3 // java.security.cert.Certificate cert
         3: .line 177
            aload 3 /* cert */
            invokevirtual java.security.cert.Certificate.getPublicKey:()Ljava/security/PublicKey;
            areturn
        end local 3 // java.security.cert.Certificate cert
        end local 2 // java.io.ByteArrayInputStream bais
        end local 1 // java.security.cert.CertificateFactory certFactory
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Landroid/content/pm/Signature;
            1    4     1  certFactory  Ljava/security/cert/CertificateFactory;
            2    4     2         bais  Ljava/io/ByteArrayInputStream;
            3    4     3         cert  Ljava/security/cert/Certificate;
    Exceptions:
      throws java.security.cert.CertificateException

  public android.content.pm.Signature[] getChainSignatures();
    descriptor: ()[Landroid/content/pm/Signature;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // android.content.pm.Signature this
         0: .line 188
            aload 0 /* this */
            getfield android.content.pm.Signature.mCertificateChain:[Ljava/security/cert/Certificate;
            ifnonnull 2
         1: .line 189
            iconst_1
            anewarray android.content.pm.Signature
            dup
            iconst_0
            aload 0 /* this */
            aastore
            areturn
         2: .line 192
      StackMap locals:
      StackMap stack:
            iconst_1
            aload 0 /* this */
            getfield android.content.pm.Signature.mCertificateChain:[Ljava/security/cert/Certificate;
            arraylength
            iadd
            anewarray android.content.pm.Signature
            astore 1 /* chain */
        start local 1 // android.content.pm.Signature[] chain
         3: .line 193
            aload 1 /* chain */
            iconst_0
            aload 0 /* this */
            aastore
         4: .line 195
            iconst_1
            istore 2 /* i */
        start local 2 // int i
         5: .line 196
            aload 0 /* this */
            getfield android.content.pm.Signature.mCertificateChain:[Ljava/security/cert/Certificate;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 9
      StackMap locals: android.content.pm.Signature android.content.pm.Signature[] int top int int java.security.cert.Certificate[]
      StackMap stack:
         6: aload 6
            iload 4
            aaload
            astore 3 /* c */
        start local 3 // java.security.cert.Certificate c
         7: .line 197
            aload 1 /* chain */
            iload 2 /* i */
            iinc 2 /* i */ 1
            new android.content.pm.Signature
            dup
            aload 3 /* c */
            invokevirtual java.security.cert.Certificate.getEncoded:()[B
            invokespecial android.content.pm.Signature.<init>:([B)V
            aastore
        end local 3 // java.security.cert.Certificate c
         8: .line 196
            iinc 4 1
      StackMap locals:
      StackMap stack:
         9: iload 4
            iload 5
            if_icmplt 6
        10: .line 200
            aload 1 /* chain */
            areturn
        end local 2 // int i
        end local 1 // android.content.pm.Signature[] chain
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Landroid/content/pm/Signature;
            3   11     1  chain  [Landroid/content/pm/Signature;
            5   11     2      i  I
            7    8     3      c  Ljava/security/cert/Certificate;
    Exceptions:
      throws java.security.cert.CertificateEncodingException

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // android.content.pm.Signature this
        start local 1 // java.lang.Object obj
         0: .line 206
            aload 1 /* obj */
            ifnull 6
         1: .line 207
            aload 1 /* obj */
            checkcast android.content.pm.Signature
            astore 2 /* other */
        start local 2 // android.content.pm.Signature other
         2: .line 208
            aload 0 /* this */
            aload 2 /* other */
            if_acmpeq 3
            aload 0 /* this */
            getfield android.content.pm.Signature.mSignature:[B
            aload 2 /* other */
            getfield android.content.pm.Signature.mSignature:[B
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 3
            iconst_0
            ireturn
      StackMap locals: android.content.pm.Signature
      StackMap stack:
         3: iconst_1
         4: ireturn
        end local 2 // android.content.pm.Signature other
         5: .line 210
      StackMap locals: android.content.pm.Signature java.lang.Object
      StackMap stack: java.lang.ClassCastException
            pop
         6: .line 212
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.Object obj
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Landroid/content/pm/Signature;
            0    7     1    obj  Ljava/lang/Object;
            2    5     2  other  Landroid/content/pm/Signature;
      Exception table:
        from    to  target  type
           0     4       5  Class java.lang.ClassCastException
    MethodParameters:
      Name  Flags
      obj   

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.content.pm.Signature this
         0: .line 217
            aload 0 /* this */
            getfield android.content.pm.Signature.mHaveHashCode:Z
            ifeq 2
         1: .line 218
            aload 0 /* this */
            getfield android.content.pm.Signature.mHashCode:I
            ireturn
         2: .line 220
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.content.pm.Signature.mSignature:[B
            invokestatic java.util.Arrays.hashCode:([B)I
            putfield android.content.pm.Signature.mHashCode:I
         3: .line 221
            aload 0 /* this */
            iconst_1
            putfield android.content.pm.Signature.mHaveHashCode:Z
         4: .line 222
            aload 0 /* this */
            getfield android.content.pm.Signature.mHashCode:I
            ireturn
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/content/pm/Signature;

  public int describeContents();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.content.pm.Signature this
         0: .line 226
            iconst_0
            ireturn
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/content/pm/Signature;

  public void writeToParcel(android.os.Parcel, int);
    descriptor: (Landroid/os/Parcel;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // android.content.pm.Signature this
        start local 1 // android.os.Parcel dest
        start local 2 // int parcelableFlags
         0: .line 230
            aload 1 /* dest */
            aload 0 /* this */
            getfield android.content.pm.Signature.mSignature:[B
            invokevirtual android.os.Parcel.writeByteArray:([B)V
         1: .line 231
            return
        end local 2 // int parcelableFlags
        end local 1 // android.os.Parcel dest
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Landroid/content/pm/Signature;
            0    2     1             dest  Landroid/os/Parcel;
            0    2     2  parcelableFlags  I
    MethodParameters:
                 Name  Flags
      dest             
      parcelableFlags  

  private void <init>(android.os.Parcel);
    descriptor: (Landroid/os/Parcel;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.content.pm.Signature this
        start local 1 // android.os.Parcel source
         0: .line 244
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 245
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual android.os.Parcel.createByteArray:()[B
            putfield android.content.pm.Signature.mSignature:[B
         2: .line 246
            return
        end local 1 // android.os.Parcel source
        end local 0 // android.content.pm.Signature this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Landroid/content/pm/Signature;
            0    3     1  source  Landroid/os/Parcel;
    MethodParameters:
        Name  Flags
      source  

  public static boolean areExactMatch(android.content.pm.Signature[], android.content.pm.Signature[]);
    descriptor: ([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.content.pm.Signature[] a
        start local 1 // android.content.pm.Signature[] b
         0: .line 254
            aload 0 /* a */
            arraylength
            aload 1 /* b */
            arraylength
            if_icmpne 3
            aload 0 /* a */
            aload 1 /* b */
            invokestatic com.android.internal.util.ArrayUtils.containsAll:([Ljava/lang/Object;[Ljava/lang/Object;)Z
            ifeq 3
         1: .line 255
            aload 1 /* b */
            aload 0 /* a */
            invokestatic com.android.internal.util.ArrayUtils.containsAll:([Ljava/lang/Object;[Ljava/lang/Object;)Z
            ifeq 3
         2: .line 254
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 1 // android.content.pm.Signature[] b
        end local 0 // android.content.pm.Signature[] a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     a  [Landroid/content/pm/Signature;
            0    4     1     b  [Landroid/content/pm/Signature;
    MethodParameters:
      Name  Flags
      a     
      b     

  public static boolean areEffectiveMatch(android.content.pm.Signature[], android.content.pm.Signature[]);
    descriptor: ([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // android.content.pm.Signature[] a
        start local 1 // android.content.pm.Signature[] b
         0: .line 273
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 2 /* cf */
        start local 2 // java.security.cert.CertificateFactory cf
         1: .line 275
            aload 0 /* a */
            arraylength
            anewarray android.content.pm.Signature
            astore 3 /* aPrime */
        start local 3 // android.content.pm.Signature[] aPrime
         2: .line 276
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 6
         4: .line 277
      StackMap locals: java.security.cert.CertificateFactory android.content.pm.Signature[] int
      StackMap stack:
            aload 3 /* aPrime */
            iload 4 /* i */
            aload 2 /* cf */
            aload 0 /* a */
            iload 4 /* i */
            aaload
            invokestatic android.content.pm.Signature.bounce:(Ljava/security/cert/CertificateFactory;Landroid/content/pm/Signature;)Landroid/content/pm/Signature;
            aastore
         5: .line 276
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 4 /* i */
            aload 0 /* a */
            arraylength
            if_icmplt 4
        end local 4 // int i
         7: .line 279
            aload 1 /* b */
            arraylength
            anewarray android.content.pm.Signature
            astore 4 /* bPrime */
        start local 4 // android.content.pm.Signature[] bPrime
         8: .line 280
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         9: goto 12
        10: .line 281
      StackMap locals: android.content.pm.Signature[] android.content.pm.Signature[] java.security.cert.CertificateFactory android.content.pm.Signature[] android.content.pm.Signature[] int
      StackMap stack:
            aload 4 /* bPrime */
            iload 5 /* i */
            aload 2 /* cf */
            aload 1 /* b */
            iload 5 /* i */
            aaload
            invokestatic android.content.pm.Signature.bounce:(Ljava/security/cert/CertificateFactory;Landroid/content/pm/Signature;)Landroid/content/pm/Signature;
            aastore
        11: .line 280
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 5 /* i */
            aload 1 /* b */
            arraylength
            if_icmplt 10
        end local 5 // int i
        13: .line 284
            aload 3 /* aPrime */
            aload 4 /* bPrime */
            invokestatic android.content.pm.Signature.areExactMatch:([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)Z
            ireturn
        end local 4 // android.content.pm.Signature[] bPrime
        end local 3 // android.content.pm.Signature[] aPrime
        end local 2 // java.security.cert.CertificateFactory cf
        end local 1 // android.content.pm.Signature[] b
        end local 0 // android.content.pm.Signature[] a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0       a  [Landroid/content/pm/Signature;
            0   14     1       b  [Landroid/content/pm/Signature;
            1   14     2      cf  Ljava/security/cert/CertificateFactory;
            2   14     3  aPrime  [Landroid/content/pm/Signature;
            3    7     4       i  I
            8   14     4  bPrime  [Landroid/content/pm/Signature;
            9   13     5       i  I
    Exceptions:
      throws java.security.cert.CertificateException
    MethodParameters:
      Name  Flags
      a     
      b     

  public static boolean areEffectiveMatch(android.content.pm.Signature, android.content.pm.Signature);
    descriptor: (Landroid/content/pm/Signature;Landroid/content/pm/Signature;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // android.content.pm.Signature a
        start local 1 // android.content.pm.Signature b
         0: .line 302
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 2 /* cf */
        start local 2 // java.security.cert.CertificateFactory cf
         1: .line 304
            aload 2 /* cf */
            aload 0 /* a */
            invokestatic android.content.pm.Signature.bounce:(Ljava/security/cert/CertificateFactory;Landroid/content/pm/Signature;)Landroid/content/pm/Signature;
            astore 3 /* aPrime */
        start local 3 // android.content.pm.Signature aPrime
         2: .line 305
            aload 2 /* cf */
            aload 1 /* b */
            invokestatic android.content.pm.Signature.bounce:(Ljava/security/cert/CertificateFactory;Landroid/content/pm/Signature;)Landroid/content/pm/Signature;
            astore 4 /* bPrime */
        start local 4 // android.content.pm.Signature bPrime
         3: .line 307
            aload 3 /* aPrime */
            aload 4 /* bPrime */
            invokevirtual android.content.pm.Signature.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 4 // android.content.pm.Signature bPrime
        end local 3 // android.content.pm.Signature aPrime
        end local 2 // java.security.cert.CertificateFactory cf
        end local 1 // android.content.pm.Signature b
        end local 0 // android.content.pm.Signature a
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0       a  Landroid/content/pm/Signature;
            0    4     1       b  Landroid/content/pm/Signature;
            1    4     2      cf  Ljava/security/cert/CertificateFactory;
            2    4     3  aPrime  Landroid/content/pm/Signature;
            3    4     4  bPrime  Landroid/content/pm/Signature;
    Exceptions:
      throws java.security.cert.CertificateException
    MethodParameters:
      Name  Flags
      a     
      b     

  public static android.content.pm.Signature bounce(java.security.cert.CertificateFactory, android.content.pm.Signature);
    descriptor: (Ljava/security/cert/CertificateFactory;Landroid/content/pm/Signature;)Landroid/content/pm/Signature;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.security.cert.CertificateFactory cf
        start local 1 // android.content.pm.Signature s
         0: .line 318
            new java.io.ByteArrayInputStream
            dup
            aload 1 /* s */
            getfield android.content.pm.Signature.mSignature:[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 2 /* is */
        start local 2 // java.io.InputStream is
         1: .line 319
            aload 0 /* cf */
            aload 2 /* is */
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            checkcast java.security.cert.X509Certificate
            astore 3 /* cert */
        start local 3 // java.security.cert.X509Certificate cert
         2: .line 320
            new android.content.pm.Signature
            dup
            aload 3 /* cert */
            invokevirtual java.security.cert.X509Certificate.getEncoded:()[B
            invokespecial android.content.pm.Signature.<init>:([B)V
            astore 4 /* sPrime */
        start local 4 // android.content.pm.Signature sPrime
         3: .line 322
            aload 4 /* sPrime */
            getfield android.content.pm.Signature.mSignature:[B
            arraylength
            aload 1 /* s */
            getfield android.content.pm.Signature.mSignature:[B
            arraylength
            isub
            invokestatic java.lang.Math.abs:(I)I
            iconst_2
            if_icmple 7
         4: .line 323
            new java.security.cert.CertificateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Bounced cert length looks fishy; before "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 324
            aload 1 /* s */
            getfield android.content.pm.Signature.mSignature:[B
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ", after "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* sPrime */
            getfield android.content.pm.Signature.mSignature:[B
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 323
            invokespecial java.security.cert.CertificateException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 327
      StackMap locals: java.io.InputStream java.security.cert.X509Certificate android.content.pm.Signature
      StackMap stack:
            aload 4 /* sPrime */
            areturn
        end local 4 // android.content.pm.Signature sPrime
        end local 3 // java.security.cert.X509Certificate cert
        end local 2 // java.io.InputStream is
        end local 1 // android.content.pm.Signature s
        end local 0 // java.security.cert.CertificateFactory cf
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0      cf  Ljava/security/cert/CertificateFactory;
            0    8     1       s  Landroid/content/pm/Signature;
            1    8     2      is  Ljava/io/InputStream;
            2    8     3    cert  Ljava/security/cert/X509Certificate;
            3    8     4  sPrime  Landroid/content/pm/Signature;
    Exceptions:
      throws java.security.cert.CertificateException
    MethodParameters:
      Name  Flags
      cf    
      s     
}
SourceFile: "Signature.java"
NestMembers:
  android.content.pm.Signature$1
InnerClasses:
  android.content.pm.Signature$1
  public abstract Creator = android.os.Parcelable$Creator of android.os.Parcelable