public class org.bouncycastle.crypto.engines.ElGamalEngine implements org.bouncycastle.crypto.AsymmetricBlockCipher
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.crypto.engines.ElGamalEngine
  super_class: java.lang.Object
{
  private org.bouncycastle.crypto.params.ElGamalKeyParameters key;
    descriptor: Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
    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

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

  private static final java.math.BigInteger ZERO;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.math.BigInteger ONE;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.math.BigInteger TWO;
    descriptor: Ljava/math/BigInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 26
            lconst_0
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic org.bouncycastle.crypto.engines.ElGamalEngine.ZERO:Ljava/math/BigInteger;
         1: .line 27
            lconst_1
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic org.bouncycastle.crypto.engines.ElGamalEngine.ONE:Ljava/math/BigInteger;
         2: .line 28
            ldc 2
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            putstatic org.bouncycastle.crypto.engines.ElGamalEngine.TWO:Ljava/math/BigInteger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
         0: .line 18
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/crypto/engines/ElGamalEngine;

  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.engines.ElGamalEngine this
        start local 1 // boolean forEncryption
        start local 2 // org.bouncycastle.crypto.CipherParameters param
         0: .line 40
            aload 2 /* param */
            instanceof org.bouncycastle.crypto.params.ParametersWithRandom
            ifeq 5
         1: .line 42
            aload 2 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithRandom
            astore 3 /* p */
        start local 3 // org.bouncycastle.crypto.params.ParametersWithRandom p
         2: .line 44
            aload 0 /* this */
            aload 3 /* p */
            invokevirtual org.bouncycastle.crypto.params.ParametersWithRandom.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
            checkcast org.bouncycastle.crypto.params.ElGamalKeyParameters
            putfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
         3: .line 45
            aload 0 /* this */
            aload 3 /* p */
            invokevirtual org.bouncycastle.crypto.params.ParametersWithRandom.getRandom:()Ljava/security/SecureRandom;
            putfield org.bouncycastle.crypto.engines.ElGamalEngine.random:Ljava/security/SecureRandom;
        end local 3 // org.bouncycastle.crypto.params.ParametersWithRandom p
         4: .line 46
            goto 7
         5: .line 49
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* param */
            checkcast org.bouncycastle.crypto.params.ElGamalKeyParameters
            putfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
         6: .line 50
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield org.bouncycastle.crypto.engines.ElGamalEngine.random:Ljava/security/SecureRandom;
         7: .line 53
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* forEncryption */
            putfield org.bouncycastle.crypto.engines.ElGamalEngine.forEncryption:Z
         8: .line 55
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            invokevirtual org.bouncycastle.crypto.params.ElGamalKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/ElGamalParameters;
            invokevirtual org.bouncycastle.crypto.params.ElGamalParameters.getP:()Ljava/math/BigInteger;
            astore 3 /* p */
        start local 3 // java.math.BigInteger p
         9: .line 57
            aload 0 /* this */
            aload 3 /* p */
            invokevirtual java.math.BigInteger.bitLength:()I
            putfield org.bouncycastle.crypto.engines.ElGamalEngine.bitSize:I
        10: .line 59
            iload 1 /* forEncryption */
            ifeq 13
        11: .line 61
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            instanceof org.bouncycastle.crypto.params.ElGamalPublicKeyParameters
            ifne 15
        12: .line 63
            new java.lang.IllegalArgumentException
            dup
            ldc "ElGamalPublicKeyParameters are required for encryption."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 68
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            instanceof org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters
            ifne 15
        14: .line 70
            new java.lang.IllegalArgumentException
            dup
            ldc "ElGamalPrivateKeyParameters are required for decryption."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 73
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.math.BigInteger p
        end local 2 // org.bouncycastle.crypto.CipherParameters param
        end local 1 // boolean forEncryption
        end local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0           this  Lorg/bouncycastle/crypto/engines/ElGamalEngine;
            0   16     1  forEncryption  Z
            0   16     2          param  Lorg/bouncycastle/crypto/CipherParameters;
            2    4     3              p  Lorg/bouncycastle/crypto/params/ParametersWithRandom;
            9   16     3              p  Ljava/math/BigInteger;
    MethodParameters:
               Name  Flags
      forEncryption  
      param          

  public int getInputBlockSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
         0: .line 84
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.forEncryption:Z
            ifeq 2
         1: .line 86
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.bitSize:I
            iconst_1
            isub
            bipush 8
            idiv
            ireturn
         2: .line 89
      StackMap locals:
      StackMap stack:
            iconst_2
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.bitSize:I
            bipush 7
            iadd
            bipush 8
            idiv
            imul
            ireturn
        end local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bouncycastle/crypto/engines/ElGamalEngine;

  public int getOutputBlockSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
         0: .line 101
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.forEncryption:Z
            ifeq 2
         1: .line 103
            iconst_2
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.bitSize:I
            bipush 7
            iadd
            bipush 8
            idiv
            imul
            ireturn
         2: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.bitSize:I
            iconst_1
            isub
            bipush 8
            idiv
            ireturn
        end local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bouncycastle/crypto/engines/ElGamalEngine;

  public byte[] processBlock(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=17, args_size=4
        start local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
        start local 1 // byte[] in
        start local 2 // int inOff
        start local 3 // int inLen
         0: .line 123
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            ifnonnull 2
         1: .line 125
            new java.lang.IllegalStateException
            dup
            ldc "ElGamal engine not initialised"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.forEncryption:Z
            ifeq 4
         3: .line 129
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.bitSize:I
            iconst_1
            isub
            bipush 7
            iadd
            bipush 8
            idiv
            goto 5
         4: .line 130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.engines.ElGamalEngine.getInputBlockSize:()I
         5: .line 128
      StackMap locals:
      StackMap stack: int
            istore 4 /* maxLength */
        start local 4 // int maxLength
         6: .line 132
            iload 3 /* inLen */
            iload 4 /* maxLength */
            if_icmple 8
         7: .line 134
            new org.bouncycastle.crypto.DataLengthException
            dup
            ldc "input too large for ElGamal cipher.\n"
            invokespecial org.bouncycastle.crypto.DataLengthException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 137
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            invokevirtual org.bouncycastle.crypto.params.ElGamalKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/ElGamalParameters;
            invokevirtual org.bouncycastle.crypto.params.ElGamalParameters.getP:()Ljava/math/BigInteger;
            astore 5 /* p */
        start local 5 // java.math.BigInteger p
         9: .line 139
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            instanceof org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters
            ifeq 19
        10: .line 141
            iload 3 /* inLen */
            iconst_2
            idiv
            newarray 8
            astore 6 /* in1 */
        start local 6 // byte[] in1
        11: .line 142
            iload 3 /* inLen */
            iconst_2
            idiv
            newarray 8
            astore 7 /* in2 */
        start local 7 // byte[] in2
        12: .line 144
            aload 1 /* in */
            iload 2 /* inOff */
            aload 6 /* in1 */
            iconst_0
            aload 6 /* in1 */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 145
            aload 1 /* in */
            iload 2 /* inOff */
            aload 6 /* in1 */
            arraylength
            iadd
            aload 7 /* in2 */
            iconst_0
            aload 7 /* in2 */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        14: .line 147
            new java.math.BigInteger
            dup
            iconst_1
            aload 6 /* in1 */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            astore 8 /* gamma */
        start local 8 // java.math.BigInteger gamma
        15: .line 148
            new java.math.BigInteger
            dup
            iconst_1
            aload 7 /* in2 */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            astore 9 /* phi */
        start local 9 // java.math.BigInteger phi
        16: .line 150
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            checkcast org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters
            astore 10 /* priv */
        start local 10 // org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters priv
        17: .line 153
            aload 8 /* gamma */
            aload 5 /* p */
            getstatic org.bouncycastle.crypto.engines.ElGamalEngine.ONE:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 10 /* priv */
            invokevirtual org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters.getX:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 5 /* p */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 9 /* phi */
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 5 /* p */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 11 /* m */
        start local 11 // java.math.BigInteger m
        18: .line 155
            aload 11 /* m */
            invokestatic org.bouncycastle.util.BigIntegers.asUnsignedByteArray:(Ljava/math/BigInteger;)[B
            areturn
        end local 11 // java.math.BigInteger m
        end local 10 // org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters priv
        end local 9 // java.math.BigInteger phi
        end local 8 // java.math.BigInteger gamma
        end local 7 // byte[] in2
        end local 6 // byte[] in1
        19: .line 160
      StackMap locals: java.math.BigInteger
      StackMap stack:
            iload 2 /* inOff */
            ifne 20
            iload 3 /* inLen */
            aload 1 /* in */
            arraylength
            if_icmpeq 23
        20: .line 162
      StackMap locals:
      StackMap stack:
            iload 3 /* inLen */
            newarray 8
            astore 6 /* block */
        start local 6 // byte[] block
        21: .line 164
            aload 1 /* in */
            iload 2 /* inOff */
            aload 6 /* block */
            iconst_0
            iload 3 /* inLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        22: .line 165
            goto 24
        end local 6 // byte[] block
        23: .line 168
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            astore 6 /* block */
        start local 6 // byte[] block
        24: .line 171
      StackMap locals: byte[]
      StackMap stack:
            new java.math.BigInteger
            dup
            iconst_1
            aload 6 /* block */
            invokespecial java.math.BigInteger.<init>:(I[B)V
            astore 7 /* input */
        start local 7 // java.math.BigInteger input
        25: .line 173
            aload 7 /* input */
            invokevirtual java.math.BigInteger.bitLength:()I
            aload 5 /* p */
            invokevirtual java.math.BigInteger.bitLength:()I
            if_icmplt 27
        26: .line 175
            new org.bouncycastle.crypto.DataLengthException
            dup
            ldc "input too large for ElGamal cipher.\n"
            invokespecial org.bouncycastle.crypto.DataLengthException.<init>:(Ljava/lang/String;)V
            athrow
        27: .line 178
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            checkcast org.bouncycastle.crypto.params.ElGamalPublicKeyParameters
            astore 8 /* pub */
        start local 8 // org.bouncycastle.crypto.params.ElGamalPublicKeyParameters pub
        28: .line 180
            aload 5 /* p */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 9 /* pBitLength */
        start local 9 // int pBitLength
        29: .line 181
            new java.math.BigInteger
            dup
            iload 9 /* pBitLength */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.random:Ljava/security/SecureRandom;
            invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
            astore 10 /* k */
        start local 10 // java.math.BigInteger k
        30: .line 183
            goto 32
        31: .line 185
      StackMap locals: org.bouncycastle.crypto.params.ElGamalPublicKeyParameters int java.math.BigInteger
      StackMap stack:
            new java.math.BigInteger
            dup
            iload 9 /* pBitLength */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.random:Ljava/security/SecureRandom;
            invokespecial java.math.BigInteger.<init>:(ILjava/util/Random;)V
            astore 10 /* k */
        32: .line 183
      StackMap locals:
      StackMap stack:
            aload 10 /* k */
            getstatic org.bouncycastle.crypto.engines.ElGamalEngine.ZERO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifne 31
            aload 10 /* k */
            aload 5 /* p */
            getstatic org.bouncycastle.crypto.engines.ElGamalEngine.TWO:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            ifgt 31
        33: .line 188
            aload 0 /* this */
            getfield org.bouncycastle.crypto.engines.ElGamalEngine.key:Lorg/bouncycastle/crypto/params/ElGamalKeyParameters;
            invokevirtual org.bouncycastle.crypto.params.ElGamalKeyParameters.getParameters:()Lorg/bouncycastle/crypto/params/ElGamalParameters;
            invokevirtual org.bouncycastle.crypto.params.ElGamalParameters.getG:()Ljava/math/BigInteger;
            astore 11 /* g */
        start local 11 // java.math.BigInteger g
        34: .line 189
            aload 11 /* g */
            aload 10 /* k */
            aload 5 /* p */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 12 /* gamma */
        start local 12 // java.math.BigInteger gamma
        35: .line 190
            aload 7 /* input */
            aload 8 /* pub */
            invokevirtual org.bouncycastle.crypto.params.ElGamalPublicKeyParameters.getY:()Ljava/math/BigInteger;
            aload 10 /* k */
            aload 5 /* p */
            invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            aload 5 /* p */
            invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 13 /* phi */
        start local 13 // java.math.BigInteger phi
        36: .line 192
            aload 12 /* gamma */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 14 /* out1 */
        start local 14 // byte[] out1
        37: .line 193
            aload 13 /* phi */
            invokevirtual java.math.BigInteger.toByteArray:()[B
            astore 15 /* out2 */
        start local 15 // byte[] out2
        38: .line 194
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.engines.ElGamalEngine.getOutputBlockSize:()I
            newarray 8
            astore 16 /* output */
        start local 16 // byte[] output
        39: .line 196
            aload 14 /* out1 */
            arraylength
            aload 16 /* output */
            arraylength
            iconst_2
            idiv
            if_icmple 42
        40: .line 198
            aload 14 /* out1 */
            iconst_1
            aload 16 /* output */
            aload 16 /* output */
            arraylength
            iconst_2
            idiv
            aload 14 /* out1 */
            arraylength
            iconst_1
            isub
            isub
            aload 14 /* out1 */
            arraylength
            iconst_1
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        41: .line 199
            goto 43
        42: .line 202
      StackMap locals: org.bouncycastle.crypto.engines.ElGamalEngine byte[] int int int java.math.BigInteger byte[] java.math.BigInteger org.bouncycastle.crypto.params.ElGamalPublicKeyParameters int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger byte[] byte[] byte[]
      StackMap stack:
            aload 14 /* out1 */
            iconst_0
            aload 16 /* output */
            aload 16 /* output */
            arraylength
            iconst_2
            idiv
            aload 14 /* out1 */
            arraylength
            isub
            aload 14 /* out1 */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        43: .line 205
      StackMap locals:
      StackMap stack:
            aload 15 /* out2 */
            arraylength
            aload 16 /* output */
            arraylength
            iconst_2
            idiv
            if_icmple 46
        44: .line 207
            aload 15 /* out2 */
            iconst_1
            aload 16 /* output */
            aload 16 /* output */
            arraylength
            aload 15 /* out2 */
            arraylength
            iconst_1
            isub
            isub
            aload 15 /* out2 */
            arraylength
            iconst_1
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        45: .line 208
            goto 47
        46: .line 211
      StackMap locals:
      StackMap stack:
            aload 15 /* out2 */
            iconst_0
            aload 16 /* output */
            aload 16 /* output */
            arraylength
            aload 15 /* out2 */
            arraylength
            isub
            aload 15 /* out2 */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        47: .line 214
      StackMap locals:
      StackMap stack:
            aload 16 /* output */
            areturn
        end local 16 // byte[] output
        end local 15 // byte[] out2
        end local 14 // byte[] out1
        end local 13 // java.math.BigInteger phi
        end local 12 // java.math.BigInteger gamma
        end local 11 // java.math.BigInteger g
        end local 10 // java.math.BigInteger k
        end local 9 // int pBitLength
        end local 8 // org.bouncycastle.crypto.params.ElGamalPublicKeyParameters pub
        end local 7 // java.math.BigInteger input
        end local 6 // byte[] block
        end local 5 // java.math.BigInteger p
        end local 4 // int maxLength
        end local 3 // int inLen
        end local 2 // int inOff
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.engines.ElGamalEngine this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   48     0        this  Lorg/bouncycastle/crypto/engines/ElGamalEngine;
            0   48     1          in  [B
            0   48     2       inOff  I
            0   48     3       inLen  I
            6   48     4   maxLength  I
            9   48     5           p  Ljava/math/BigInteger;
           11   19     6         in1  [B
           12   19     7         in2  [B
           15   19     8       gamma  Ljava/math/BigInteger;
           16   19     9         phi  Ljava/math/BigInteger;
           17   19    10        priv  Lorg/bouncycastle/crypto/params/ElGamalPrivateKeyParameters;
           18   19    11           m  Ljava/math/BigInteger;
           21   23     6       block  [B
           24   48     6       block  [B
           25   48     7       input  Ljava/math/BigInteger;
           28   48     8         pub  Lorg/bouncycastle/crypto/params/ElGamalPublicKeyParameters;
           29   48     9  pBitLength  I
           30   48    10           k  Ljava/math/BigInteger;
           34   48    11           g  Ljava/math/BigInteger;
           35   48    12       gamma  Ljava/math/BigInteger;
           36   48    13         phi  Ljava/math/BigInteger;
           37   48    14        out1  [B
           38   48    15        out2  [B
           39   48    16      output  [B
    MethodParameters:
       Name  Flags
      in     
      inOff  
      inLen  
}
SourceFile: "ElGamalEngine.java"