class org.bouncycastle.math.ec.WNafMultiplier implements org.bouncycastle.math.ec.ECMultiplier
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.bouncycastle.math.ec.WNafMultiplier
super_class: java.lang.Object
{
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 // org.bouncycastle.math.ec.WNafMultiplier this
0: .line 9
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.bouncycastle.math.ec.WNafMultiplier this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/math/ec/WNafMultiplier;
public byte[] windowNaf(byte, java.math.BigInteger);
descriptor: (BLjava/math/BigInteger;)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=3
start local 0 // org.bouncycastle.math.ec.WNafMultiplier this
start local 1 // byte width
start local 2 // java.math.BigInteger k
0: .line 31
aload 2 /* k */
invokevirtual java.math.BigInteger.bitLength:()I
iconst_1
iadd
newarray 8
astore 3 /* wnaf */
start local 3 // byte[] wnaf
1: .line 34
iconst_1
iload 1 /* width */
ishl
i2s
istore 4 /* pow2wB */
start local 4 // short pow2wB
2: .line 35
iload 4 /* pow2wB */
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
astore 5 /* pow2wBI */
start local 5 // java.math.BigInteger pow2wBI
3: .line 37
iconst_0
istore 6 /* i */
start local 6 // int i
4: .line 40
iconst_0
istore 7 /* length */
start local 7 // int length
5: .line 43
goto 18
6: .line 46
StackMap locals: org.bouncycastle.math.ec.WNafMultiplier int java.math.BigInteger byte[] int java.math.BigInteger int int
StackMap stack:
aload 2 /* k */
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 15
7: .line 49
aload 2 /* k */
aload 5 /* pow2wBI */
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 8 /* remainder */
start local 8 // java.math.BigInteger remainder
8: .line 52
aload 8 /* remainder */
iload 1 /* width */
iconst_1
isub
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 11
9: .line 54
aload 3 /* wnaf */
iload 6 /* i */
aload 8 /* remainder */
invokevirtual java.math.BigInteger.intValue:()I
iload 4 /* pow2wB */
isub
i2b
bastore
10: .line 55
goto 12
11: .line 58
StackMap locals: java.math.BigInteger
StackMap stack:
aload 3 /* wnaf */
iload 6 /* i */
aload 8 /* remainder */
invokevirtual java.math.BigInteger.intValue:()I
i2b
bastore
12: .line 62
StackMap locals:
StackMap stack:
aload 2 /* k */
aload 3 /* wnaf */
iload 6 /* i */
baload
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 2 /* k */
13: .line 63
iload 6 /* i */
istore 7 /* length */
end local 8 // java.math.BigInteger remainder
14: .line 64
goto 16
15: .line 67
StackMap locals:
StackMap stack:
aload 3 /* wnaf */
iload 6 /* i */
iconst_0
bastore
16: .line 71
StackMap locals:
StackMap stack:
aload 2 /* k */
iconst_1
invokevirtual java.math.BigInteger.shiftRight:(I)Ljava/math/BigInteger;
astore 2 /* k */
17: .line 72
iinc 6 /* i */ 1
18: .line 43
StackMap locals:
StackMap stack:
aload 2 /* k */
invokevirtual java.math.BigInteger.signum:()I
ifgt 6
19: .line 75
iinc 7 /* length */ 1
20: .line 78
iload 7 /* length */
newarray 8
astore 8 /* wnafShort */
start local 8 // byte[] wnafShort
21: .line 79
aload 3 /* wnaf */
iconst_0
aload 8 /* wnafShort */
iconst_0
iload 7 /* length */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
22: .line 80
aload 8 /* wnafShort */
areturn
end local 8 // byte[] wnafShort
end local 7 // int length
end local 6 // int i
end local 5 // java.math.BigInteger pow2wBI
end local 4 // short pow2wB
end local 3 // byte[] wnaf
end local 2 // java.math.BigInteger k
end local 1 // byte width
end local 0 // org.bouncycastle.math.ec.WNafMultiplier this
LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/bouncycastle/math/ec/WNafMultiplier;
0 23 1 width B
0 23 2 k Ljava/math/BigInteger;
1 23 3 wnaf [B
2 23 4 pow2wB S
3 23 5 pow2wBI Ljava/math/BigInteger;
4 23 6 i I
5 23 7 length I
8 14 8 remainder Ljava/math/BigInteger;
21 23 8 wnafShort [B
MethodParameters:
Name Flags
width
k
public org.bouncycastle.math.ec.ECPoint multiply(org.bouncycastle.math.ec.ECPoint, java.math.BigInteger, org.bouncycastle.math.ec.PreCompInfo);
descriptor: (Lorg/bouncycastle/math/ec/ECPoint;Ljava/math/BigInteger;Lorg/bouncycastle/math/ec/PreCompInfo;)Lorg/bouncycastle/math/ec/ECPoint;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=15, args_size=4
start local 0 // org.bouncycastle.math.ec.WNafMultiplier this
start local 1 // org.bouncycastle.math.ec.ECPoint p
start local 2 // java.math.BigInteger k
start local 3 // org.bouncycastle.math.ec.PreCompInfo preCompInfo
0: .line 94
aload 3 /* preCompInfo */
ifnull 3
aload 3 /* preCompInfo */
instanceof org.bouncycastle.math.ec.WNafPreCompInfo
ifeq 3
1: .line 96
aload 3 /* preCompInfo */
checkcast org.bouncycastle.math.ec.WNafPreCompInfo
astore 4 /* wnafPreCompInfo */
start local 4 // org.bouncycastle.math.ec.WNafPreCompInfo wnafPreCompInfo
2: .line 97
goto 4
end local 4 // org.bouncycastle.math.ec.WNafPreCompInfo wnafPreCompInfo
3: .line 101
StackMap locals:
StackMap stack:
new org.bouncycastle.math.ec.WNafPreCompInfo
dup
invokespecial org.bouncycastle.math.ec.WNafPreCompInfo.<init>:()V
astore 4 /* wnafPreCompInfo */
start local 4 // org.bouncycastle.math.ec.WNafPreCompInfo wnafPreCompInfo
4: .line 105
StackMap locals: org.bouncycastle.math.ec.WNafPreCompInfo
StackMap stack:
aload 2 /* k */
invokevirtual java.math.BigInteger.bitLength:()I
istore 5 /* m */
start local 5 // int m
5: .line 115
iload 5 /* m */
bipush 13
if_icmpge 9
6: .line 117
iconst_2
istore 6 /* width */
start local 6 // byte width
7: .line 118
iconst_1
istore 7 /* reqPreCompLen */
start local 7 // int reqPreCompLen
8: .line 119
goto 31
end local 7 // int reqPreCompLen
end local 6 // byte width
9: .line 122
StackMap locals: int
StackMap stack:
iload 5 /* m */
bipush 41
if_icmpge 13
10: .line 124
iconst_3
istore 6 /* width */
start local 6 // byte width
11: .line 125
iconst_2
istore 7 /* reqPreCompLen */
start local 7 // int reqPreCompLen
12: .line 126
goto 31
end local 7 // int reqPreCompLen
end local 6 // byte width
13: .line 129
StackMap locals:
StackMap stack:
iload 5 /* m */
bipush 121
if_icmpge 17
14: .line 131
iconst_4
istore 6 /* width */
start local 6 // byte width
15: .line 132
iconst_4
istore 7 /* reqPreCompLen */
start local 7 // int reqPreCompLen
16: .line 133
goto 31
end local 7 // int reqPreCompLen
end local 6 // byte width
17: .line 136
StackMap locals:
StackMap stack:
iload 5 /* m */
sipush 337
if_icmpge 21
18: .line 138
iconst_5
istore 6 /* width */
start local 6 // byte width
19: .line 139
bipush 8
istore 7 /* reqPreCompLen */
start local 7 // int reqPreCompLen
20: .line 140
goto 31
end local 7 // int reqPreCompLen
end local 6 // byte width
21: .line 143
StackMap locals:
StackMap stack:
iload 5 /* m */
sipush 897
if_icmpge 25
22: .line 145
bipush 6
istore 6 /* width */
start local 6 // byte width
23: .line 146
bipush 16
istore 7 /* reqPreCompLen */
start local 7 // int reqPreCompLen
24: .line 147
goto 31
end local 7 // int reqPreCompLen
end local 6 // byte width
25: .line 150
StackMap locals:
StackMap stack:
iload 5 /* m */
sipush 2305
if_icmpge 29
26: .line 152
bipush 7
istore 6 /* width */
start local 6 // byte width
27: .line 153
bipush 32
istore 7 /* reqPreCompLen */
start local 7 // int reqPreCompLen
28: .line 154
goto 31
end local 7 // int reqPreCompLen
end local 6 // byte width
29: .line 157
StackMap locals:
StackMap stack:
bipush 8
istore 6 /* width */
start local 6 // byte width
30: .line 158
bipush 127
istore 7 /* reqPreCompLen */
start local 7 // int reqPreCompLen
31: .line 167
StackMap locals: int int
StackMap stack:
iconst_1
istore 8 /* preCompLen */
start local 8 // int preCompLen
32: .line 169
aload 4 /* wnafPreCompInfo */
invokevirtual org.bouncycastle.math.ec.WNafPreCompInfo.getPreComp:()[Lorg/bouncycastle/math/ec/ECPoint;
astore 9 /* preComp */
start local 9 // org.bouncycastle.math.ec.ECPoint[] preComp
33: .line 170
aload 4 /* wnafPreCompInfo */
invokevirtual org.bouncycastle.math.ec.WNafPreCompInfo.getTwiceP:()Lorg/bouncycastle/math/ec/ECPoint;
astore 10 /* twiceP */
start local 10 // org.bouncycastle.math.ec.ECPoint twiceP
34: .line 173
aload 9 /* preComp */
ifnonnull 37
35: .line 177
iconst_1
anewarray org.bouncycastle.math.ec.ECPoint
dup
iconst_0
aload 1 /* p */
aastore
astore 9 /* preComp */
36: .line 178
goto 38
37: .line 182
StackMap locals: int org.bouncycastle.math.ec.ECPoint[] org.bouncycastle.math.ec.ECPoint
StackMap stack:
aload 9 /* preComp */
arraylength
istore 8 /* preCompLen */
38: .line 185
StackMap locals:
StackMap stack:
aload 10 /* twiceP */
ifnonnull 40
39: .line 188
aload 1 /* p */
invokevirtual org.bouncycastle.math.ec.ECPoint.twice:()Lorg/bouncycastle/math/ec/ECPoint;
astore 10 /* twiceP */
40: .line 191
StackMap locals:
StackMap stack:
iload 8 /* preCompLen */
iload 7 /* reqPreCompLen */
if_icmpge 49
41: .line 195
aload 9 /* preComp */
astore 11 /* oldPreComp */
start local 11 // org.bouncycastle.math.ec.ECPoint[] oldPreComp
42: .line 196
iload 7 /* reqPreCompLen */
anewarray org.bouncycastle.math.ec.ECPoint
astore 9 /* preComp */
43: .line 197
aload 11 /* oldPreComp */
iconst_0
aload 9 /* preComp */
iconst_0
iload 8 /* preCompLen */
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
44: .line 199
iload 8 /* preCompLen */
istore 12 /* i */
start local 12 // int i
45: goto 48
46: .line 204
StackMap locals: org.bouncycastle.math.ec.ECPoint[] int
StackMap stack:
aload 9 /* preComp */
iload 12 /* i */
aload 10 /* twiceP */
aload 9 /* preComp */
iload 12 /* i */
iconst_1
isub
aaload
invokevirtual org.bouncycastle.math.ec.ECPoint.add:(Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/ECPoint;
aastore
47: .line 199
iinc 12 /* i */ 1
StackMap locals:
StackMap stack:
48: iload 12 /* i */
iload 7 /* reqPreCompLen */
if_icmplt 46
end local 12 // int i
end local 11 // org.bouncycastle.math.ec.ECPoint[] oldPreComp
49: .line 209
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 6 /* width */
aload 2 /* k */
invokevirtual org.bouncycastle.math.ec.WNafMultiplier.windowNaf:(BLjava/math/BigInteger;)[B
astore 11 /* wnaf */
start local 11 // byte[] wnaf
50: .line 210
aload 11 /* wnaf */
arraylength
istore 12 /* l */
start local 12 // int l
51: .line 213
aload 1 /* p */
invokevirtual org.bouncycastle.math.ec.ECPoint.getCurve:()Lorg/bouncycastle/math/ec/ECCurve;
invokevirtual org.bouncycastle.math.ec.ECCurve.getInfinity:()Lorg/bouncycastle/math/ec/ECPoint;
astore 13 /* q */
start local 13 // org.bouncycastle.math.ec.ECPoint q
52: .line 214
iload 12 /* l */
iconst_1
isub
istore 14 /* i */
start local 14 // int i
53: goto 61
54: .line 216
StackMap locals: org.bouncycastle.math.ec.WNafMultiplier org.bouncycastle.math.ec.ECPoint java.math.BigInteger org.bouncycastle.math.ec.PreCompInfo org.bouncycastle.math.ec.WNafPreCompInfo int int int int org.bouncycastle.math.ec.ECPoint[] org.bouncycastle.math.ec.ECPoint byte[] int org.bouncycastle.math.ec.ECPoint int
StackMap stack:
aload 13 /* q */
invokevirtual org.bouncycastle.math.ec.ECPoint.twice:()Lorg/bouncycastle/math/ec/ECPoint;
astore 13 /* q */
55: .line 218
aload 11 /* wnaf */
iload 14 /* i */
baload
ifeq 60
56: .line 220
aload 11 /* wnaf */
iload 14 /* i */
baload
ifle 59
57: .line 222
aload 13 /* q */
aload 9 /* preComp */
aload 11 /* wnaf */
iload 14 /* i */
baload
iconst_1
isub
iconst_2
idiv
aaload
invokevirtual org.bouncycastle.math.ec.ECPoint.add:(Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/ECPoint;
astore 13 /* q */
58: .line 223
goto 60
59: .line 227
StackMap locals:
StackMap stack:
aload 13 /* q */
aload 9 /* preComp */
aload 11 /* wnaf */
iload 14 /* i */
baload
ineg
iconst_1
isub
iconst_2
idiv
aaload
invokevirtual org.bouncycastle.math.ec.ECPoint.subtract:(Lorg/bouncycastle/math/ec/ECPoint;)Lorg/bouncycastle/math/ec/ECPoint;
astore 13 /* q */
60: .line 214
StackMap locals:
StackMap stack:
iinc 14 /* i */ -1
StackMap locals:
StackMap stack:
61: iload 14 /* i */
ifge 54
end local 14 // int i
62: .line 234
aload 4 /* wnafPreCompInfo */
aload 9 /* preComp */
invokevirtual org.bouncycastle.math.ec.WNafPreCompInfo.setPreComp:([Lorg/bouncycastle/math/ec/ECPoint;)V
63: .line 235
aload 4 /* wnafPreCompInfo */
aload 10 /* twiceP */
invokevirtual org.bouncycastle.math.ec.WNafPreCompInfo.setTwiceP:(Lorg/bouncycastle/math/ec/ECPoint;)V
64: .line 236
aload 1 /* p */
aload 4 /* wnafPreCompInfo */
invokevirtual org.bouncycastle.math.ec.ECPoint.setPreCompInfo:(Lorg/bouncycastle/math/ec/PreCompInfo;)V
65: .line 237
aload 13 /* q */
areturn
end local 13 // org.bouncycastle.math.ec.ECPoint q
end local 12 // int l
end local 11 // byte[] wnaf
end local 10 // org.bouncycastle.math.ec.ECPoint twiceP
end local 9 // org.bouncycastle.math.ec.ECPoint[] preComp
end local 8 // int preCompLen
end local 7 // int reqPreCompLen
end local 6 // byte width
end local 5 // int m
end local 4 // org.bouncycastle.math.ec.WNafPreCompInfo wnafPreCompInfo
end local 3 // org.bouncycastle.math.ec.PreCompInfo preCompInfo
end local 2 // java.math.BigInteger k
end local 1 // org.bouncycastle.math.ec.ECPoint p
end local 0 // org.bouncycastle.math.ec.WNafMultiplier this
LocalVariableTable:
Start End Slot Name Signature
0 66 0 this Lorg/bouncycastle/math/ec/WNafMultiplier;
0 66 1 p Lorg/bouncycastle/math/ec/ECPoint;
0 66 2 k Ljava/math/BigInteger;
0 66 3 preCompInfo Lorg/bouncycastle/math/ec/PreCompInfo;
2 3 4 wnafPreCompInfo Lorg/bouncycastle/math/ec/WNafPreCompInfo;
4 66 4 wnafPreCompInfo Lorg/bouncycastle/math/ec/WNafPreCompInfo;
5 66 5 m I
7 9 6 width B
11 13 6 width B
15 17 6 width B
19 21 6 width B
23 25 6 width B
27 29 6 width B
30 66 6 width B
8 9 7 reqPreCompLen I
12 13 7 reqPreCompLen I
16 17 7 reqPreCompLen I
20 21 7 reqPreCompLen I
24 25 7 reqPreCompLen I
28 29 7 reqPreCompLen I
31 66 7 reqPreCompLen I
32 66 8 preCompLen I
33 66 9 preComp [Lorg/bouncycastle/math/ec/ECPoint;
34 66 10 twiceP Lorg/bouncycastle/math/ec/ECPoint;
42 49 11 oldPreComp [Lorg/bouncycastle/math/ec/ECPoint;
45 49 12 i I
50 66 11 wnaf [B
51 66 12 l I
52 66 13 q Lorg/bouncycastle/math/ec/ECPoint;
53 62 14 i I
MethodParameters:
Name Flags
p
k
preCompInfo
}
SourceFile: "WNafMultiplier.java"