public class org.bouncycastle.crypto.encodings.OAEPEncoding implements org.bouncycastle.crypto.AsymmetricBlockCipher
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.encodings.OAEPEncoding
  super_class: java.lang.Object
{
  private byte[] defHash;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.crypto.Digest hash;
    descriptor: Lorg/bouncycastle/crypto/Digest;
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.crypto.Digest mgf1Hash;
    descriptor: Lorg/bouncycastle/crypto/Digest;
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.crypto.AsymmetricBlockCipher engine;
    descriptor: Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
    flags: (0x0002) ACC_PRIVATE

  private java.security.SecureRandom random;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0002) ACC_PRIVATE

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

  public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher);
    descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
         0: .line 29
            aload 0 /* this */
            aload 1 /* cipher */
            new org.bouncycastle.crypto.digests.SHA1Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
            aconst_null
            invokespecial org.bouncycastle.crypto.encodings.OAEPEncoding.<init>:(Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;[B)V
         1: .line 30
            return
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0    2     1  cipher  Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
    MethodParameters:
        Name  Flags
      cipher  

  public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher, org.bouncycastle.crypto.Digest);
    descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        start local 2 // org.bouncycastle.crypto.Digest hash
         0: .line 36
            aload 0 /* this */
            aload 1 /* cipher */
            aload 2 /* hash */
            aconst_null
            invokespecial org.bouncycastle.crypto.encodings.OAEPEncoding.<init>:(Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;[B)V
         1: .line 37
            return
        end local 2 // org.bouncycastle.crypto.Digest hash
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0    2     1  cipher  Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            0    2     2    hash  Lorg/bouncycastle/crypto/Digest;
    MethodParameters:
        Name  Flags
      cipher  
      hash    

  public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher, org.bouncycastle.crypto.Digest, byte[]);
    descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        start local 2 // org.bouncycastle.crypto.Digest hash
        start local 3 // byte[] encodingParams
         0: .line 44
            aload 0 /* this */
            aload 1 /* cipher */
            aload 2 /* hash */
            aload 2 /* hash */
            aload 3 /* encodingParams */
            invokespecial org.bouncycastle.crypto.encodings.OAEPEncoding.<init>:(Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;Lorg/bouncycastle/crypto/Digest;[B)V
         1: .line 45
            return
        end local 3 // byte[] encodingParams
        end local 2 // org.bouncycastle.crypto.Digest hash
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0    2     1          cipher  Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            0    2     2            hash  Lorg/bouncycastle/crypto/Digest;
            0    2     3  encodingParams  [B
    MethodParameters:
                Name  Flags
      cipher          
      hash            
      encodingParams  

  public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher, org.bouncycastle.crypto.Digest, org.bouncycastle.crypto.Digest, byte[]);
    descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;Lorg/bouncycastle/crypto/Digest;[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        start local 2 // org.bouncycastle.crypto.Digest hash
        start local 3 // org.bouncycastle.crypto.Digest mgf1Hash
        start local 4 // byte[] encodingParams
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 53
            aload 0 /* this */
            aload 1 /* cipher */
            putfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
         2: .line 54
            aload 0 /* this */
            aload 2 /* hash */
            putfield org.bouncycastle.crypto.encodings.OAEPEncoding.hash:Lorg/bouncycastle/crypto/Digest;
         3: .line 55
            aload 0 /* this */
            aload 3 /* mgf1Hash */
            putfield org.bouncycastle.crypto.encodings.OAEPEncoding.mgf1Hash:Lorg/bouncycastle/crypto/Digest;
         4: .line 56
            aload 0 /* this */
            aload 2 /* hash */
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            newarray 8
            putfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
         5: .line 58
            aload 4 /* encodingParams */
            ifnull 7
         6: .line 60
            aload 2 /* hash */
            aload 4 /* encodingParams */
            iconst_0
            aload 4 /* encodingParams */
            arraylength
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
         7: .line 63
      StackMap locals: org.bouncycastle.crypto.encodings.OAEPEncoding org.bouncycastle.crypto.AsymmetricBlockCipher org.bouncycastle.crypto.Digest org.bouncycastle.crypto.Digest byte[]
      StackMap stack:
            aload 2 /* hash */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            iconst_0
            invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
            pop
         8: .line 64
            return
        end local 4 // byte[] encodingParams
        end local 3 // org.bouncycastle.crypto.Digest mgf1Hash
        end local 2 // org.bouncycastle.crypto.Digest hash
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0    9     1          cipher  Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            0    9     2            hash  Lorg/bouncycastle/crypto/Digest;
            0    9     3        mgf1Hash  Lorg/bouncycastle/crypto/Digest;
            0    9     4  encodingParams  [B
    MethodParameters:
                Name  Flags
      cipher          
      hash            
      mgf1Hash        
      encodingParams  

  public org.bouncycastle.crypto.AsymmetricBlockCipher getUnderlyingCipher();
    descriptor: ()Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
         0: .line 68
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            areturn
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;

  public void init(boolean, org.bouncycastle.crypto.CipherParameters);
    descriptor: (ZLorg/bouncycastle/crypto/CipherParameters;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // boolean forEncryption
        start local 2 // org.bouncycastle.crypto.CipherParameters param
         0: .line 75
            aload 2 /* param */
            instanceof org.bouncycastle.crypto.params.ParametersWithRandom
            ifeq 4
         1: .line 77
            aload 2 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithRandom
            astore 3 /* rParam */
        start local 3 // org.bouncycastle.crypto.params.ParametersWithRandom rParam
         2: .line 79
            aload 0 /* this */
            aload 3 /* rParam */
            invokevirtual org.bouncycastle.crypto.params.ParametersWithRandom.getRandom:()Ljava/security/SecureRandom;
            putfield org.bouncycastle.crypto.encodings.OAEPEncoding.random:Ljava/security/SecureRandom;
        end local 3 // org.bouncycastle.crypto.params.ParametersWithRandom rParam
         3: .line 80
            goto 5
         4: .line 83
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield org.bouncycastle.crypto.encodings.OAEPEncoding.random:Ljava/security/SecureRandom;
         5: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            iload 1 /* forEncryption */
            aload 2 /* param */
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
         6: .line 88
            aload 0 /* this */
            iload 1 /* forEncryption */
            putfield org.bouncycastle.crypto.encodings.OAEPEncoding.forEncryption:Z
         7: .line 89
            return
        end local 2 // org.bouncycastle.crypto.CipherParameters param
        end local 1 // boolean forEncryption
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0    8     1  forEncryption  Z
            0    8     2          param  Lorg/bouncycastle/crypto/CipherParameters;
            2    3     3         rParam  Lorg/bouncycastle/crypto/params/ParametersWithRandom;
    MethodParameters:
               Name  Flags
      forEncryption  
      param          

  public int getInputBlockSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
         0: .line 93
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
            istore 1 /* baseBlockSize */
        start local 1 // int baseBlockSize
         1: .line 95
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.forEncryption:Z
            ifeq 3
         2: .line 97
            iload 1 /* baseBlockSize */
            iconst_1
            isub
            iconst_2
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            imul
            isub
            ireturn
         3: .line 101
      StackMap locals: int
      StackMap stack:
            iload 1 /* baseBlockSize */
            ireturn
        end local 1 // int baseBlockSize
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            1    4     1  baseBlockSize  I

  public int getOutputBlockSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
         0: .line 107
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
            istore 1 /* baseBlockSize */
        start local 1 // int baseBlockSize
         1: .line 109
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.forEncryption:Z
            ifeq 3
         2: .line 111
            iload 1 /* baseBlockSize */
            ireturn
         3: .line 115
      StackMap locals: int
      StackMap stack:
            iload 1 /* baseBlockSize */
            iconst_1
            isub
            iconst_2
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            imul
            isub
            ireturn
        end local 1 // int baseBlockSize
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            1    4     1  baseBlockSize  I

  public byte[] processBlock(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // byte[] in
        start local 2 // int inOff
        start local 3 // int inLen
         0: .line 125
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.forEncryption:Z
            ifeq 2
         1: .line 127
            aload 0 /* this */
            aload 1 /* in */
            iload 2 /* inOff */
            iload 3 /* inLen */
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.encodeBlock:([BII)[B
            areturn
         2: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* in */
            iload 2 /* inOff */
            iload 3 /* inLen */
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.decodeBlock:([BII)[B
            areturn
        end local 3 // int inLen
        end local 2 // int inOff
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0    3     1     in  [B
            0    3     2  inOff  I
            0    3     3  inLen  I
    Exceptions:
      throws org.bouncycastle.crypto.InvalidCipherTextException
    MethodParameters:
       Name  Flags
      in     
      inOff  
      inLen  

  public byte[] encodeBlock(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // byte[] in
        start local 2 // int inOff
        start local 3 // int inLen
         0: .line 141
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.getInputBlockSize:()I
            iconst_1
            iadd
            iconst_2
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            imul
            iadd
            newarray 8
            astore 4 /* block */
        start local 4 // byte[] block
         1: .line 146
            aload 1 /* in */
            iload 2 /* inOff */
            aload 4 /* block */
            aload 4 /* block */
            arraylength
            iload 3 /* inLen */
            isub
            iload 3 /* inLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 151
            aload 4 /* block */
            aload 4 /* block */
            arraylength
            iload 3 /* inLen */
            isub
            iconst_1
            isub
            iconst_1
            bastore
         3: .line 160
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            iconst_0
            aload 4 /* block */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 165
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            newarray 8
            astore 5 /* seed */
        start local 5 // byte[] seed
         5: .line 167
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.random:Ljava/security/SecureRandom;
            aload 5 /* seed */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         6: .line 172
            aload 0 /* this */
            aload 5 /* seed */
            iconst_0
            aload 5 /* seed */
            arraylength
            aload 4 /* block */
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            isub
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.maskGeneratorFunction1:([BIII)[B
            astore 6 /* mask */
        start local 6 // byte[] mask
         7: .line 174
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            istore 7 /* i */
        start local 7 // int i
         8: goto 11
         9: .line 176
      StackMap locals: org.bouncycastle.crypto.encodings.OAEPEncoding byte[] int int byte[] byte[] byte[] int
      StackMap stack:
            aload 4 /* block */
            iload 7 /* i */
            dup2
            baload
            aload 6 /* mask */
            iload 7 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            isub
            baload
            ixor
            i2b
            bastore
        10: .line 174
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 7 /* i */
            aload 4 /* block */
            arraylength
            if_icmpne 9
        end local 7 // int i
        12: .line 182
            aload 5 /* seed */
            iconst_0
            aload 4 /* block */
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 187
            aload 0 /* this */
        14: .line 188
            aload 4 /* block */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            aload 4 /* block */
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            isub
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
        15: .line 187
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.maskGeneratorFunction1:([BIII)[B
            astore 6 /* mask */
        16: .line 190
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        17: goto 20
        18: .line 192
      StackMap locals:
      StackMap stack:
            aload 4 /* block */
            iload 7 /* i */
            dup2
            baload
            aload 6 /* mask */
            iload 7 /* i */
            baload
            ixor
            i2b
            bastore
        19: .line 190
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 7 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            if_icmpne 18
        end local 7 // int i
        21: .line 195
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            aload 4 /* block */
            iconst_0
            aload 4 /* block */
            arraylength
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
            areturn
        end local 6 // byte[] mask
        end local 5 // byte[] seed
        end local 4 // byte[] block
        end local 3 // int inLen
        end local 2 // int inOff
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   22     0   this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0   22     1     in  [B
            0   22     2  inOff  I
            0   22     3  inLen  I
            1   22     4  block  [B
            5   22     5   seed  [B
            7   22     6   mask  [B
            8   12     7      i  I
           17   21     7      i  I
    Exceptions:
      throws org.bouncycastle.crypto.InvalidCipherTextException
    MethodParameters:
       Name  Flags
      in     
      inOff  
      inLen  

  public byte[] decodeBlock(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // byte[] in
        start local 2 // int inOff
        start local 3 // int inLen
         0: .line 208
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            aload 1 /* in */
            iload 2 /* inOff */
            iload 3 /* inLen */
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
            astore 4 /* data */
        start local 4 // byte[] data
         1: .line 216
            aload 4 /* data */
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
            if_icmpge 5
         2: .line 218
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
            newarray 8
            astore 5 /* block */
        start local 5 // byte[] block
         3: .line 220
            aload 4 /* data */
            iconst_0
            aload 5 /* block */
            aload 5 /* block */
            arraylength
            aload 4 /* data */
            arraylength
            isub
            aload 4 /* data */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 221
            goto 6
        end local 5 // byte[] block
         5: .line 224
      StackMap locals: byte[]
      StackMap stack:
            aload 4 /* data */
            astore 5 /* block */
        start local 5 // byte[] block
         6: .line 227
      StackMap locals: byte[]
      StackMap stack:
            aload 5 /* block */
            arraylength
            iconst_2
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            imul
            iconst_1
            iadd
            if_icmpge 8
         7: .line 229
            new org.bouncycastle.crypto.InvalidCipherTextException
            dup
            ldc "data too short"
            invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
         9: .line 236
            aload 5 /* block */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            aload 5 /* block */
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            isub
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
        10: .line 235
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.maskGeneratorFunction1:([BIII)[B
            astore 6 /* mask */
        start local 6 // byte[] mask
        11: .line 238
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        12: goto 15
        13: .line 240
      StackMap locals: byte[] int
      StackMap stack:
            aload 5 /* block */
            iload 7 /* i */
            dup2
            baload
            aload 6 /* mask */
            iload 7 /* i */
            baload
            ixor
            i2b
            bastore
        14: .line 238
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 7 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            if_icmpne 13
        end local 7 // int i
        16: .line 246
            aload 0 /* this */
            aload 5 /* block */
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            aload 5 /* block */
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            isub
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.maskGeneratorFunction1:([BIII)[B
            astore 6 /* mask */
        17: .line 248
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            istore 7 /* i */
        start local 7 // int i
        18: goto 21
        19: .line 250
      StackMap locals:
      StackMap stack:
            aload 5 /* block */
            iload 7 /* i */
            dup2
            baload
            aload 6 /* mask */
            iload 7 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            isub
            baload
            ixor
            i2b
            bastore
        20: .line 248
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 7 /* i */
            aload 5 /* block */
            arraylength
            if_icmpne 19
        end local 7 // int i
        22: .line 256
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        23: goto 27
        24: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            iload 7 /* i */
            baload
            aload 5 /* block */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            iload 7 /* i */
            iadd
            baload
            if_icmpeq 26
        25: .line 260
            new org.bouncycastle.crypto.InvalidCipherTextException
            dup
            ldc "data hash wrong"
            invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 256
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 7 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            if_icmpne 24
        end local 7 // int i
        28: .line 269
            iconst_2
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.defHash:[B
            arraylength
            imul
            istore 7 /* start */
        start local 7 // int start
        29: goto 33
        30: .line 271
      StackMap locals:
      StackMap stack:
            aload 5 /* block */
            iload 7 /* start */
            baload
            ifeq 32
        31: .line 273
            goto 34
        32: .line 269
      StackMap locals:
      StackMap stack:
            iinc 7 /* start */ 1
      StackMap locals:
      StackMap stack:
        33: iload 7 /* start */
            aload 5 /* block */
            arraylength
            if_icmpne 30
        34: .line 277
      StackMap locals:
      StackMap stack:
            iload 7 /* start */
            aload 5 /* block */
            arraylength
            iconst_1
            isub
            if_icmpge 35
            aload 5 /* block */
            iload 7 /* start */
            baload
            iconst_1
            if_icmpeq 36
        35: .line 279
      StackMap locals:
      StackMap stack:
            new org.bouncycastle.crypto.InvalidCipherTextException
            dup
            new java.lang.StringBuilder
            dup
            ldc "data start wrong "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* start */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
            athrow
        36: .line 282
      StackMap locals:
      StackMap stack:
            iinc 7 /* start */ 1
        37: .line 287
            aload 5 /* block */
            arraylength
            iload 7 /* start */
            isub
            newarray 8
            astore 8 /* output */
        start local 8 // byte[] output
        38: .line 289
            aload 5 /* block */
            iload 7 /* start */
            aload 8 /* output */
            iconst_0
            aload 8 /* output */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        39: .line 291
            aload 8 /* output */
            areturn
        end local 8 // byte[] output
        end local 7 // int start
        end local 6 // byte[] mask
        end local 5 // byte[] block
        end local 4 // byte[] data
        end local 3 // int inLen
        end local 2 // int inOff
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   40     0    this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0   40     1      in  [B
            0   40     2   inOff  I
            0   40     3   inLen  I
            1   40     4    data  [B
            3    5     5   block  [B
            6   40     5   block  [B
           11   40     6    mask  [B
           12   16     7       i  I
           18   22     7       i  I
           23   28     7       i  I
           29   40     7   start  I
           38   40     8  output  [B
    Exceptions:
      throws org.bouncycastle.crypto.InvalidCipherTextException
    MethodParameters:
       Name  Flags
      in     
      inOff  
      inLen  

  private void ItoOSP(int, byte[]);
    descriptor: (I[B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // int i
        start local 2 // byte[] sp
         0: .line 301
            aload 2 /* sp */
            iconst_0
            iload 1 /* i */
            bipush 24
            iushr
            i2b
            bastore
         1: .line 302
            aload 2 /* sp */
            iconst_1
            iload 1 /* i */
            bipush 16
            iushr
            i2b
            bastore
         2: .line 303
            aload 2 /* sp */
            iconst_2
            iload 1 /* i */
            bipush 8
            iushr
            i2b
            bastore
         3: .line 304
            aload 2 /* sp */
            iconst_3
            iload 1 /* i */
            iconst_0
            iushr
            i2b
            bastore
         4: .line 305
            return
        end local 2 // byte[] sp
        end local 1 // int i
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0    5     1     i  I
            0    5     2    sp  [B
    MethodParameters:
      Name  Flags
      i     
      sp    

  private byte[] maskGeneratorFunction1(byte[], int, int, int);
    descriptor: ([BIII)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=9, args_size=5
        start local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
        start local 1 // byte[] Z
        start local 2 // int zOff
        start local 3 // int zLen
        start local 4 // int length
         0: .line 316
            iload 4 /* length */
            newarray 8
            astore 5 /* mask */
        start local 5 // byte[] mask
         1: .line 317
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.mgf1Hash:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            newarray 8
            astore 6 /* hashBuf */
        start local 6 // byte[] hashBuf
         2: .line 318
            iconst_4
            newarray 8
            astore 7 /* C */
        start local 7 // byte[] C
         3: .line 319
            iconst_0
            istore 8 /* counter */
        start local 8 // int counter
         4: .line 321
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.hash:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.reset:()V
         5: .line 325
      StackMap locals: org.bouncycastle.crypto.encodings.OAEPEncoding byte[] int int int byte[] byte[] byte[] int
      StackMap stack:
            aload 0 /* this */
            iload 8 /* counter */
            aload 7 /* C */
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.ItoOSP:(I[B)V
         6: .line 327
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.mgf1Hash:Lorg/bouncycastle/crypto/Digest;
            aload 1 /* Z */
            iload 2 /* zOff */
            iload 3 /* zLen */
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
         7: .line 328
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.mgf1Hash:Lorg/bouncycastle/crypto/Digest;
            aload 7 /* C */
            iconst_0
            aload 7 /* C */
            arraylength
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
         8: .line 329
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.mgf1Hash:Lorg/bouncycastle/crypto/Digest;
            aload 6 /* hashBuf */
            iconst_0
            invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
            pop
         9: .line 331
            aload 6 /* hashBuf */
            iconst_0
            aload 5 /* mask */
            iload 8 /* counter */
            aload 6 /* hashBuf */
            arraylength
            imul
            aload 6 /* hashBuf */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 333
            iinc 8 /* counter */ 1
            iload 8 /* counter */
            iload 4 /* length */
            aload 6 /* hashBuf */
            arraylength
            idiv
        11: .line 323
            if_icmplt 5
        12: .line 335
            iload 8 /* counter */
            aload 6 /* hashBuf */
            arraylength
            imul
            iload 4 /* length */
            if_icmpge 18
        13: .line 337
            aload 0 /* this */
            iload 8 /* counter */
            aload 7 /* C */
            invokevirtual org.bouncycastle.crypto.encodings.OAEPEncoding.ItoOSP:(I[B)V
        14: .line 339
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.mgf1Hash:Lorg/bouncycastle/crypto/Digest;
            aload 1 /* Z */
            iload 2 /* zOff */
            iload 3 /* zLen */
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
        15: .line 340
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.mgf1Hash:Lorg/bouncycastle/crypto/Digest;
            aload 7 /* C */
            iconst_0
            aload 7 /* C */
            arraylength
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
        16: .line 341
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.OAEPEncoding.mgf1Hash:Lorg/bouncycastle/crypto/Digest;
            aload 6 /* hashBuf */
            iconst_0
            invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
            pop
        17: .line 343
            aload 6 /* hashBuf */
            iconst_0
            aload 5 /* mask */
            iload 8 /* counter */
            aload 6 /* hashBuf */
            arraylength
            imul
            aload 5 /* mask */
            arraylength
            iload 8 /* counter */
            aload 6 /* hashBuf */
            arraylength
            imul
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        18: .line 346
      StackMap locals:
      StackMap stack:
            aload 5 /* mask */
            areturn
        end local 8 // int counter
        end local 7 // byte[] C
        end local 6 // byte[] hashBuf
        end local 5 // byte[] mask
        end local 4 // int length
        end local 3 // int zLen
        end local 2 // int zOff
        end local 1 // byte[] Z
        end local 0 // org.bouncycastle.crypto.encodings.OAEPEncoding this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0     this  Lorg/bouncycastle/crypto/encodings/OAEPEncoding;
            0   19     1        Z  [B
            0   19     2     zOff  I
            0   19     3     zLen  I
            0   19     4   length  I
            1   19     5     mask  [B
            2   19     6  hashBuf  [B
            3   19     7        C  [B
            4   19     8  counter  I
    MethodParameters:
        Name  Flags
      Z       
      zOff    
      zLen    
      length  
}
SourceFile: "OAEPEncoding.java"