public final class android.nfc.tech.MifareClassic extends android.nfc.tech.BasicTagTechnology
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: android.nfc.tech.MifareClassic
  super_class: android.nfc.tech.BasicTagTechnology
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "NFC"

  public static final byte[] KEY_DEFAULT;
    descriptor: [B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final byte[] KEY_MIFARE_APPLICATION_DIRECTORY;
    descriptor: [B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final byte[] KEY_NFC_FORUM;
    descriptor: [B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final int TYPE_UNKNOWN;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  public static final int TYPE_CLASSIC;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int TYPE_PLUS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int TYPE_PRO;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int SIZE_1K;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1024

  public static final int SIZE_2K;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2048

  public static final int SIZE_4K;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4096

  public static final int SIZE_MINI;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 320

  public static final int BLOCK_SIZE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 16

  private static final int MAX_BLOCK_COUNT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 256

  private static final int MAX_SECTOR_COUNT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 40

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

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 80
            bipush 6
            newarray 8
            dup
            iconst_0
            iconst_m1
            bastore
            dup
            iconst_1
            iconst_m1
            bastore
            dup
            iconst_2
            iconst_m1
            bastore
            dup
            iconst_3
            iconst_m1
            bastore
            dup
            iconst_4
            iconst_m1
            bastore
            dup
            iconst_5
            iconst_m1
            bastore
         1: .line 79
            putstatic android.nfc.tech.MifareClassic.KEY_DEFAULT:[B
         2: .line 86
            bipush 6
            newarray 8
            dup
            iconst_0
            bipush -96
            bastore
            dup
            iconst_1
            bipush -95
            bastore
            dup
            iconst_2
            bipush -94
            bastore
            dup
            iconst_3
            bipush -93
            bastore
            dup
            iconst_4
            bipush -92
            bastore
            dup
            iconst_5
            bipush -91
            bastore
         3: .line 85
            putstatic android.nfc.tech.MifareClassic.KEY_MIFARE_APPLICATION_DIRECTORY:[B
         4: .line 92
            bipush 6
            newarray 8
            dup
            iconst_0
            bipush -45
            bastore
            dup
            iconst_1
            bipush -9
            bastore
            dup
            iconst_2
            bipush -45
            bastore
            dup
            iconst_3
            bipush -9
            bastore
            dup
            iconst_4
            bipush -45
            bastore
            dup
            iconst_5
            bipush -9
            bastore
         5: .line 91
            putstatic android.nfc.tech.MifareClassic.KEY_NFC_FORUM:[B
         6: .line 119
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static android.nfc.tech.MifareClassic get(android.nfc.Tag);
    descriptor: (Landroid/nfc/Tag;)Landroid/nfc/tech/MifareClassic;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.nfc.Tag tag
         0: .line 136
            aload 0 /* tag */
            bipush 8
            invokevirtual android.nfc.Tag.hasTech:(I)Z
            ifne 1
            aconst_null
            areturn
         1: .line 138
      StackMap locals:
      StackMap stack:
            new android.nfc.tech.MifareClassic
            dup
            aload 0 /* tag */
            invokespecial android.nfc.tech.MifareClassic.<init>:(Landroid/nfc/Tag;)V
         2: areturn
         3: .line 139
      StackMap locals:
      StackMap stack: android.os.RemoteException
            pop
         4: .line 140
            aconst_null
            areturn
        end local 0 // android.nfc.Tag tag
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0   tag  Landroid/nfc/Tag;
      Exception table:
        from    to  target  type
           1     2       3  Class android.os.RemoteException
    MethodParameters:
      Name  Flags
      tag   

  public void <init>(android.nfc.Tag);
    descriptor: (Landroid/nfc/Tag;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // android.nfc.Tag tag
         0: .line 146
            aload 0 /* this */
            aload 1 /* tag */
            bipush 8
            invokespecial android.nfc.tech.BasicTagTechnology.<init>:(Landroid/nfc/Tag;I)V
         1: .line 148
            aload 1 /* tag */
            invokestatic android.nfc.tech.NfcA.get:(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcA;
            astore 2 /* a */
        start local 2 // android.nfc.tech.NfcA a
         2: .line 150
            aload 0 /* this */
            iconst_0
            putfield android.nfc.tech.MifareClassic.mIsEmulated:Z
         3: .line 152
            aload 2 /* a */
            invokevirtual android.nfc.tech.NfcA.getSak:()S
            lookupswitch { // 11
                    1: 4
                    8: 4
                    9: 7
                   16: 10
                   17: 13
                   24: 16
                   40: 19
                   56: 23
                  136: 27
                  152: 30
                  184: 30
              default: 33
          }
         4: .line 155
      StackMap locals: android.nfc.tech.MifareClassic android.nfc.Tag android.nfc.tech.NfcA
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield android.nfc.tech.MifareClassic.mType:I
         5: .line 156
            aload 0 /* this */
            sipush 1024
            putfield android.nfc.tech.MifareClassic.mSize:I
         6: .line 157
            goto 36
         7: .line 159
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield android.nfc.tech.MifareClassic.mType:I
         8: .line 160
            aload 0 /* this */
            sipush 320
            putfield android.nfc.tech.MifareClassic.mSize:I
         9: .line 161
            goto 36
        10: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.nfc.tech.MifareClassic.mType:I
        11: .line 164
            aload 0 /* this */
            sipush 2048
            putfield android.nfc.tech.MifareClassic.mSize:I
        12: .line 166
            goto 36
        13: .line 168
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.nfc.tech.MifareClassic.mType:I
        14: .line 169
            aload 0 /* this */
            sipush 4096
            putfield android.nfc.tech.MifareClassic.mSize:I
        15: .line 171
            goto 36
        16: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield android.nfc.tech.MifareClassic.mType:I
        17: .line 174
            aload 0 /* this */
            sipush 4096
            putfield android.nfc.tech.MifareClassic.mSize:I
        18: .line 175
            goto 36
        19: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield android.nfc.tech.MifareClassic.mType:I
        20: .line 178
            aload 0 /* this */
            sipush 1024
            putfield android.nfc.tech.MifareClassic.mSize:I
        21: .line 179
            aload 0 /* this */
            iconst_1
            putfield android.nfc.tech.MifareClassic.mIsEmulated:Z
        22: .line 180
            goto 36
        23: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield android.nfc.tech.MifareClassic.mType:I
        24: .line 183
            aload 0 /* this */
            sipush 4096
            putfield android.nfc.tech.MifareClassic.mSize:I
        25: .line 184
            aload 0 /* this */
            iconst_1
            putfield android.nfc.tech.MifareClassic.mIsEmulated:Z
        26: .line 185
            goto 36
        27: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield android.nfc.tech.MifareClassic.mType:I
        28: .line 188
            aload 0 /* this */
            sipush 1024
            putfield android.nfc.tech.MifareClassic.mSize:I
        29: .line 190
            goto 36
        30: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield android.nfc.tech.MifareClassic.mType:I
        31: .line 194
            aload 0 /* this */
            sipush 4096
            putfield android.nfc.tech.MifareClassic.mSize:I
        32: .line 195
            goto 36
        33: .line 199
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
        34: .line 200
            new java.lang.StringBuilder
            dup
            ldc "Tag incorrectly enumerated as MIFARE Classic, SAK = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* a */
            invokevirtual android.nfc.tech.NfcA.getSak:()S
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        35: .line 199
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        36: .line 202
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.nfc.tech.NfcA a
        end local 1 // android.nfc.Tag tag
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   37     0  this  Landroid/nfc/tech/MifareClassic;
            0   37     1   tag  Landroid/nfc/Tag;
            2   37     2     a  Landroid/nfc/tech/NfcA;
    Exceptions:
      throws android.os.RemoteException
    MethodParameters:
      Name  Flags
      tag   

  public int getType();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.nfc.tech.MifareClassic this
         0: .line 213
            aload 0 /* this */
            getfield android.nfc.tech.MifareClassic.mType:I
            ireturn
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/nfc/tech/MifareClassic;

  public int getSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.nfc.tech.MifareClassic this
         0: .line 224
            aload 0 /* this */
            getfield android.nfc.tech.MifareClassic.mSize:I
            ireturn
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/nfc/tech/MifareClassic;

  public boolean isEmulated();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.nfc.tech.MifareClassic this
         0: .line 234
            aload 0 /* this */
            getfield android.nfc.tech.MifareClassic.mIsEmulated:Z
            ireturn
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/nfc/tech/MifareClassic;

  public int getSectorCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.nfc.tech.MifareClassic this
         0: .line 243
            aload 0 /* this */
            getfield android.nfc.tech.MifareClassic.mSize:I
            lookupswitch { // 4
                  320: 4
                 1024: 1
                 2048: 2
                 4096: 3
              default: 5
          }
         1: .line 245
      StackMap locals:
      StackMap stack:
            bipush 16
            ireturn
         2: .line 247
      StackMap locals:
      StackMap stack:
            bipush 32
            ireturn
         3: .line 249
      StackMap locals:
      StackMap stack:
            bipush 40
            ireturn
         4: .line 251
      StackMap locals:
      StackMap stack:
            iconst_5
            ireturn
         5: .line 253
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Landroid/nfc/tech/MifareClassic;

  public int getBlockCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.nfc.tech.MifareClassic this
         0: .line 263
            aload 0 /* this */
            getfield android.nfc.tech.MifareClassic.mSize:I
            bipush 16
            idiv
            ireturn
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/nfc/tech/MifareClassic;

  public int getBlockCountInSector(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int sectorIndex
         0: .line 274
            iload 1 /* sectorIndex */
            invokestatic android.nfc.tech.MifareClassic.validateSector:(I)V
         1: .line 276
            iload 1 /* sectorIndex */
            bipush 32
            if_icmpge 3
         2: .line 277
            iconst_4
            ireturn
         3: .line 279
      StackMap locals:
      StackMap stack:
            bipush 16
            ireturn
        end local 1 // int sectorIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Landroid/nfc/tech/MifareClassic;
            0    4     1  sectorIndex  I
    MethodParameters:
             Name  Flags
      sectorIndex  

  public int blockToSector(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int blockIndex
         0: .line 291
            iload 1 /* blockIndex */
            invokestatic android.nfc.tech.MifareClassic.validateBlock:(I)V
         1: .line 293
            iload 1 /* blockIndex */
            sipush 128
            if_icmpge 3
         2: .line 294
            iload 1 /* blockIndex */
            iconst_4
            idiv
            ireturn
         3: .line 296
      StackMap locals:
      StackMap stack:
            bipush 32
            iload 1 /* blockIndex */
            sipush 128
            isub
            bipush 16
            idiv
            iadd
            ireturn
        end local 1 // int blockIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Landroid/nfc/tech/MifareClassic;
            0    4     1  blockIndex  I
    MethodParameters:
            Name  Flags
      blockIndex  

  public int sectorToBlock(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int sectorIndex
         0: .line 308
            iload 1 /* sectorIndex */
            bipush 32
            if_icmpge 2
         1: .line 309
            iload 1 /* sectorIndex */
            iconst_4
            imul
            ireturn
         2: .line 311
      StackMap locals:
      StackMap stack:
            sipush 128
            iload 1 /* sectorIndex */
            bipush 32
            isub
            bipush 16
            imul
            iadd
            ireturn
        end local 1 // int sectorIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Landroid/nfc/tech/MifareClassic;
            0    3     1  sectorIndex  I
    MethodParameters:
             Name  Flags
      sectorIndex  

  public boolean authenticateSectorWithKeyA(int, byte[]);
    descriptor: (I[B)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int sectorIndex
        start local 2 // byte[] key
         0: .line 339
            aload 0 /* this */
            iload 1 /* sectorIndex */
            aload 2 /* key */
            iconst_1
            invokevirtual android.nfc.tech.MifareClassic.authenticate:(I[BZ)Z
            ireturn
        end local 2 // byte[] key
        end local 1 // int sectorIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Landroid/nfc/tech/MifareClassic;
            0    1     1  sectorIndex  I
            0    1     2          key  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      sectorIndex  
      key          

  public boolean authenticateSectorWithKeyB(int, byte[]);
    descriptor: (I[B)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int sectorIndex
        start local 2 // byte[] key
         0: .line 366
            aload 0 /* this */
            iload 1 /* sectorIndex */
            aload 2 /* key */
            iconst_0
            invokevirtual android.nfc.tech.MifareClassic.authenticate:(I[BZ)Z
            ireturn
        end local 2 // byte[] key
        end local 1 // int sectorIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Landroid/nfc/tech/MifareClassic;
            0    1     1  sectorIndex  I
            0    1     2          key  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      sectorIndex  
      key          

  private boolean authenticate(int, byte[], boolean);
    descriptor: (I[BZ)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int sector
        start local 2 // byte[] key
        start local 3 // boolean keyA
         0: .line 370
            iload 1 /* sector */
            invokestatic android.nfc.tech.MifareClassic.validateSector:(I)V
         1: .line 371
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.checkConnected:()V
         2: .line 373
            bipush 12
            newarray 8
            astore 4 /* cmd */
        start local 4 // byte[] cmd
         3: .line 376
            iload 3 /* keyA */
            ifeq 6
         4: .line 377
            aload 4 /* cmd */
            iconst_0
            bipush 96
            bastore
         5: .line 378
            goto 7
         6: .line 379
      StackMap locals: byte[]
      StackMap stack:
            aload 4 /* cmd */
            iconst_0
            bipush 97
            bastore
         7: .line 385
      StackMap locals:
      StackMap stack:
            aload 4 /* cmd */
            iconst_1
            aload 0 /* this */
            iload 1 /* sector */
            invokevirtual android.nfc.tech.MifareClassic.sectorToBlock:(I)I
            i2b
            bastore
         8: .line 388
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.getTag:()Landroid/nfc/Tag;
            invokevirtual android.nfc.Tag.getId:()[B
            astore 5 /* uid */
        start local 5 // byte[] uid
         9: .line 389
            aload 5 /* uid */
            aload 5 /* uid */
            arraylength
            iconst_4
            isub
            aload 4 /* cmd */
            iconst_2
            iconst_4
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 392
            aload 2 /* key */
            iconst_0
            aload 4 /* cmd */
            bipush 6
            bipush 6
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 395
            aload 0 /* this */
            aload 4 /* cmd */
            iconst_0
            invokevirtual android.nfc.tech.MifareClassic.transceive:([BZ)[B
            ifnull 16
        12: .line 396
            iconst_1
            ireturn
        13: .line 398
      StackMap locals: android.nfc.tech.MifareClassic int byte[] int byte[] byte[]
      StackMap stack: android.nfc.TagLostException
            astore 6 /* e */
        start local 6 // android.nfc.TagLostException e
        14: .line 399
            aload 6 /* e */
            athrow
        end local 6 // android.nfc.TagLostException e
        15: .line 400
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        16: .line 403
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 5 // byte[] uid
        end local 4 // byte[] cmd
        end local 3 // boolean keyA
        end local 2 // byte[] key
        end local 1 // int sector
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0    this  Landroid/nfc/tech/MifareClassic;
            0   17     1  sector  I
            0   17     2     key  [B
            0   17     3    keyA  Z
            3   17     4     cmd  [B
            9   17     5     uid  [B
           14   15     6       e  Landroid/nfc/TagLostException;
      Exception table:
        from    to  target  type
          11    12      13  Class android.nfc.TagLostException
          11    12      15  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      sector  
      key     
      keyA    

  public byte[] readBlock(int);
    descriptor: (I)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int blockIndex
         0: .line 421
            iload 1 /* blockIndex */
            invokestatic android.nfc.tech.MifareClassic.validateBlock:(I)V
         1: .line 422
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.checkConnected:()V
         2: .line 424
            iconst_2
            newarray 8
            dup
            iconst_0
            bipush 48
            bastore
            dup
            iconst_1
            iload 1 /* blockIndex */
            i2b
            bastore
            astore 2 /* cmd */
        start local 2 // byte[] cmd
         3: .line 425
            aload 0 /* this */
            aload 2 /* cmd */
            iconst_0
            invokevirtual android.nfc.tech.MifareClassic.transceive:([BZ)[B
            areturn
        end local 2 // byte[] cmd
        end local 1 // int blockIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Landroid/nfc/tech/MifareClassic;
            0    4     1  blockIndex  I
            3    4     2         cmd  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      blockIndex  

  public void writeBlock(int, byte[]);
    descriptor: (I[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int blockIndex
        start local 2 // byte[] data
         0: .line 443
            iload 1 /* blockIndex */
            invokestatic android.nfc.tech.MifareClassic.validateBlock:(I)V
         1: .line 444
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.checkConnected:()V
         2: .line 445
            aload 2 /* data */
            arraylength
            bipush 16
            if_icmpeq 4
         3: .line 446
            new java.lang.IllegalArgumentException
            dup
            ldc "must write 16-bytes"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 449
      StackMap locals:
      StackMap stack:
            aload 2 /* data */
            arraylength
            iconst_2
            iadd
            newarray 8
            astore 3 /* cmd */
        start local 3 // byte[] cmd
         5: .line 450
            aload 3 /* cmd */
            iconst_0
            bipush -96
            bastore
         6: .line 451
            aload 3 /* cmd */
            iconst_1
            iload 1 /* blockIndex */
            i2b
            bastore
         7: .line 452
            aload 2 /* data */
            iconst_0
            aload 3 /* cmd */
            iconst_2
            aload 2 /* data */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 454
            aload 0 /* this */
            aload 3 /* cmd */
            iconst_0
            invokevirtual android.nfc.tech.MifareClassic.transceive:([BZ)[B
            pop
         9: .line 455
            return
        end local 3 // byte[] cmd
        end local 2 // byte[] data
        end local 1 // int blockIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Landroid/nfc/tech/MifareClassic;
            0   10     1  blockIndex  I
            0   10     2        data  [B
            5   10     3         cmd  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      blockIndex  
      data        

  public void increment(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int blockIndex
        start local 2 // int value
         0: .line 472
            iload 1 /* blockIndex */
            invokestatic android.nfc.tech.MifareClassic.validateBlock:(I)V
         1: .line 473
            iload 2 /* value */
            invokestatic android.nfc.tech.MifareClassic.validateValueOperand:(I)V
         2: .line 474
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.checkConnected:()V
         3: .line 476
            bipush 6
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 3 /* cmd */
        start local 3 // java.nio.ByteBuffer cmd
         4: .line 477
            aload 3 /* cmd */
            getstatic java.nio.ByteOrder.LITTLE_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
         5: .line 478
            aload 3 /* cmd */
            bipush -63
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         6: .line 479
            aload 3 /* cmd */
            iload 1 /* blockIndex */
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         7: .line 480
            aload 3 /* cmd */
            iload 2 /* value */
            invokevirtual java.nio.ByteBuffer.putInt:(I)Ljava/nio/ByteBuffer;
            pop
         8: .line 482
            aload 0 /* this */
            aload 3 /* cmd */
            invokevirtual java.nio.ByteBuffer.array:()[B
            iconst_0
            invokevirtual android.nfc.tech.MifareClassic.transceive:([BZ)[B
            pop
         9: .line 483
            return
        end local 3 // java.nio.ByteBuffer cmd
        end local 2 // int value
        end local 1 // int blockIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Landroid/nfc/tech/MifareClassic;
            0   10     1  blockIndex  I
            0   10     2       value  I
            4   10     3         cmd  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      blockIndex  
      value       

  public void decrement(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int blockIndex
        start local 2 // int value
         0: .line 500
            iload 1 /* blockIndex */
            invokestatic android.nfc.tech.MifareClassic.validateBlock:(I)V
         1: .line 501
            iload 2 /* value */
            invokestatic android.nfc.tech.MifareClassic.validateValueOperand:(I)V
         2: .line 502
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.checkConnected:()V
         3: .line 504
            bipush 6
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 3 /* cmd */
        start local 3 // java.nio.ByteBuffer cmd
         4: .line 505
            aload 3 /* cmd */
            getstatic java.nio.ByteOrder.LITTLE_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
         5: .line 506
            aload 3 /* cmd */
            bipush -64
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         6: .line 507
            aload 3 /* cmd */
            iload 1 /* blockIndex */
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         7: .line 508
            aload 3 /* cmd */
            iload 2 /* value */
            invokevirtual java.nio.ByteBuffer.putInt:(I)Ljava/nio/ByteBuffer;
            pop
         8: .line 510
            aload 0 /* this */
            aload 3 /* cmd */
            invokevirtual java.nio.ByteBuffer.array:()[B
            iconst_0
            invokevirtual android.nfc.tech.MifareClassic.transceive:([BZ)[B
            pop
         9: .line 511
            return
        end local 3 // java.nio.ByteBuffer cmd
        end local 2 // int value
        end local 1 // int blockIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Landroid/nfc/tech/MifareClassic;
            0   10     1  blockIndex  I
            0   10     2       value  I
            4   10     3         cmd  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      blockIndex  
      value       

  public void transfer(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int blockIndex
         0: .line 527
            iload 1 /* blockIndex */
            invokestatic android.nfc.tech.MifareClassic.validateBlock:(I)V
         1: .line 528
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.checkConnected:()V
         2: .line 530
            iconst_2
            newarray 8
            dup
            iconst_0
            bipush -80
            bastore
            dup
            iconst_1
            iload 1 /* blockIndex */
            i2b
            bastore
            astore 2 /* cmd */
        start local 2 // byte[] cmd
         3: .line 532
            aload 0 /* this */
            aload 2 /* cmd */
            iconst_0
            invokevirtual android.nfc.tech.MifareClassic.transceive:([BZ)[B
            pop
         4: .line 533
            return
        end local 2 // byte[] cmd
        end local 1 // int blockIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Landroid/nfc/tech/MifareClassic;
            0    5     1  blockIndex  I
            3    5     2         cmd  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      blockIndex  

  public void restore(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int blockIndex
         0: .line 549
            iload 1 /* blockIndex */
            invokestatic android.nfc.tech.MifareClassic.validateBlock:(I)V
         1: .line 550
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.checkConnected:()V
         2: .line 552
            iconst_2
            newarray 8
            dup
            iconst_0
            bipush -62
            bastore
            dup
            iconst_1
            iload 1 /* blockIndex */
            i2b
            bastore
            astore 2 /* cmd */
        start local 2 // byte[] cmd
         3: .line 554
            aload 0 /* this */
            aload 2 /* cmd */
            iconst_0
            invokevirtual android.nfc.tech.MifareClassic.transceive:([BZ)[B
            pop
         4: .line 555
            return
        end local 2 // byte[] cmd
        end local 1 // int blockIndex
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Landroid/nfc/tech/MifareClassic;
            0    5     1  blockIndex  I
            3    5     2         cmd  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      blockIndex  

  public byte[] transceive(byte[]);
    descriptor: ([B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // byte[] data
         0: .line 576
            aload 0 /* this */
            aload 1 /* data */
            iconst_1
            invokevirtual android.nfc.tech.MifareClassic.transceive:([BZ)[B
            areturn
        end local 1 // byte[] data
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/nfc/tech/MifareClassic;
            0    1     1  data  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      data  

  public int getMaxTransceiveLength();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.nfc.tech.MifareClassic this
         0: .line 584
            aload 0 /* this */
            invokevirtual android.nfc.tech.MifareClassic.getMaxTransceiveLengthInternal:()I
            ireturn
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/nfc/tech/MifareClassic;

  public void setTimeout(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.nfc.tech.MifareClassic this
        start local 1 // int timeout
         0: .line 603
            aload 0 /* this */
            getfield android.nfc.tech.MifareClassic.mTag:Landroid/nfc/Tag;
            invokevirtual android.nfc.Tag.getTagService:()Landroid/nfc/INfcTag;
            bipush 8
            iload 1 /* timeout */
            invokeinterface android.nfc.INfcTag.setTimeout:(II)I
            istore 2 /* err */
        start local 2 // int err
         1: .line 604
            iload 2 /* err */
            ifeq 5
         2: .line 605
            new java.lang.IllegalArgumentException
            dup
            ldc "The supplied timeout is not valid"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // int err
         3: .line 607
      StackMap locals:
      StackMap stack: android.os.RemoteException
            astore 2 /* e */
        start local 2 // android.os.RemoteException e
         4: .line 608
            ldc "NFC"
            ldc "NFC service dead"
            aload 2 /* e */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 2 // android.os.RemoteException e
         5: .line 610
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int timeout
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Landroid/nfc/tech/MifareClassic;
            0    6     1  timeout  I
            1    3     2      err  I
            4    5     2        e  Landroid/os/RemoteException;
      Exception table:
        from    to  target  type
           0     3       3  Class android.os.RemoteException
    MethodParameters:
         Name  Flags
      timeout  

  public int getTimeout();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // android.nfc.tech.MifareClassic this
         0: .line 621
            aload 0 /* this */
            getfield android.nfc.tech.MifareClassic.mTag:Landroid/nfc/Tag;
            invokevirtual android.nfc.Tag.getTagService:()Landroid/nfc/INfcTag;
            bipush 8
            invokeinterface android.nfc.INfcTag.getTimeout:(I)I
         1: ireturn
         2: .line 622
      StackMap locals:
      StackMap stack: android.os.RemoteException
            astore 1 /* e */
        start local 1 // android.os.RemoteException e
         3: .line 623
            ldc "NFC"
            ldc "NFC service dead"
            aload 1 /* e */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
         4: .line 624
            iconst_0
            ireturn
        end local 1 // android.os.RemoteException e
        end local 0 // android.nfc.tech.MifareClassic this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/nfc/tech/MifareClassic;
            3    5     1     e  Landroid/os/RemoteException;
      Exception table:
        from    to  target  type
           0     1       2  Class android.os.RemoteException

  private static void validateSector(int);
    descriptor: (I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // int sector
         0: .line 636
            iload 0 /* sector */
            iflt 1
            iload 0 /* sector */
            bipush 40
            if_icmplt 2
         1: .line 637
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            new java.lang.StringBuilder
            dup
            ldc "sector out of bounds: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* sector */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 639
      StackMap locals:
      StackMap stack:
            return
        end local 0 // int sector
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  sector  I
    MethodParameters:
        Name  Flags
      sector  

  private static void validateBlock(int);
    descriptor: (I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // int block
         0: .line 643
            iload 0 /* block */
            iflt 1
            iload 0 /* block */
            sipush 256
            if_icmplt 2
         1: .line 644
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            new java.lang.StringBuilder
            dup
            ldc "block out of bounds: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* block */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 646
      StackMap locals:
      StackMap stack:
            return
        end local 0 // int block
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  block  I
    MethodParameters:
       Name  Flags
      block  

  private static void validateValueOperand(int);
    descriptor: (I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int value
         0: .line 649
            iload 0 /* value */
            ifge 2
         1: .line 650
            new java.lang.IllegalArgumentException
            dup
            ldc "value operand negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 652
      StackMap locals:
      StackMap stack:
            return
        end local 0 // int value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  value  I
    MethodParameters:
       Name  Flags
      value  

  public void close();
    descriptor: ()V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial android.nfc.tech.BasicTagTechnology.close:()V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException

  public void connect();
    descriptor: ()V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial android.nfc.tech.BasicTagTechnology.connect:()V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException

  public boolean isConnected();
    descriptor: ()Z
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial android.nfc.tech.BasicTagTechnology.isConnected:()Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public android.nfc.Tag getTag();
    descriptor: ()Landroid/nfc/Tag;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial android.nfc.tech.BasicTagTechnology.getTag:()Landroid/nfc/Tag;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void reconnect();
    descriptor: ()V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial android.nfc.tech.BasicTagTechnology.reconnect:()V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException
}
SourceFile: "MifareClassic.java"