final class com.sun.crypto.provider.GaloisCounterMode$EncryptOp implements com.sun.crypto.provider.GaloisCounterMode$GCMOperation
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.crypto.provider.GaloisCounterMode$EncryptOp
  super_class: java.lang.Object
{
  com.sun.crypto.provider.GCTR gctr;
    descriptor: Lcom/sun/crypto/provider/GCTR;
    flags: (0x0000) 

  com.sun.crypto.provider.GHASH ghash;
    descriptor: Lcom/sun/crypto/provider/GHASH;
    flags: (0x0000) 

  void <init>(com.sun.crypto.provider.GCTR, com.sun.crypto.provider.GHASH);
    descriptor: (Lcom/sun/crypto/provider/GCTR;Lcom/sun/crypto/provider/GHASH;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
        start local 1 // com.sun.crypto.provider.GCTR c
        start local 2 // com.sun.crypto.provider.GHASH g
         0: .line 1704
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1705
            aload 0 /* this */
            aload 1 /* c */
            putfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.gctr:Lcom/sun/crypto/provider/GCTR;
         2: .line 1706
            aload 0 /* this */
            aload 2 /* g */
            putfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.ghash:Lcom/sun/crypto/provider/GHASH;
         3: .line 1707
            return
        end local 2 // com.sun.crypto.provider.GHASH g
        end local 1 // com.sun.crypto.provider.GCTR c
        end local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/sun/crypto/provider/GaloisCounterMode$EncryptOp;
            0    4     1     c  Lcom/sun/crypto/provider/GCTR;
            0    4     2     g  Lcom/sun/crypto/provider/GHASH;
    MethodParameters:
      Name  Flags
      c     
      g     

  public int update(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=6
        start local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
        start local 1 // byte[] in
        start local 2 // int inOfs
        start local 3 // int inLen
        start local 4 // byte[] out
        start local 5 // int outOfs
         0: .line 1712
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.gctr:Lcom/sun/crypto/provider/GCTR;
            aload 1 /* in */
            iload 2 /* inOfs */
            iload 3 /* inLen */
            aload 4 /* out */
            iload 5 /* outOfs */
            invokevirtual com.sun.crypto.provider.GCTR.update:([BII[BI)I
            istore 6 /* len */
        start local 6 // int len
         1: .line 1713
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.ghash:Lcom/sun/crypto/provider/GHASH;
            aload 4 /* out */
            iload 5 /* outOfs */
            iload 6 /* len */
            invokevirtual com.sun.crypto.provider.GHASH.update:([BII)I
            pop
         2: .line 1714
            iload 6 /* len */
            ireturn
        end local 6 // int len
        end local 5 // int outOfs
        end local 4 // byte[] out
        end local 3 // int inLen
        end local 2 // int inOfs
        end local 1 // byte[] in
        end local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/sun/crypto/provider/GaloisCounterMode$EncryptOp;
            0    3     1      in  [B
            0    3     2   inOfs  I
            0    3     3   inLen  I
            0    3     4     out  [B
            0    3     5  outOfs  I
            1    3     6     len  I
    MethodParameters:
        Name  Flags
      in      
      inOfs   
      inLen   
      out     
      outOfs  

  public int update(byte[], int, int, java.nio.ByteBuffer);
    descriptor: ([BIILjava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
        start local 1 // byte[] in
        start local 2 // int inOfs
        start local 3 // int inLen
        start local 4 // java.nio.ByteBuffer dst
         0: .line 1719
            aload 4 /* dst */
            invokevirtual java.nio.ByteBuffer.mark:()Ljava/nio/ByteBuffer;
            pop
         1: .line 1720
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.gctr:Lcom/sun/crypto/provider/GCTR;
            aload 1 /* in */
            iload 2 /* inOfs */
            iload 3 /* inLen */
            aload 4 /* dst */
            invokevirtual com.sun.crypto.provider.GCTR.update:([BIILjava/nio/ByteBuffer;)I
            istore 5 /* len */
        start local 5 // int len
         2: .line 1721
            aload 4 /* dst */
            invokevirtual java.nio.ByteBuffer.reset:()Ljava/nio/ByteBuffer;
            pop
         3: .line 1722
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.ghash:Lcom/sun/crypto/provider/GHASH;
            aload 4 /* dst */
            iload 5 /* len */
            invokevirtual com.sun.crypto.provider.GHASH.update:(Ljava/nio/ByteBuffer;I)I
            pop
         4: .line 1723
            iload 5 /* len */
            ireturn
        end local 5 // int len
        end local 4 // java.nio.ByteBuffer dst
        end local 3 // int inLen
        end local 2 // int inOfs
        end local 1 // byte[] in
        end local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/sun/crypto/provider/GaloisCounterMode$EncryptOp;
            0    5     1     in  [B
            0    5     2  inOfs  I
            0    5     3  inLen  I
            0    5     4    dst  Ljava/nio/ByteBuffer;
            2    5     5    len  I
    MethodParameters:
       Name  Flags
      in     
      inOfs  
      inLen  
      dst    

  public int update(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // java.nio.ByteBuffer dst
         0: .line 1728
            aload 2 /* dst */
            invokevirtual java.nio.ByteBuffer.mark:()Ljava/nio/ByteBuffer;
            pop
         1: .line 1729
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.gctr:Lcom/sun/crypto/provider/GCTR;
            aload 1 /* src */
            aload 2 /* dst */
            invokevirtual com.sun.crypto.provider.GCTR.update:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 3 /* len */
        start local 3 // int len
         2: .line 1730
            aload 2 /* dst */
            invokevirtual java.nio.ByteBuffer.reset:()Ljava/nio/ByteBuffer;
            pop
         3: .line 1731
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.ghash:Lcom/sun/crypto/provider/GHASH;
            aload 2 /* dst */
            iload 3 /* len */
            invokevirtual com.sun.crypto.provider.GHASH.update:(Ljava/nio/ByteBuffer;I)I
            pop
         4: .line 1732
            iload 3 /* len */
            ireturn
        end local 3 // int len
        end local 2 // java.nio.ByteBuffer dst
        end local 1 // java.nio.ByteBuffer src
        end local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/crypto/provider/GaloisCounterMode$EncryptOp;
            0    5     1   src  Ljava/nio/ByteBuffer;
            0    5     2   dst  Ljava/nio/ByteBuffer;
            2    5     3   len  I
    MethodParameters:
      Name  Flags
      src   
      dst   

  public int doFinal(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=7, args_size=6
        start local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
        start local 1 // byte[] in
        start local 2 // int inOfs
        start local 3 // int inLen
        start local 4 // byte[] out
        start local 5 // int outOfs
         0: .line 1738
            iconst_0
            istore 6 /* len */
        start local 6 // int len
         1: .line 1740
            iload 3 /* inLen */
            sipush 8192
            if_icmplt 7
         2: .line 1741
            aload 1 /* in */
            iload 2 /* inOfs */
            iload 3 /* inLen */
            aload 4 /* out */
            iload 5 /* outOfs */
            aload 4 /* out */
            iload 5 /* outOfs */
         3: .line 1742
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.gctr:Lcom/sun/crypto/provider/GCTR;
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.ghash:Lcom/sun/crypto/provider/GHASH;
         4: .line 1741
            invokestatic com.sun.crypto.provider.GaloisCounterMode.implGCMCrypt:([BII[BI[BILcom/sun/crypto/provider/GCTR;Lcom/sun/crypto/provider/GHASH;)I
            istore 6 /* len */
         5: .line 1743
            iload 3 /* inLen */
            iload 6 /* len */
            isub
            istore 3 /* inLen */
         6: .line 1744
            iload 5 /* outOfs */
            iload 6 /* len */
            iadd
            istore 5 /* outOfs */
         7: .line 1747
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.gctr:Lcom/sun/crypto/provider/GCTR;
            aload 1 /* in */
            iload 2 /* inOfs */
            iload 6 /* len */
            iadd
            iload 3 /* inLen */
            aload 4 /* out */
            iload 5 /* outOfs */
            invokevirtual com.sun.crypto.provider.GCTR.doFinal:([BII[BI)I
            pop
         8: .line 1748
            iload 6 /* len */
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.ghash:Lcom/sun/crypto/provider/GHASH;
            aload 4 /* out */
            iload 5 /* outOfs */
            iload 3 /* inLen */
            invokevirtual com.sun.crypto.provider.GHASH.doFinal:([BII)I
            iadd
            ireturn
        end local 6 // int len
        end local 5 // int outOfs
        end local 4 // byte[] out
        end local 3 // int inLen
        end local 2 // int inOfs
        end local 1 // byte[] in
        end local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lcom/sun/crypto/provider/GaloisCounterMode$EncryptOp;
            0    9     1      in  [B
            0    9     2   inOfs  I
            0    9     3   inLen  I
            0    9     4     out  [B
            0    9     5  outOfs  I
            1    9     6     len  I
    MethodParameters:
        Name  Flags
      in      
      inOfs   
      inLen   
      out     
      outOfs  

  public int doFinal(java.nio.ByteBuffer, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // java.nio.ByteBuffer dst
         0: .line 1753
            aload 2 /* dst */
            invokevirtual java.nio.ByteBuffer.mark:()Ljava/nio/ByteBuffer;
            pop
         1: .line 1754
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.gctr:Lcom/sun/crypto/provider/GCTR;
            aload 1 /* src */
            aload 2 /* dst */
            invokevirtual com.sun.crypto.provider.GCTR.doFinal:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 3 /* len */
        start local 3 // int len
         2: .line 1755
            aload 2 /* dst */
            invokevirtual java.nio.ByteBuffer.reset:()Ljava/nio/ByteBuffer;
            pop
         3: .line 1756
            aload 0 /* this */
            getfield com.sun.crypto.provider.GaloisCounterMode$EncryptOp.ghash:Lcom/sun/crypto/provider/GHASH;
            aload 2 /* dst */
            iload 3 /* len */
            invokevirtual com.sun.crypto.provider.GHASH.doFinal:(Ljava/nio/ByteBuffer;I)I
            pop
         4: .line 1757
            iload 3 /* len */
            ireturn
        end local 3 // int len
        end local 2 // java.nio.ByteBuffer dst
        end local 1 // java.nio.ByteBuffer src
        end local 0 // com.sun.crypto.provider.GaloisCounterMode$EncryptOp this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/crypto/provider/GaloisCounterMode$EncryptOp;
            0    5     1   src  Ljava/nio/ByteBuffer;
            0    5     2   dst  Ljava/nio/ByteBuffer;
            2    5     3   len  I
    MethodParameters:
      Name  Flags
      src   
      dst   
}
SourceFile: "GaloisCounterMode.java"
NestHost: com.sun.crypto.provider.GaloisCounterMode
InnerClasses:
  final EncryptOp = com.sun.crypto.provider.GaloisCounterMode$EncryptOp of com.sun.crypto.provider.GaloisCounterMode
  public abstract GCMOperation = com.sun.crypto.provider.GaloisCounterMode$GCMOperation of com.sun.crypto.provider.GaloisCounterMode