public abstract class javax.crypto.MacSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: javax.crypto.MacSpi
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.crypto.MacSpi this
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // javax.crypto.MacSpi this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavax/crypto/MacSpi;

  protected abstract int engineGetMacLength();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void engineInit(java.security.Key, java.security.spec.AlgorithmParameterSpec);
    descriptor: (Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      key     
      params  

  protected abstract void engineUpdate(byte);
    descriptor: (B)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      input  

  protected abstract void engineUpdate(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      input   
      offset  
      len     

  protected void engineUpdate(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // javax.crypto.MacSpi this
        start local 1 // java.nio.ByteBuffer input
         0: .line 102
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 2
         1: .line 103
            return
         2: .line 105
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            ifeq 10
         3: .line 106
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.array:()[B
            astore 2 /* b */
        start local 2 // byte[] b
         4: .line 107
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            istore 3 /* ofs */
        start local 3 // int ofs
         5: .line 108
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* pos */
        start local 4 // int pos
         6: .line 109
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.limit:()I
            istore 5 /* lim */
        start local 5 // int lim
         7: .line 110
            aload 0 /* this */
            aload 2 /* b */
            iload 3 /* ofs */
            iload 4 /* pos */
            iadd
            iload 5 /* lim */
            iload 4 /* pos */
            isub
            invokevirtual javax.crypto.MacSpi.engineUpdate:([BII)V
         8: .line 111
            aload 1 /* input */
            iload 5 /* lim */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        end local 5 // int lim
        end local 4 // int pos
        end local 3 // int ofs
        end local 2 // byte[] b
         9: .line 112
            goto 18
        10: .line 113
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 2 /* len */
        start local 2 // int len
        11: .line 114
            iload 2 /* len */
            invokestatic javax.crypto.CipherSpi.getTempArraySize:(I)I
            newarray 8
            astore 3 /* b */
        start local 3 // byte[] b
        12: .line 115
            goto 17
        13: .line 116
      StackMap locals: int byte[]
      StackMap stack:
            iload 2 /* len */
            aload 3 /* b */
            arraylength
            invokestatic java.lang.Math.min:(II)I
            istore 4 /* chunk */
        start local 4 // int chunk
        14: .line 117
            aload 1 /* input */
            aload 3 /* b */
            iconst_0
            iload 4 /* chunk */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
        15: .line 118
            aload 0 /* this */
            aload 3 /* b */
            iconst_0
            iload 4 /* chunk */
            invokevirtual javax.crypto.MacSpi.engineUpdate:([BII)V
        16: .line 119
            iload 2 /* len */
            iload 4 /* chunk */
            isub
            istore 2 /* len */
        end local 4 // int chunk
        17: .line 115
      StackMap locals:
      StackMap stack:
            iload 2 /* len */
            ifgt 13
        end local 3 // byte[] b
        end local 2 // int len
        18: .line 122
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.ByteBuffer input
        end local 0 // javax.crypto.MacSpi this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   19     0   this  Ljavax/crypto/MacSpi;
            0   19     1  input  Ljava/nio/ByteBuffer;
            4    9     2      b  [B
            5    9     3    ofs  I
            6    9     4    pos  I
            7    9     5    lim  I
           11   18     2    len  I
           12   18     3      b  [B
           14   17     4  chunk  I
    MethodParameters:
       Name  Flags
      input  

  protected abstract byte[] engineDoFinal();
    descriptor: ()[B
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void engineReset();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public java.lang.Object clone();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // javax.crypto.MacSpi this
         0: .line 147
            aload 0 /* this */
            instanceof java.lang.Cloneable
            ifeq 2
         1: .line 148
            aload 0 /* this */
            invokespecial java.lang.Object.clone:()Ljava/lang/Object;
            areturn
         2: .line 150
      StackMap locals:
      StackMap stack:
            new java.lang.CloneNotSupportedException
            dup
            invokespecial java.lang.CloneNotSupportedException.<init>:()V
            athrow
        end local 0 // javax.crypto.MacSpi this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljavax/crypto/MacSpi;
    Exceptions:
      throws java.lang.CloneNotSupportedException
}
SourceFile: "MacSpi.java"