public class org.bouncycastle.crypto.signers.ISO9796d2Signer implements org.bouncycastle.crypto.SignerWithRecovery
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.signers.ISO9796d2Signer
  super_class: java.lang.Object
{
  public static final int TRAILER_IMPLICIT;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 188

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

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

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

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

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

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

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

  private static java.util.Hashtable trailerMap;
    descriptor: Ljava/util/Hashtable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

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

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

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

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

  private byte[] block;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] mBuf;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

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

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

  private byte[] recoveredMessage;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] preSig;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private byte[] preBlock;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 29
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
         1: .line 33
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            ldc "RIPEMD128"
            new java.lang.Integer
            dup
            sipush 13004
            invokespecial java.lang.Integer.<init>:(I)V
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 34
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            ldc "RIPEMD160"
            new java.lang.Integer
            dup
            sipush 12748
            invokespecial java.lang.Integer.<init>:(I)V
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 36
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            ldc "SHA-1"
            new java.lang.Integer
            dup
            sipush 13260
            invokespecial java.lang.Integer.<init>:(I)V
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 37
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            ldc "SHA-256"
            new java.lang.Integer
            dup
            sipush 13516
            invokespecial java.lang.Integer.<init>:(I)V
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 38
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            ldc "SHA-384"
            new java.lang.Integer
            dup
            sipush 14028
            invokespecial java.lang.Integer.<init>:(I)V
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 39
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            ldc "SHA-512"
            new java.lang.Integer
            dup
            sipush 13772
            invokespecial java.lang.Integer.<init>:(I)V
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 41
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            ldc "Whirlpool"
            new java.lang.Integer
            dup
            sipush 14284
            invokespecial java.lang.Integer.<init>:(I)V
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 42
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher, org.bouncycastle.crypto.Digest, boolean);
    descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        start local 2 // org.bouncycastle.crypto.Digest digest
        start local 3 // boolean implicit
         0: .line 66
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 71
            aload 0 /* this */
            aload 1 /* cipher */
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
         2: .line 72
            aload 0 /* this */
            aload 2 /* digest */
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
         3: .line 74
            iload 3 /* implicit */
            ifeq 6
         4: .line 76
            aload 0 /* this */
            sipush 188
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.trailer:I
         5: .line 77
            goto 11
         6: .line 80
      StackMap locals: org.bouncycastle.crypto.signers.ISO9796d2Signer org.bouncycastle.crypto.AsymmetricBlockCipher org.bouncycastle.crypto.Digest int
      StackMap stack:
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            aload 2 /* digest */
            invokeinterface org.bouncycastle.crypto.Digest.getAlgorithmName:()Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 4 /* trailerObj */
        start local 4 // java.lang.Integer trailerObj
         7: .line 82
            aload 4 /* trailerObj */
            ifnull 10
         8: .line 84
            aload 0 /* this */
            aload 4 /* trailerObj */
            invokevirtual java.lang.Integer.intValue:()I
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.trailer:I
         9: .line 85
            goto 11
        10: .line 88
      StackMap locals: java.lang.Integer
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "no valid trailer for digest"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.Integer trailerObj
        11: .line 91
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean implicit
        end local 2 // org.bouncycastle.crypto.Digest digest
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0   12     1      cipher  Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            0   12     2      digest  Lorg/bouncycastle/crypto/Digest;
            0   12     3    implicit  Z
            7   11     4  trailerObj  Ljava/lang/Integer;
    MethodParameters:
          Name  Flags
      cipher    
      digest    
      implicit  

  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.signers.ISO9796d2Signer this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        start local 2 // org.bouncycastle.crypto.Digest digest
         0: .line 103
            aload 0 /* this */
            aload 1 /* cipher */
            aload 2 /* digest */
            iconst_0
            invokespecial org.bouncycastle.crypto.signers.ISO9796d2Signer.<init>:(Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;Z)V
         1: .line 104
            return
        end local 2 // org.bouncycastle.crypto.Digest digest
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0    2     1  cipher  Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            0    2     2  digest  Lorg/bouncycastle/crypto/Digest;
    MethodParameters:
        Name  Flags
      cipher  
      digest  

  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.signers.ISO9796d2Signer this
        start local 1 // boolean forSigning
        start local 2 // org.bouncycastle.crypto.CipherParameters param
         0: .line 110
            aload 2 /* param */
            checkcast org.bouncycastle.crypto.params.RSAKeyParameters
            astore 3 /* kParam */
        start local 3 // org.bouncycastle.crypto.params.RSAKeyParameters kParam
         1: .line 112
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            iload 1 /* forSigning */
            aload 3 /* kParam */
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
         2: .line 114
            aload 0 /* this */
            aload 3 /* kParam */
            invokevirtual org.bouncycastle.crypto.params.RSAKeyParameters.getModulus:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.bitLength:()I
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.keyBits:I
         3: .line 116
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.keyBits:I
            bipush 7
            iadd
            bipush 8
            idiv
            newarray 8
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
         4: .line 118
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.trailer:I
            sipush 188
            if_icmpne 7
         5: .line 120
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            isub
            iconst_2
            isub
            newarray 8
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
         6: .line 121
            goto 8
         7: .line 124
      StackMap locals: org.bouncycastle.crypto.params.RSAKeyParameters
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            isub
            iconst_3
            isub
            newarray 8
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
         8: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.reset:()V
         9: .line 128
            return
        end local 3 // org.bouncycastle.crypto.params.RSAKeyParameters kParam
        end local 2 // org.bouncycastle.crypto.CipherParameters param
        end local 1 // boolean forSigning
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0   10     1  forSigning  Z
            0   10     2       param  Lorg/bouncycastle/crypto/CipherParameters;
            1   10     3      kParam  Lorg/bouncycastle/crypto/params/RSAKeyParameters;
    MethodParameters:
            Name  Flags
      forSigning  
      param       

  private boolean isSameAs(byte[], byte[]);
    descriptor: ([B[B)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
        start local 1 // byte[] a
        start local 2 // byte[] b
         0: .line 137
            iconst_1
            istore 3 /* isOkay */
        start local 3 // boolean isOkay
         1: .line 139
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            arraylength
            if_icmple 11
         2: .line 141
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            arraylength
            aload 2 /* b */
            arraylength
            if_icmple 4
         3: .line 143
            iconst_0
            istore 3 /* isOkay */
         4: .line 146
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 9
         6: .line 148
      StackMap locals: int
      StackMap stack:
            aload 1 /* a */
            iload 4 /* i */
            baload
            aload 2 /* b */
            iload 4 /* i */
            baload
            if_icmpeq 8
         7: .line 150
            iconst_0
            istore 3 /* isOkay */
         8: .line 146
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 4 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            arraylength
            if_icmpne 6
        end local 4 // int i
        10: .line 153
            goto 19
        11: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            aload 2 /* b */
            arraylength
            if_icmpeq 13
        12: .line 158
            iconst_0
            istore 3 /* isOkay */
        13: .line 161
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        14: goto 18
        15: .line 163
      StackMap locals: int
      StackMap stack:
            aload 1 /* a */
            iload 4 /* i */
            baload
            aload 2 /* b */
            iload 4 /* i */
            baload
            if_icmpeq 17
        16: .line 165
            iconst_0
            istore 3 /* isOkay */
        17: .line 161
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 4 /* i */
            aload 2 /* b */
            arraylength
            if_icmpne 15
        end local 4 // int i
        19: .line 170
      StackMap locals:
      StackMap stack:
            iload 3 /* isOkay */
            ireturn
        end local 3 // boolean isOkay
        end local 2 // byte[] b
        end local 1 // byte[] a
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   20     0    this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0   20     1       a  [B
            0   20     2       b  [B
            1   20     3  isOkay  Z
            5   10     4       i  I
           14   19     4       i  I
    MethodParameters:
      Name  Flags
      a     
      b     

  private void clearBlock(byte[]);
    descriptor: ([B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
        start local 1 // byte[] block
         0: .line 179
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 4
         2: .line 181
      StackMap locals: int
      StackMap stack:
            aload 1 /* block */
            iload 2 /* i */
            iconst_0
            bastore
         3: .line 179
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         4: iload 2 /* i */
            aload 1 /* block */
            arraylength
            if_icmpne 2
        end local 2 // int i
         5: .line 183
            return
        end local 1 // byte[] block
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0    6     1  block  [B
            1    5     2      i  I
    MethodParameters:
       Name  Flags
      block  

  public void updateWithRecoveredMessage(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
        start local 1 // byte[] signature
         0: .line 188
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            aload 1 /* signature */
            iconst_0
            aload 1 /* signature */
            arraylength
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
            astore 2 /* block */
        start local 2 // byte[] block
         1: .line 190
            aload 2 /* block */
            iconst_0
            baload
            sipush 192
            iand
            bipush 64
            ixor
            ifeq 3
         2: .line 192
            new org.bouncycastle.crypto.InvalidCipherTextException
            dup
            ldc "malformed signature"
            invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 195
      StackMap locals: byte[]
      StackMap stack:
            aload 2 /* block */
            aload 2 /* block */
            arraylength
            iconst_1
            isub
            baload
            bipush 15
            iand
            bipush 12
            ixor
            ifeq 5
         4: .line 197
            new org.bouncycastle.crypto.InvalidCipherTextException
            dup
            ldc "malformed signature"
            invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 200
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* delta */
        start local 3 // int delta
         6: .line 202
            aload 2 /* block */
            aload 2 /* block */
            arraylength
            iconst_1
            isub
            baload
            sipush 255
            iand
            sipush 188
            ixor
            ifne 9
         7: .line 204
            iconst_1
            istore 3 /* delta */
         8: .line 205
            goto 16
         9: .line 208
      StackMap locals: int
      StackMap stack:
            aload 2 /* block */
            aload 2 /* block */
            arraylength
            iconst_2
            isub
            baload
            sipush 255
            iand
            bipush 8
            ishl
            aload 2 /* block */
            aload 2 /* block */
            arraylength
            iconst_1
            isub
            baload
            sipush 255
            iand
            ior
            istore 4 /* sigTrail */
        start local 4 // int sigTrail
        10: .line 209
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getAlgorithmName:()Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 5 /* trailerObj */
        start local 5 // java.lang.Integer trailerObj
        11: .line 211
            aload 5 /* trailerObj */
            ifnull 14
        12: .line 213
            iload 4 /* sigTrail */
            aload 5 /* trailerObj */
            invokevirtual java.lang.Integer.intValue:()I
            if_icmpeq 15
        13: .line 215
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "signer initialised with wrong digest for trailer "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* sigTrail */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 220
      StackMap locals: int java.lang.Integer
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "unrecognised hash in signature"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 223
      StackMap locals:
      StackMap stack:
            iconst_2
            istore 3 /* delta */
        end local 5 // java.lang.Integer trailerObj
        end local 4 // int sigTrail
        16: .line 229
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* mStart */
        start local 4 // int mStart
        17: .line 231
            iconst_0
            istore 4 /* mStart */
            goto 21
        18: .line 233
      StackMap locals: int
      StackMap stack:
            aload 2 /* block */
            iload 4 /* mStart */
            baload
            bipush 15
            iand
            bipush 10
            ixor
            ifne 20
        19: .line 235
            goto 22
        20: .line 231
      StackMap locals:
      StackMap stack:
            iinc 4 /* mStart */ 1
      StackMap locals:
      StackMap stack:
        21: iload 4 /* mStart */
            aload 2 /* block */
            arraylength
            if_icmpne 18
        22: .line 239
      StackMap locals:
      StackMap stack:
            iinc 4 /* mStart */ 1
        23: .line 241
            aload 2 /* block */
            arraylength
            iload 3 /* delta */
            isub
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            isub
            istore 5 /* off */
        start local 5 // int off
        24: .line 246
            iload 5 /* off */
            iload 4 /* mStart */
            isub
            ifgt 26
        25: .line 248
            new org.bouncycastle.crypto.InvalidCipherTextException
            dup
            ldc "malformed block"
            invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 254
      StackMap locals: int
      StackMap stack:
            aload 2 /* block */
            iconst_0
            baload
            bipush 32
            iand
            ifne 31
        27: .line 256
            aload 0 /* this */
            iconst_1
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.fullMessage:Z
        28: .line 258
            aload 0 /* this */
            iload 5 /* off */
            iload 4 /* mStart */
            isub
            newarray 8
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
        29: .line 259
            aload 2 /* block */
            iload 4 /* mStart */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        30: .line 260
            goto 34
        31: .line 263
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.fullMessage:Z
        32: .line 265
            aload 0 /* this */
            iload 5 /* off */
            iload 4 /* mStart */
            isub
            newarray 8
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
        33: .line 266
            aload 2 /* block */
            iload 4 /* mStart */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        34: .line 269
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* signature */
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preSig:[B
        35: .line 270
            aload 0 /* this */
            aload 2 /* block */
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preBlock:[B
        36: .line 272
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            arraylength
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
        37: .line 273
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            arraylength
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
        38: .line 274
            return
        end local 5 // int off
        end local 4 // int mStart
        end local 3 // int delta
        end local 2 // byte[] block
        end local 1 // byte[] signature
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   39     0        this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0   39     1   signature  [B
            1   39     2       block  [B
            6   39     3       delta  I
           10   16     4    sigTrail  I
           11   16     5  trailerObj  Ljava/lang/Integer;
           17   39     4      mStart  I
           24   39     5         off  I
    Exceptions:
      throws org.bouncycastle.crypto.InvalidCipherTextException
    MethodParameters:
           Name  Flags
      signature  

  public void update(byte);
    descriptor: (B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
        start local 1 // byte b
         0: .line 282
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            iload 1 /* b */
            invokeinterface org.bouncycastle.crypto.Digest.update:(B)V
         1: .line 284
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preSig:[B
            ifnonnull 3
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            arraylength
            if_icmpge 3
         2: .line 286
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            iload 1 /* b */
            bastore
         3: .line 289
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            iconst_1
            iadd
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
         4: .line 290
            return
        end local 1 // byte b
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0    5     1     b  B
    MethodParameters:
      Name  Flags
      b     

  public void update(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
        start local 1 // byte[] in
        start local 2 // int off
        start local 3 // int len
         0: .line 300
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            aload 1 /* in */
            iload 2 /* off */
            iload 3 /* len */
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
         1: .line 302
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preSig:[B
            ifnonnull 7
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            arraylength
            if_icmpge 7
         2: .line 304
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 6
         4: .line 306
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            iload 4 /* i */
            iadd
            aload 1 /* in */
            iload 2 /* off */
            iload 4 /* i */
            iadd
            baload
            bastore
         5: .line 304
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 4 /* i */
            iload 3 /* len */
            if_icmpge 7
            iload 4 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            iadd
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            arraylength
            if_icmplt 4
        end local 4 // int i
         7: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            iload 3 /* len */
            iadd
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
         8: .line 311
            return
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0    9     1    in  [B
            0    9     2   off  I
            0    9     3   len  I
            3    7     4     i  I
    MethodParameters:
      Name  Flags
      in    
      off   
      len   

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
         0: .line 318
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.reset:()V
         1: .line 319
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
         2: .line 320
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.clearBlock:([B)V
         3: .line 322
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            ifnull 5
         4: .line 324
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.clearBlock:([B)V
         5: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
         6: .line 328
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.fullMessage:Z
         7: .line 329
            return
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;

  public byte[] generateSignature();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
         0: .line 338
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            istore 1 /* digSize */
        start local 1 // int digSize
         1: .line 340
            iconst_0
            istore 2 /* t */
        start local 2 // int t
         2: .line 341
            iconst_0
            istore 3 /* delta */
        start local 3 // int delta
         3: .line 343
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.trailer:I
            sipush 188
            if_icmpne 9
         4: .line 345
            bipush 8
            istore 2 /* t */
         5: .line 346
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            arraylength
            iload 1 /* digSize */
            isub
            iconst_1
            isub
            istore 3 /* delta */
         6: .line 347
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iload 3 /* delta */
            invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
            pop
         7: .line 348
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            arraylength
            iconst_1
            isub
            bipush -68
            bastore
         8: .line 349
            goto 14
         9: .line 352
      StackMap locals: int int int
      StackMap stack:
            bipush 16
            istore 2 /* t */
        10: .line 353
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            arraylength
            iload 1 /* digSize */
            isub
            iconst_2
            isub
            istore 3 /* delta */
        11: .line 354
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iload 3 /* delta */
            invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
            pop
        12: .line 355
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            arraylength
            iconst_2
            isub
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.trailer:I
            bipush 8
            iushr
            i2b
            bastore
        13: .line 356
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            arraylength
            iconst_1
            isub
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.trailer:I
            i2b
            bastore
        14: .line 359
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* header */
        start local 4 // byte header
        15: .line 360
            iload 1 /* digSize */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            iadd
            bipush 8
            imul
            iload 2 /* t */
            iadd
            iconst_4
            iadd
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.keyBits:I
            isub
            istore 5 /* x */
        start local 5 // int x
        16: .line 362
            iload 5 /* x */
            ifle 22
        17: .line 364
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            iload 5 /* x */
            bipush 7
            iadd
            bipush 8
            idiv
            isub
            istore 6 /* mR */
        start local 6 // int mR
        18: .line 365
            bipush 96
            istore 4 /* header */
        19: .line 367
            iload 3 /* delta */
            iload 6 /* mR */
            isub
            istore 3 /* delta */
        20: .line 369
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iload 3 /* delta */
            iload 6 /* mR */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 6 // int mR
        21: .line 370
            goto 25
        22: .line 373
      StackMap locals: int int
      StackMap stack:
            bipush 64
            istore 4 /* header */
        23: .line 374
            iload 3 /* delta */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            isub
            istore 3 /* delta */
        24: .line 376
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iload 3 /* delta */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        25: .line 379
      StackMap locals:
      StackMap stack:
            iload 3 /* delta */
            iconst_1
            isub
            ifle 35
        26: .line 381
            iload 3 /* delta */
            iconst_1
            isub
            istore 6 /* i */
        start local 6 // int i
        27: goto 30
        28: .line 383
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iload 6 /* i */
            bipush -69
            bastore
        29: .line 381
            iinc 6 /* i */ -1
      StackMap locals:
      StackMap stack:
        30: iload 6 /* i */
            ifne 28
        end local 6 // int i
        31: .line 385
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iload 3 /* delta */
            iconst_1
            isub
            dup2
            baload
            iconst_1
            ixor
            i2b
            bastore
        32: .line 386
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iconst_0
            bipush 11
            bastore
        33: .line 387
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iconst_0
            dup2
            baload
            iload 4 /* header */
            ior
            i2b
            bastore
        34: .line 388
            goto 37
        35: .line 391
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iconst_0
            bipush 10
            bastore
        36: .line 392
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iconst_0
            dup2
            baload
            iload 4 /* header */
            ior
            i2b
            bastore
        37: .line 395
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            arraylength
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
            astore 6 /* b */
        start local 6 // byte[] b
        38: .line 397
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.clearBlock:([B)V
        39: .line 398
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.block:[B
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.clearBlock:([B)V
        40: .line 400
            aload 6 /* b */
            areturn
        end local 6 // byte[] b
        end local 5 // int x
        end local 4 // byte header
        end local 3 // int delta
        end local 2 // int t
        end local 1 // int digSize
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   41     0     this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            1   41     1  digSize  I
            2   41     2        t  I
            3   41     3    delta  I
           15   41     4   header  B
           16   41     5        x  I
           18   21     6       mR  I
           27   31     6        i  I
           38   41     6        b  [B
    Exceptions:
      throws org.bouncycastle.crypto.CryptoException

  public boolean verifySignature(byte[]);
    descriptor: ([B)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
        start local 1 // byte[] signature
         0: .line 410
            aconst_null
            astore 2 /* block */
        start local 2 // byte[] block
         1: .line 413
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preSig:[B
            ifnonnull 7
         2: .line 415
            iconst_0
            istore 3 /* updateWithRecoveredCalled */
        start local 3 // boolean updateWithRecoveredCalled
         3: .line 418
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            aload 1 /* signature */
            iconst_0
            aload 1 /* signature */
            arraylength
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
            astore 2 /* block */
         4: .line 419
            goto 13
         5: .line 420
      StackMap locals: org.bouncycastle.crypto.signers.ISO9796d2Signer byte[] byte[] int
      StackMap stack: java.lang.Exception
            pop
         6: .line 422
            iconst_0
            ireturn
        end local 3 // boolean updateWithRecoveredCalled
         7: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preSig:[B
            aload 1 /* signature */
            invokestatic org.bouncycastle.util.Arrays.areEqual:([B[B)Z
            ifne 9
         8: .line 429
            new java.lang.IllegalStateException
            dup
            ldc "updateWithRecoveredMessage called on different signature"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 432
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 3 /* updateWithRecoveredCalled */
        start local 3 // boolean updateWithRecoveredCalled
        10: .line 433
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preBlock:[B
            astore 2 /* block */
        11: .line 435
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preSig:[B
        12: .line 436
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.preBlock:[B
        13: .line 439
      StackMap locals: int
      StackMap stack:
            aload 2 /* block */
            iconst_0
            baload
            sipush 192
            iand
            bipush 64
            ixor
            ifeq 15
        14: .line 441
            aload 0 /* this */
            aload 2 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.returnFalse:([B)Z
            ireturn
        15: .line 444
      StackMap locals:
      StackMap stack:
            aload 2 /* block */
            aload 2 /* block */
            arraylength
            iconst_1
            isub
            baload
            bipush 15
            iand
            bipush 12
            ixor
            ifeq 17
        16: .line 446
            aload 0 /* this */
            aload 2 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.returnFalse:([B)Z
            ireturn
        17: .line 449
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* delta */
        start local 4 // int delta
        18: .line 451
            aload 2 /* block */
            aload 2 /* block */
            arraylength
            iconst_1
            isub
            baload
            sipush 255
            iand
            sipush 188
            ixor
            ifne 21
        19: .line 453
            iconst_1
            istore 4 /* delta */
        20: .line 454
            goto 28
        21: .line 457
      StackMap locals: int
      StackMap stack:
            aload 2 /* block */
            aload 2 /* block */
            arraylength
            iconst_2
            isub
            baload
            sipush 255
            iand
            bipush 8
            ishl
            aload 2 /* block */
            aload 2 /* block */
            arraylength
            iconst_1
            isub
            baload
            sipush 255
            iand
            ior
            istore 5 /* sigTrail */
        start local 5 // int sigTrail
        22: .line 458
            getstatic org.bouncycastle.crypto.signers.ISO9796d2Signer.trailerMap:Ljava/util/Hashtable;
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getAlgorithmName:()Ljava/lang/String;
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 6 /* trailerObj */
        start local 6 // java.lang.Integer trailerObj
        23: .line 460
            aload 6 /* trailerObj */
            ifnull 26
        24: .line 462
            iload 5 /* sigTrail */
            aload 6 /* trailerObj */
            invokevirtual java.lang.Integer.intValue:()I
            if_icmpeq 27
        25: .line 464
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "signer initialised with wrong digest for trailer "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* sigTrail */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 469
      StackMap locals: int java.lang.Integer
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "unrecognised hash in signature"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 472
      StackMap locals:
      StackMap stack:
            iconst_2
            istore 4 /* delta */
        end local 6 // java.lang.Integer trailerObj
        end local 5 // int sigTrail
        28: .line 478
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* mStart */
        start local 5 // int mStart
        29: .line 480
            iconst_0
            istore 5 /* mStart */
            goto 33
        30: .line 482
      StackMap locals: int
      StackMap stack:
            aload 2 /* block */
            iload 5 /* mStart */
            baload
            bipush 15
            iand
            bipush 10
            ixor
            ifne 32
        31: .line 484
            goto 34
        32: .line 480
      StackMap locals:
      StackMap stack:
            iinc 5 /* mStart */ 1
      StackMap locals:
      StackMap stack:
        33: iload 5 /* mStart */
            aload 2 /* block */
            arraylength
            if_icmpne 30
        34: .line 488
      StackMap locals:
      StackMap stack:
            iinc 5 /* mStart */ 1
        35: .line 493
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            newarray 8
            astore 6 /* hash */
        start local 6 // byte[] hash
        36: .line 495
            aload 2 /* block */
            arraylength
            iload 4 /* delta */
            isub
            aload 6 /* hash */
            arraylength
            isub
            istore 7 /* off */
        start local 7 // int off
        37: .line 500
            iload 7 /* off */
            iload 5 /* mStart */
            isub
            ifgt 39
        38: .line 502
            aload 0 /* this */
            aload 2 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.returnFalse:([B)Z
            ireturn
        39: .line 508
      StackMap locals: byte[] int
      StackMap stack:
            aload 2 /* block */
            iconst_0
            baload
            bipush 32
            iand
            ifne 59
        40: .line 510
            aload 0 /* this */
            iconst_1
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.fullMessage:Z
        41: .line 513
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            iload 7 /* off */
            iload 5 /* mStart */
            isub
            if_icmple 43
        42: .line 515
            aload 0 /* this */
            aload 2 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.returnFalse:([B)Z
            ireturn
        43: .line 518
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.reset:()V
        44: .line 519
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            aload 2 /* block */
            iload 5 /* mStart */
            iload 7 /* off */
            iload 5 /* mStart */
            isub
            invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
        45: .line 520
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            aload 6 /* hash */
            iconst_0
            invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
            pop
        46: .line 522
            iconst_1
            istore 8 /* isOkay */
        start local 8 // boolean isOkay
        47: .line 524
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        48: goto 53
        49: .line 526
      StackMap locals: int int
      StackMap stack:
            aload 2 /* block */
            iload 7 /* off */
            iload 9 /* i */
            iadd
            dup2
            baload
            aload 6 /* hash */
            iload 9 /* i */
            baload
            ixor
            i2b
            bastore
        50: .line 527
            aload 2 /* block */
            iload 7 /* off */
            iload 9 /* i */
            iadd
            baload
            ifeq 52
        51: .line 529
            iconst_0
            istore 8 /* isOkay */
        52: .line 524
      StackMap locals:
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        53: iload 9 /* i */
            aload 6 /* hash */
            arraylength
            if_icmpne 49
        end local 9 // int i
        54: .line 533
            iload 8 /* isOkay */
            ifne 56
        55: .line 535
            aload 0 /* this */
            aload 2 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.returnFalse:([B)Z
            ireturn
        56: .line 538
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 7 /* off */
            iload 5 /* mStart */
            isub
            newarray 8
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
        57: .line 539
            aload 2 /* block */
            iload 5 /* mStart */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 8 // boolean isOkay
        58: .line 540
            goto 73
        59: .line 543
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.fullMessage:Z
        60: .line 545
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.digest:Lorg/bouncycastle/crypto/Digest;
            aload 6 /* hash */
            iconst_0
            invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
            pop
        61: .line 547
            iconst_1
            istore 8 /* isOkay */
        start local 8 // boolean isOkay
        62: .line 549
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        63: goto 68
        64: .line 551
      StackMap locals: int int
      StackMap stack:
            aload 2 /* block */
            iload 7 /* off */
            iload 9 /* i */
            iadd
            dup2
            baload
            aload 6 /* hash */
            iload 9 /* i */
            baload
            ixor
            i2b
            bastore
        65: .line 552
            aload 2 /* block */
            iload 7 /* off */
            iload 9 /* i */
            iadd
            baload
            ifeq 67
        66: .line 554
            iconst_0
            istore 8 /* isOkay */
        67: .line 549
      StackMap locals:
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        68: iload 9 /* i */
            aload 6 /* hash */
            arraylength
            if_icmpne 64
        end local 9 // int i
        69: .line 558
            iload 8 /* isOkay */
            ifne 71
        70: .line 560
            aload 0 /* this */
            aload 2 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.returnFalse:([B)Z
            ireturn
        71: .line 563
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 7 /* off */
            iload 5 /* mStart */
            isub
            newarray 8
            putfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
        72: .line 564
            aload 2 /* block */
            iload 5 /* mStart */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            iconst_0
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 8 // boolean isOkay
        73: .line 571
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.messageLength:I
            ifeq 76
            iload 3 /* updateWithRecoveredCalled */
            ifne 76
        74: .line 573
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.isSameAs:([B[B)Z
            ifne 76
        75: .line 575
            aload 0 /* this */
            aload 2 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.returnFalse:([B)Z
            ireturn
        76: .line 579
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.clearBlock:([B)V
        77: .line 580
            aload 0 /* this */
            aload 2 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.clearBlock:([B)V
        78: .line 582
            iconst_1
            ireturn
        end local 7 // int off
        end local 6 // byte[] hash
        end local 5 // int mStart
        end local 4 // int delta
        end local 3 // boolean updateWithRecoveredCalled
        end local 2 // byte[] block
        end local 1 // byte[] signature
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   79     0                       this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0   79     1                  signature  [B
            1   79     2                      block  [B
            3    7     3  updateWithRecoveredCalled  Z
           10   79     3  updateWithRecoveredCalled  Z
           18   79     4                      delta  I
           22   28     5                   sigTrail  I
           23   28     6                 trailerObj  Ljava/lang/Integer;
           29   79     5                     mStart  I
           36   79     6                       hash  [B
           37   79     7                        off  I
           47   58     8                     isOkay  Z
           48   54     9                          i  I
           62   73     8                     isOkay  Z
           63   69     9                          i  I
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.Exception
    MethodParameters:
           Name  Flags
      signature  

  private boolean returnFalse(byte[]);
    descriptor: ([B)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
        start local 1 // byte[] block
         0: .line 587
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.mBuf:[B
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.clearBlock:([B)V
         1: .line 588
            aload 0 /* this */
            aload 1 /* block */
            invokevirtual org.bouncycastle.crypto.signers.ISO9796d2Signer.clearBlock:([B)V
         2: .line 590
            iconst_0
            ireturn
        end local 1 // byte[] block
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
            0    3     1  block  [B
    MethodParameters:
       Name  Flags
      block  

  public boolean hasFullMessage();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
         0: .line 601
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.fullMessage:Z
            ireturn
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;

  public byte[] getRecoveredMessage();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
         0: .line 612
            aload 0 /* this */
            getfield org.bouncycastle.crypto.signers.ISO9796d2Signer.recoveredMessage:[B
            areturn
        end local 0 // org.bouncycastle.crypto.signers.ISO9796d2Signer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/signers/ISO9796d2Signer;
}
SourceFile: "ISO9796d2Signer.java"