public final class com.sun.crypto.provider.BlowfishCipher extends javax.crypto.CipherSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.sun.crypto.provider.BlowfishCipher
  super_class: javax.crypto.CipherSpi
{
  private com.sun.crypto.provider.CipherCore core;
    descriptor: Lcom/sun/crypto/provider/CipherCore;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
         0: .line 62
            aload 0 /* this */
            invokespecial javax.crypto.CipherSpi.<init>:()V
         1: .line 56
            aload 0 /* this */
            aconst_null
            putfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
         2: .line 63
            aload 0 /* this */
            new com.sun.crypto.provider.CipherCore
            dup
            new com.sun.crypto.provider.BlowfishCrypt
            dup
            invokespecial com.sun.crypto.provider.BlowfishCrypt.<init>:()V
         3: .line 64
            bipush 8
            invokespecial com.sun.crypto.provider.CipherCore.<init>:(Lcom/sun/crypto/provider/SymmetricCipher;I)V
         4: .line 63
            putfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
         5: .line 65
            return
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/sun/crypto/provider/BlowfishCipher;

  protected void engineSetMode(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // java.lang.String mode
         0: .line 77
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* mode */
            invokevirtual com.sun.crypto.provider.CipherCore.setMode:(Ljava/lang/String;)V
         1: .line 78
            return
        end local 1 // java.lang.String mode
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    2     1  mode  Ljava/lang/String;
    Exceptions:
      throws java.security.NoSuchAlgorithmException
    MethodParameters:
      Name  Flags
      mode  

  protected void engineSetPadding(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // java.lang.String paddingScheme
         0: .line 90
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* paddingScheme */
            invokevirtual com.sun.crypto.provider.CipherCore.setPadding:(Ljava/lang/String;)V
         1: .line 91
            return
        end local 1 // java.lang.String paddingScheme
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    2     1  paddingScheme  Ljava/lang/String;
    Exceptions:
      throws javax.crypto.NoSuchPaddingException
    MethodParameters:
               Name  Flags
      paddingScheme  

  protected int engineGetBlockSize();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
         0: .line 100
            bipush 8
            ireturn
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/BlowfishCipher;

  protected int engineGetOutputSize(int);
    descriptor: (I)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // int inputLen
         0: .line 121
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.getOutputSize:(I)I
            ireturn
        end local 1 // int inputLen
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    1     1  inputLen  I
    MethodParameters:
          Name  Flags
      inputLen  

  protected byte[] engineGetIV();
    descriptor: ()[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
         0: .line 137
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            invokevirtual com.sun.crypto.provider.CipherCore.getIV:()[B
            areturn
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/BlowfishCipher;

  protected java.security.AlgorithmParameters engineGetParameters();
    descriptor: ()Ljava/security/AlgorithmParameters;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
         0: .line 154
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            ldc "Blowfish"
            invokevirtual com.sun.crypto.provider.CipherCore.getParameters:(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
            areturn
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/BlowfishCipher;

  protected void engineInit(int, java.security.Key, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.SecureRandom random
         0: .line 189
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* opmode */
            aload 2 /* key */
            aload 3 /* random */
            invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/SecureRandom;)V
         1: .line 190
            return
        end local 3 // java.security.SecureRandom random
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    2     1  opmode  I
            0    2     2     key  Ljava/security/Key;
            0    2     3  random  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      random  

  protected void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.spec.AlgorithmParameterSpec params
        start local 4 // java.security.SecureRandom random
         0: .line 220
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* opmode */
            aload 2 /* key */
            aload 3 /* params */
            aload 4 /* random */
            invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
         1: .line 221
            return
        end local 4 // java.security.SecureRandom random
        end local 3 // java.security.spec.AlgorithmParameterSpec params
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    2     1  opmode  I
            0    2     2     key  Ljava/security/Key;
            0    2     3  params  Ljava/security/spec/AlgorithmParameterSpec;
            0    2     4  random  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom);
    descriptor: (ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // int opmode
        start local 2 // java.security.Key key
        start local 3 // java.security.AlgorithmParameters params
        start local 4 // java.security.SecureRandom random
         0: .line 227
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            iload 1 /* opmode */
            aload 2 /* key */
            aload 3 /* params */
            aload 4 /* random */
            invokevirtual com.sun.crypto.provider.CipherCore.init:(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
         1: .line 228
            return
        end local 4 // java.security.SecureRandom random
        end local 3 // java.security.AlgorithmParameters params
        end local 2 // java.security.Key key
        end local 1 // int opmode
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    2     1  opmode  I
            0    2     2     key  Ljava/security/Key;
            0    2     3  params  Ljava/security/AlgorithmParameters;
            0    2     4  random  Ljava/security/SecureRandom;
    Exceptions:
      throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      opmode  
      key     
      params  
      random  

  protected byte[] engineUpdate(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
         0: .line 251
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.update:([BII)[B
            areturn
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    1     1        input  [B
            0    1     2  inputOffset  I
            0    1     3     inputLen  I
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected int engineUpdate(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
        start local 4 // byte[] output
        start local 5 // int outputOffset
         0: .line 280
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aload 4 /* output */
         1: .line 281
            iload 5 /* outputOffset */
         2: .line 280
            invokevirtual com.sun.crypto.provider.CipherCore.update:([BII[BI)I
            ireturn
        end local 5 // int outputOffset
        end local 4 // byte[] output
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    3     1         input  [B
            0    3     2   inputOffset  I
            0    3     3      inputLen  I
            0    3     4        output  [B
            0    3     5  outputOffset  I
    Exceptions:
      throws javax.crypto.ShortBufferException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected byte[] engineDoFinal(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
         0: .line 317
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            invokevirtual com.sun.crypto.provider.CipherCore.doFinal:([BII)[B
            areturn
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    1     1        input  [B
            0    1     2  inputOffset  I
            0    1     3     inputLen  I
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
    MethodParameters:
             Name  Flags
      input        
      inputOffset  
      inputLen     

  protected int engineDoFinal(byte[], int, int, byte[], int);
    descriptor: ([BII[BI)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // byte[] input
        start local 2 // int inputOffset
        start local 3 // int inputLen
        start local 4 // byte[] output
        start local 5 // int outputOffset
         0: .line 360
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* input */
            iload 2 /* inputOffset */
            iload 3 /* inputLen */
            aload 4 /* output */
         1: .line 361
            iload 5 /* outputOffset */
         2: .line 360
            invokevirtual com.sun.crypto.provider.CipherCore.doFinal:([BII[BI)I
            ireturn
        end local 5 // int outputOffset
        end local 4 // byte[] output
        end local 3 // int inputLen
        end local 2 // int inputOffset
        end local 1 // byte[] input
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    3     1         input  [B
            0    3     2   inputOffset  I
            0    3     3      inputLen  I
            0    3     4        output  [B
            0    3     5  outputOffset  I
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, javax.crypto.ShortBufferException, javax.crypto.BadPaddingException
    MethodParameters:
              Name  Flags
      input         
      inputOffset   
      inputLen      
      output        
      outputOffset  

  protected int engineGetKeySize(java.security.Key);
    descriptor: (Ljava/security/Key;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // java.security.Key key
         0: .line 374
            aload 1 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            arraylength
            bipush 8
            invokestatic com.sun.crypto.provider.CipherCore.multiplyExact:(II)I
            ireturn
        end local 1 // java.security.Key key
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    1     1   key  Ljava/security/Key;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected byte[] engineWrap(java.security.Key);
    descriptor: (Ljava/security/Key;)[B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // java.security.Key key
         0: .line 395
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* key */
            invokevirtual com.sun.crypto.provider.CipherCore.wrap:(Ljava/security/Key;)[B
            areturn
        end local 1 // java.security.Key key
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    1     1   key  Ljava/security/Key;
    Exceptions:
      throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected java.security.Key engineUnwrap(byte[], java.lang.String, int);
    descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.crypto.provider.BlowfishCipher this
        start local 1 // byte[] wrappedKey
        start local 2 // java.lang.String wrappedKeyAlgorithm
        start local 3 // int wrappedKeyType
         0: .line 423
            aload 0 /* this */
            getfield com.sun.crypto.provider.BlowfishCipher.core:Lcom/sun/crypto/provider/CipherCore;
            aload 1 /* wrappedKey */
            aload 2 /* wrappedKeyAlgorithm */
         1: .line 424
            iload 3 /* wrappedKeyType */
         2: .line 423
            invokevirtual com.sun.crypto.provider.CipherCore.unwrap:([BLjava/lang/String;I)Ljava/security/Key;
            areturn
        end local 3 // int wrappedKeyType
        end local 2 // java.lang.String wrappedKeyAlgorithm
        end local 1 // byte[] wrappedKey
        end local 0 // com.sun.crypto.provider.BlowfishCipher this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Lcom/sun/crypto/provider/BlowfishCipher;
            0    3     1           wrappedKey  [B
            0    3     2  wrappedKeyAlgorithm  Ljava/lang/String;
            0    3     3       wrappedKeyType  I
    Exceptions:
      throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    MethodParameters:
                     Name  Flags
      wrappedKey           
      wrappedKeyAlgorithm  
      wrappedKeyType       
}
SourceFile: "BlowfishCipher.java"