bn.js 4.11.3 → 4.11.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/bn.js CHANGED
@@ -50,13 +50,18 @@
50
50
 
51
51
  var Buffer;
52
52
  try {
53
+ // Obfuscate that we require Buffer, to reduce size
53
54
  Buffer = require('buf' + 'fer').Buffer;
54
55
  } catch (e) {
55
56
  }
56
57
 
57
58
  BN.isBN = function isBN (num) {
59
+ if (num instanceof BN) {
60
+ return true;
61
+ }
62
+
58
63
  return num !== null && typeof num === 'object' &&
59
- num.constructor.name === 'BN' && Array.isArray(num.words);
64
+ num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
60
65
  };
61
66
 
62
67
  BN.max = function max (left, right) {
@@ -1103,478 +1108,478 @@
1103
1108
  /* k = 0 */
1104
1109
  lo = Math.imul(al0, bl0);
1105
1110
  mid = Math.imul(al0, bh0);
1106
- mid += Math.imul(ah0, bl0);
1111
+ mid = (mid + Math.imul(ah0, bl0)) | 0;
1107
1112
  hi = Math.imul(ah0, bh0);
1108
- var w0 = c + lo + ((mid & 0x1fff) << 13);
1109
- c = hi + (mid >>> 13) + (w0 >>> 26);
1113
+ var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1114
+ c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
1110
1115
  w0 &= 0x3ffffff;
1111
1116
  /* k = 1 */
1112
1117
  lo = Math.imul(al1, bl0);
1113
1118
  mid = Math.imul(al1, bh0);
1114
- mid += Math.imul(ah1, bl0);
1119
+ mid = (mid + Math.imul(ah1, bl0)) | 0;
1115
1120
  hi = Math.imul(ah1, bh0);
1116
- lo += Math.imul(al0, bl1);
1117
- mid += Math.imul(al0, bh1);
1118
- mid += Math.imul(ah0, bl1);
1119
- hi += Math.imul(ah0, bh1);
1120
- var w1 = c + lo + ((mid & 0x1fff) << 13);
1121
- c = hi + (mid >>> 13) + (w1 >>> 26);
1121
+ lo = (lo + Math.imul(al0, bl1)) | 0;
1122
+ mid = (mid + Math.imul(al0, bh1)) | 0;
1123
+ mid = (mid + Math.imul(ah0, bl1)) | 0;
1124
+ hi = (hi + Math.imul(ah0, bh1)) | 0;
1125
+ var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1126
+ c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
1122
1127
  w1 &= 0x3ffffff;
1123
1128
  /* k = 2 */
1124
1129
  lo = Math.imul(al2, bl0);
1125
1130
  mid = Math.imul(al2, bh0);
1126
- mid += Math.imul(ah2, bl0);
1131
+ mid = (mid + Math.imul(ah2, bl0)) | 0;
1127
1132
  hi = Math.imul(ah2, bh0);
1128
- lo += Math.imul(al1, bl1);
1129
- mid += Math.imul(al1, bh1);
1130
- mid += Math.imul(ah1, bl1);
1131
- hi += Math.imul(ah1, bh1);
1132
- lo += Math.imul(al0, bl2);
1133
- mid += Math.imul(al0, bh2);
1134
- mid += Math.imul(ah0, bl2);
1135
- hi += Math.imul(ah0, bh2);
1136
- var w2 = c + lo + ((mid & 0x1fff) << 13);
1137
- c = hi + (mid >>> 13) + (w2 >>> 26);
1133
+ lo = (lo + Math.imul(al1, bl1)) | 0;
1134
+ mid = (mid + Math.imul(al1, bh1)) | 0;
1135
+ mid = (mid + Math.imul(ah1, bl1)) | 0;
1136
+ hi = (hi + Math.imul(ah1, bh1)) | 0;
1137
+ lo = (lo + Math.imul(al0, bl2)) | 0;
1138
+ mid = (mid + Math.imul(al0, bh2)) | 0;
1139
+ mid = (mid + Math.imul(ah0, bl2)) | 0;
1140
+ hi = (hi + Math.imul(ah0, bh2)) | 0;
1141
+ var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1142
+ c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
1138
1143
  w2 &= 0x3ffffff;
1139
1144
  /* k = 3 */
1140
1145
  lo = Math.imul(al3, bl0);
1141
1146
  mid = Math.imul(al3, bh0);
1142
- mid += Math.imul(ah3, bl0);
1147
+ mid = (mid + Math.imul(ah3, bl0)) | 0;
1143
1148
  hi = Math.imul(ah3, bh0);
1144
- lo += Math.imul(al2, bl1);
1145
- mid += Math.imul(al2, bh1);
1146
- mid += Math.imul(ah2, bl1);
1147
- hi += Math.imul(ah2, bh1);
1148
- lo += Math.imul(al1, bl2);
1149
- mid += Math.imul(al1, bh2);
1150
- mid += Math.imul(ah1, bl2);
1151
- hi += Math.imul(ah1, bh2);
1152
- lo += Math.imul(al0, bl3);
1153
- mid += Math.imul(al0, bh3);
1154
- mid += Math.imul(ah0, bl3);
1155
- hi += Math.imul(ah0, bh3);
1156
- var w3 = c + lo + ((mid & 0x1fff) << 13);
1157
- c = hi + (mid >>> 13) + (w3 >>> 26);
1149
+ lo = (lo + Math.imul(al2, bl1)) | 0;
1150
+ mid = (mid + Math.imul(al2, bh1)) | 0;
1151
+ mid = (mid + Math.imul(ah2, bl1)) | 0;
1152
+ hi = (hi + Math.imul(ah2, bh1)) | 0;
1153
+ lo = (lo + Math.imul(al1, bl2)) | 0;
1154
+ mid = (mid + Math.imul(al1, bh2)) | 0;
1155
+ mid = (mid + Math.imul(ah1, bl2)) | 0;
1156
+ hi = (hi + Math.imul(ah1, bh2)) | 0;
1157
+ lo = (lo + Math.imul(al0, bl3)) | 0;
1158
+ mid = (mid + Math.imul(al0, bh3)) | 0;
1159
+ mid = (mid + Math.imul(ah0, bl3)) | 0;
1160
+ hi = (hi + Math.imul(ah0, bh3)) | 0;
1161
+ var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1162
+ c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
1158
1163
  w3 &= 0x3ffffff;
1159
1164
  /* k = 4 */
1160
1165
  lo = Math.imul(al4, bl0);
1161
1166
  mid = Math.imul(al4, bh0);
1162
- mid += Math.imul(ah4, bl0);
1167
+ mid = (mid + Math.imul(ah4, bl0)) | 0;
1163
1168
  hi = Math.imul(ah4, bh0);
1164
- lo += Math.imul(al3, bl1);
1165
- mid += Math.imul(al3, bh1);
1166
- mid += Math.imul(ah3, bl1);
1167
- hi += Math.imul(ah3, bh1);
1168
- lo += Math.imul(al2, bl2);
1169
- mid += Math.imul(al2, bh2);
1170
- mid += Math.imul(ah2, bl2);
1171
- hi += Math.imul(ah2, bh2);
1172
- lo += Math.imul(al1, bl3);
1173
- mid += Math.imul(al1, bh3);
1174
- mid += Math.imul(ah1, bl3);
1175
- hi += Math.imul(ah1, bh3);
1176
- lo += Math.imul(al0, bl4);
1177
- mid += Math.imul(al0, bh4);
1178
- mid += Math.imul(ah0, bl4);
1179
- hi += Math.imul(ah0, bh4);
1180
- var w4 = c + lo + ((mid & 0x1fff) << 13);
1181
- c = hi + (mid >>> 13) + (w4 >>> 26);
1169
+ lo = (lo + Math.imul(al3, bl1)) | 0;
1170
+ mid = (mid + Math.imul(al3, bh1)) | 0;
1171
+ mid = (mid + Math.imul(ah3, bl1)) | 0;
1172
+ hi = (hi + Math.imul(ah3, bh1)) | 0;
1173
+ lo = (lo + Math.imul(al2, bl2)) | 0;
1174
+ mid = (mid + Math.imul(al2, bh2)) | 0;
1175
+ mid = (mid + Math.imul(ah2, bl2)) | 0;
1176
+ hi = (hi + Math.imul(ah2, bh2)) | 0;
1177
+ lo = (lo + Math.imul(al1, bl3)) | 0;
1178
+ mid = (mid + Math.imul(al1, bh3)) | 0;
1179
+ mid = (mid + Math.imul(ah1, bl3)) | 0;
1180
+ hi = (hi + Math.imul(ah1, bh3)) | 0;
1181
+ lo = (lo + Math.imul(al0, bl4)) | 0;
1182
+ mid = (mid + Math.imul(al0, bh4)) | 0;
1183
+ mid = (mid + Math.imul(ah0, bl4)) | 0;
1184
+ hi = (hi + Math.imul(ah0, bh4)) | 0;
1185
+ var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1186
+ c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
1182
1187
  w4 &= 0x3ffffff;
1183
1188
  /* k = 5 */
1184
1189
  lo = Math.imul(al5, bl0);
1185
1190
  mid = Math.imul(al5, bh0);
1186
- mid += Math.imul(ah5, bl0);
1191
+ mid = (mid + Math.imul(ah5, bl0)) | 0;
1187
1192
  hi = Math.imul(ah5, bh0);
1188
- lo += Math.imul(al4, bl1);
1189
- mid += Math.imul(al4, bh1);
1190
- mid += Math.imul(ah4, bl1);
1191
- hi += Math.imul(ah4, bh1);
1192
- lo += Math.imul(al3, bl2);
1193
- mid += Math.imul(al3, bh2);
1194
- mid += Math.imul(ah3, bl2);
1195
- hi += Math.imul(ah3, bh2);
1196
- lo += Math.imul(al2, bl3);
1197
- mid += Math.imul(al2, bh3);
1198
- mid += Math.imul(ah2, bl3);
1199
- hi += Math.imul(ah2, bh3);
1200
- lo += Math.imul(al1, bl4);
1201
- mid += Math.imul(al1, bh4);
1202
- mid += Math.imul(ah1, bl4);
1203
- hi += Math.imul(ah1, bh4);
1204
- lo += Math.imul(al0, bl5);
1205
- mid += Math.imul(al0, bh5);
1206
- mid += Math.imul(ah0, bl5);
1207
- hi += Math.imul(ah0, bh5);
1208
- var w5 = c + lo + ((mid & 0x1fff) << 13);
1209
- c = hi + (mid >>> 13) + (w5 >>> 26);
1193
+ lo = (lo + Math.imul(al4, bl1)) | 0;
1194
+ mid = (mid + Math.imul(al4, bh1)) | 0;
1195
+ mid = (mid + Math.imul(ah4, bl1)) | 0;
1196
+ hi = (hi + Math.imul(ah4, bh1)) | 0;
1197
+ lo = (lo + Math.imul(al3, bl2)) | 0;
1198
+ mid = (mid + Math.imul(al3, bh2)) | 0;
1199
+ mid = (mid + Math.imul(ah3, bl2)) | 0;
1200
+ hi = (hi + Math.imul(ah3, bh2)) | 0;
1201
+ lo = (lo + Math.imul(al2, bl3)) | 0;
1202
+ mid = (mid + Math.imul(al2, bh3)) | 0;
1203
+ mid = (mid + Math.imul(ah2, bl3)) | 0;
1204
+ hi = (hi + Math.imul(ah2, bh3)) | 0;
1205
+ lo = (lo + Math.imul(al1, bl4)) | 0;
1206
+ mid = (mid + Math.imul(al1, bh4)) | 0;
1207
+ mid = (mid + Math.imul(ah1, bl4)) | 0;
1208
+ hi = (hi + Math.imul(ah1, bh4)) | 0;
1209
+ lo = (lo + Math.imul(al0, bl5)) | 0;
1210
+ mid = (mid + Math.imul(al0, bh5)) | 0;
1211
+ mid = (mid + Math.imul(ah0, bl5)) | 0;
1212
+ hi = (hi + Math.imul(ah0, bh5)) | 0;
1213
+ var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1214
+ c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
1210
1215
  w5 &= 0x3ffffff;
1211
1216
  /* k = 6 */
1212
1217
  lo = Math.imul(al6, bl0);
1213
1218
  mid = Math.imul(al6, bh0);
1214
- mid += Math.imul(ah6, bl0);
1219
+ mid = (mid + Math.imul(ah6, bl0)) | 0;
1215
1220
  hi = Math.imul(ah6, bh0);
1216
- lo += Math.imul(al5, bl1);
1217
- mid += Math.imul(al5, bh1);
1218
- mid += Math.imul(ah5, bl1);
1219
- hi += Math.imul(ah5, bh1);
1220
- lo += Math.imul(al4, bl2);
1221
- mid += Math.imul(al4, bh2);
1222
- mid += Math.imul(ah4, bl2);
1223
- hi += Math.imul(ah4, bh2);
1224
- lo += Math.imul(al3, bl3);
1225
- mid += Math.imul(al3, bh3);
1226
- mid += Math.imul(ah3, bl3);
1227
- hi += Math.imul(ah3, bh3);
1228
- lo += Math.imul(al2, bl4);
1229
- mid += Math.imul(al2, bh4);
1230
- mid += Math.imul(ah2, bl4);
1231
- hi += Math.imul(ah2, bh4);
1232
- lo += Math.imul(al1, bl5);
1233
- mid += Math.imul(al1, bh5);
1234
- mid += Math.imul(ah1, bl5);
1235
- hi += Math.imul(ah1, bh5);
1236
- lo += Math.imul(al0, bl6);
1237
- mid += Math.imul(al0, bh6);
1238
- mid += Math.imul(ah0, bl6);
1239
- hi += Math.imul(ah0, bh6);
1240
- var w6 = c + lo + ((mid & 0x1fff) << 13);
1241
- c = hi + (mid >>> 13) + (w6 >>> 26);
1221
+ lo = (lo + Math.imul(al5, bl1)) | 0;
1222
+ mid = (mid + Math.imul(al5, bh1)) | 0;
1223
+ mid = (mid + Math.imul(ah5, bl1)) | 0;
1224
+ hi = (hi + Math.imul(ah5, bh1)) | 0;
1225
+ lo = (lo + Math.imul(al4, bl2)) | 0;
1226
+ mid = (mid + Math.imul(al4, bh2)) | 0;
1227
+ mid = (mid + Math.imul(ah4, bl2)) | 0;
1228
+ hi = (hi + Math.imul(ah4, bh2)) | 0;
1229
+ lo = (lo + Math.imul(al3, bl3)) | 0;
1230
+ mid = (mid + Math.imul(al3, bh3)) | 0;
1231
+ mid = (mid + Math.imul(ah3, bl3)) | 0;
1232
+ hi = (hi + Math.imul(ah3, bh3)) | 0;
1233
+ lo = (lo + Math.imul(al2, bl4)) | 0;
1234
+ mid = (mid + Math.imul(al2, bh4)) | 0;
1235
+ mid = (mid + Math.imul(ah2, bl4)) | 0;
1236
+ hi = (hi + Math.imul(ah2, bh4)) | 0;
1237
+ lo = (lo + Math.imul(al1, bl5)) | 0;
1238
+ mid = (mid + Math.imul(al1, bh5)) | 0;
1239
+ mid = (mid + Math.imul(ah1, bl5)) | 0;
1240
+ hi = (hi + Math.imul(ah1, bh5)) | 0;
1241
+ lo = (lo + Math.imul(al0, bl6)) | 0;
1242
+ mid = (mid + Math.imul(al0, bh6)) | 0;
1243
+ mid = (mid + Math.imul(ah0, bl6)) | 0;
1244
+ hi = (hi + Math.imul(ah0, bh6)) | 0;
1245
+ var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1246
+ c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
1242
1247
  w6 &= 0x3ffffff;
1243
1248
  /* k = 7 */
1244
1249
  lo = Math.imul(al7, bl0);
1245
1250
  mid = Math.imul(al7, bh0);
1246
- mid += Math.imul(ah7, bl0);
1251
+ mid = (mid + Math.imul(ah7, bl0)) | 0;
1247
1252
  hi = Math.imul(ah7, bh0);
1248
- lo += Math.imul(al6, bl1);
1249
- mid += Math.imul(al6, bh1);
1250
- mid += Math.imul(ah6, bl1);
1251
- hi += Math.imul(ah6, bh1);
1252
- lo += Math.imul(al5, bl2);
1253
- mid += Math.imul(al5, bh2);
1254
- mid += Math.imul(ah5, bl2);
1255
- hi += Math.imul(ah5, bh2);
1256
- lo += Math.imul(al4, bl3);
1257
- mid += Math.imul(al4, bh3);
1258
- mid += Math.imul(ah4, bl3);
1259
- hi += Math.imul(ah4, bh3);
1260
- lo += Math.imul(al3, bl4);
1261
- mid += Math.imul(al3, bh4);
1262
- mid += Math.imul(ah3, bl4);
1263
- hi += Math.imul(ah3, bh4);
1264
- lo += Math.imul(al2, bl5);
1265
- mid += Math.imul(al2, bh5);
1266
- mid += Math.imul(ah2, bl5);
1267
- hi += Math.imul(ah2, bh5);
1268
- lo += Math.imul(al1, bl6);
1269
- mid += Math.imul(al1, bh6);
1270
- mid += Math.imul(ah1, bl6);
1271
- hi += Math.imul(ah1, bh6);
1272
- lo += Math.imul(al0, bl7);
1273
- mid += Math.imul(al0, bh7);
1274
- mid += Math.imul(ah0, bl7);
1275
- hi += Math.imul(ah0, bh7);
1276
- var w7 = c + lo + ((mid & 0x1fff) << 13);
1277
- c = hi + (mid >>> 13) + (w7 >>> 26);
1253
+ lo = (lo + Math.imul(al6, bl1)) | 0;
1254
+ mid = (mid + Math.imul(al6, bh1)) | 0;
1255
+ mid = (mid + Math.imul(ah6, bl1)) | 0;
1256
+ hi = (hi + Math.imul(ah6, bh1)) | 0;
1257
+ lo = (lo + Math.imul(al5, bl2)) | 0;
1258
+ mid = (mid + Math.imul(al5, bh2)) | 0;
1259
+ mid = (mid + Math.imul(ah5, bl2)) | 0;
1260
+ hi = (hi + Math.imul(ah5, bh2)) | 0;
1261
+ lo = (lo + Math.imul(al4, bl3)) | 0;
1262
+ mid = (mid + Math.imul(al4, bh3)) | 0;
1263
+ mid = (mid + Math.imul(ah4, bl3)) | 0;
1264
+ hi = (hi + Math.imul(ah4, bh3)) | 0;
1265
+ lo = (lo + Math.imul(al3, bl4)) | 0;
1266
+ mid = (mid + Math.imul(al3, bh4)) | 0;
1267
+ mid = (mid + Math.imul(ah3, bl4)) | 0;
1268
+ hi = (hi + Math.imul(ah3, bh4)) | 0;
1269
+ lo = (lo + Math.imul(al2, bl5)) | 0;
1270
+ mid = (mid + Math.imul(al2, bh5)) | 0;
1271
+ mid = (mid + Math.imul(ah2, bl5)) | 0;
1272
+ hi = (hi + Math.imul(ah2, bh5)) | 0;
1273
+ lo = (lo + Math.imul(al1, bl6)) | 0;
1274
+ mid = (mid + Math.imul(al1, bh6)) | 0;
1275
+ mid = (mid + Math.imul(ah1, bl6)) | 0;
1276
+ hi = (hi + Math.imul(ah1, bh6)) | 0;
1277
+ lo = (lo + Math.imul(al0, bl7)) | 0;
1278
+ mid = (mid + Math.imul(al0, bh7)) | 0;
1279
+ mid = (mid + Math.imul(ah0, bl7)) | 0;
1280
+ hi = (hi + Math.imul(ah0, bh7)) | 0;
1281
+ var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1282
+ c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
1278
1283
  w7 &= 0x3ffffff;
1279
1284
  /* k = 8 */
1280
1285
  lo = Math.imul(al8, bl0);
1281
1286
  mid = Math.imul(al8, bh0);
1282
- mid += Math.imul(ah8, bl0);
1287
+ mid = (mid + Math.imul(ah8, bl0)) | 0;
1283
1288
  hi = Math.imul(ah8, bh0);
1284
- lo += Math.imul(al7, bl1);
1285
- mid += Math.imul(al7, bh1);
1286
- mid += Math.imul(ah7, bl1);
1287
- hi += Math.imul(ah7, bh1);
1288
- lo += Math.imul(al6, bl2);
1289
- mid += Math.imul(al6, bh2);
1290
- mid += Math.imul(ah6, bl2);
1291
- hi += Math.imul(ah6, bh2);
1292
- lo += Math.imul(al5, bl3);
1293
- mid += Math.imul(al5, bh3);
1294
- mid += Math.imul(ah5, bl3);
1295
- hi += Math.imul(ah5, bh3);
1296
- lo += Math.imul(al4, bl4);
1297
- mid += Math.imul(al4, bh4);
1298
- mid += Math.imul(ah4, bl4);
1299
- hi += Math.imul(ah4, bh4);
1300
- lo += Math.imul(al3, bl5);
1301
- mid += Math.imul(al3, bh5);
1302
- mid += Math.imul(ah3, bl5);
1303
- hi += Math.imul(ah3, bh5);
1304
- lo += Math.imul(al2, bl6);
1305
- mid += Math.imul(al2, bh6);
1306
- mid += Math.imul(ah2, bl6);
1307
- hi += Math.imul(ah2, bh6);
1308
- lo += Math.imul(al1, bl7);
1309
- mid += Math.imul(al1, bh7);
1310
- mid += Math.imul(ah1, bl7);
1311
- hi += Math.imul(ah1, bh7);
1312
- lo += Math.imul(al0, bl8);
1313
- mid += Math.imul(al0, bh8);
1314
- mid += Math.imul(ah0, bl8);
1315
- hi += Math.imul(ah0, bh8);
1316
- var w8 = c + lo + ((mid & 0x1fff) << 13);
1317
- c = hi + (mid >>> 13) + (w8 >>> 26);
1289
+ lo = (lo + Math.imul(al7, bl1)) | 0;
1290
+ mid = (mid + Math.imul(al7, bh1)) | 0;
1291
+ mid = (mid + Math.imul(ah7, bl1)) | 0;
1292
+ hi = (hi + Math.imul(ah7, bh1)) | 0;
1293
+ lo = (lo + Math.imul(al6, bl2)) | 0;
1294
+ mid = (mid + Math.imul(al6, bh2)) | 0;
1295
+ mid = (mid + Math.imul(ah6, bl2)) | 0;
1296
+ hi = (hi + Math.imul(ah6, bh2)) | 0;
1297
+ lo = (lo + Math.imul(al5, bl3)) | 0;
1298
+ mid = (mid + Math.imul(al5, bh3)) | 0;
1299
+ mid = (mid + Math.imul(ah5, bl3)) | 0;
1300
+ hi = (hi + Math.imul(ah5, bh3)) | 0;
1301
+ lo = (lo + Math.imul(al4, bl4)) | 0;
1302
+ mid = (mid + Math.imul(al4, bh4)) | 0;
1303
+ mid = (mid + Math.imul(ah4, bl4)) | 0;
1304
+ hi = (hi + Math.imul(ah4, bh4)) | 0;
1305
+ lo = (lo + Math.imul(al3, bl5)) | 0;
1306
+ mid = (mid + Math.imul(al3, bh5)) | 0;
1307
+ mid = (mid + Math.imul(ah3, bl5)) | 0;
1308
+ hi = (hi + Math.imul(ah3, bh5)) | 0;
1309
+ lo = (lo + Math.imul(al2, bl6)) | 0;
1310
+ mid = (mid + Math.imul(al2, bh6)) | 0;
1311
+ mid = (mid + Math.imul(ah2, bl6)) | 0;
1312
+ hi = (hi + Math.imul(ah2, bh6)) | 0;
1313
+ lo = (lo + Math.imul(al1, bl7)) | 0;
1314
+ mid = (mid + Math.imul(al1, bh7)) | 0;
1315
+ mid = (mid + Math.imul(ah1, bl7)) | 0;
1316
+ hi = (hi + Math.imul(ah1, bh7)) | 0;
1317
+ lo = (lo + Math.imul(al0, bl8)) | 0;
1318
+ mid = (mid + Math.imul(al0, bh8)) | 0;
1319
+ mid = (mid + Math.imul(ah0, bl8)) | 0;
1320
+ hi = (hi + Math.imul(ah0, bh8)) | 0;
1321
+ var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1322
+ c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
1318
1323
  w8 &= 0x3ffffff;
1319
1324
  /* k = 9 */
1320
1325
  lo = Math.imul(al9, bl0);
1321
1326
  mid = Math.imul(al9, bh0);
1322
- mid += Math.imul(ah9, bl0);
1327
+ mid = (mid + Math.imul(ah9, bl0)) | 0;
1323
1328
  hi = Math.imul(ah9, bh0);
1324
- lo += Math.imul(al8, bl1);
1325
- mid += Math.imul(al8, bh1);
1326
- mid += Math.imul(ah8, bl1);
1327
- hi += Math.imul(ah8, bh1);
1328
- lo += Math.imul(al7, bl2);
1329
- mid += Math.imul(al7, bh2);
1330
- mid += Math.imul(ah7, bl2);
1331
- hi += Math.imul(ah7, bh2);
1332
- lo += Math.imul(al6, bl3);
1333
- mid += Math.imul(al6, bh3);
1334
- mid += Math.imul(ah6, bl3);
1335
- hi += Math.imul(ah6, bh3);
1336
- lo += Math.imul(al5, bl4);
1337
- mid += Math.imul(al5, bh4);
1338
- mid += Math.imul(ah5, bl4);
1339
- hi += Math.imul(ah5, bh4);
1340
- lo += Math.imul(al4, bl5);
1341
- mid += Math.imul(al4, bh5);
1342
- mid += Math.imul(ah4, bl5);
1343
- hi += Math.imul(ah4, bh5);
1344
- lo += Math.imul(al3, bl6);
1345
- mid += Math.imul(al3, bh6);
1346
- mid += Math.imul(ah3, bl6);
1347
- hi += Math.imul(ah3, bh6);
1348
- lo += Math.imul(al2, bl7);
1349
- mid += Math.imul(al2, bh7);
1350
- mid += Math.imul(ah2, bl7);
1351
- hi += Math.imul(ah2, bh7);
1352
- lo += Math.imul(al1, bl8);
1353
- mid += Math.imul(al1, bh8);
1354
- mid += Math.imul(ah1, bl8);
1355
- hi += Math.imul(ah1, bh8);
1356
- lo += Math.imul(al0, bl9);
1357
- mid += Math.imul(al0, bh9);
1358
- mid += Math.imul(ah0, bl9);
1359
- hi += Math.imul(ah0, bh9);
1360
- var w9 = c + lo + ((mid & 0x1fff) << 13);
1361
- c = hi + (mid >>> 13) + (w9 >>> 26);
1329
+ lo = (lo + Math.imul(al8, bl1)) | 0;
1330
+ mid = (mid + Math.imul(al8, bh1)) | 0;
1331
+ mid = (mid + Math.imul(ah8, bl1)) | 0;
1332
+ hi = (hi + Math.imul(ah8, bh1)) | 0;
1333
+ lo = (lo + Math.imul(al7, bl2)) | 0;
1334
+ mid = (mid + Math.imul(al7, bh2)) | 0;
1335
+ mid = (mid + Math.imul(ah7, bl2)) | 0;
1336
+ hi = (hi + Math.imul(ah7, bh2)) | 0;
1337
+ lo = (lo + Math.imul(al6, bl3)) | 0;
1338
+ mid = (mid + Math.imul(al6, bh3)) | 0;
1339
+ mid = (mid + Math.imul(ah6, bl3)) | 0;
1340
+ hi = (hi + Math.imul(ah6, bh3)) | 0;
1341
+ lo = (lo + Math.imul(al5, bl4)) | 0;
1342
+ mid = (mid + Math.imul(al5, bh4)) | 0;
1343
+ mid = (mid + Math.imul(ah5, bl4)) | 0;
1344
+ hi = (hi + Math.imul(ah5, bh4)) | 0;
1345
+ lo = (lo + Math.imul(al4, bl5)) | 0;
1346
+ mid = (mid + Math.imul(al4, bh5)) | 0;
1347
+ mid = (mid + Math.imul(ah4, bl5)) | 0;
1348
+ hi = (hi + Math.imul(ah4, bh5)) | 0;
1349
+ lo = (lo + Math.imul(al3, bl6)) | 0;
1350
+ mid = (mid + Math.imul(al3, bh6)) | 0;
1351
+ mid = (mid + Math.imul(ah3, bl6)) | 0;
1352
+ hi = (hi + Math.imul(ah3, bh6)) | 0;
1353
+ lo = (lo + Math.imul(al2, bl7)) | 0;
1354
+ mid = (mid + Math.imul(al2, bh7)) | 0;
1355
+ mid = (mid + Math.imul(ah2, bl7)) | 0;
1356
+ hi = (hi + Math.imul(ah2, bh7)) | 0;
1357
+ lo = (lo + Math.imul(al1, bl8)) | 0;
1358
+ mid = (mid + Math.imul(al1, bh8)) | 0;
1359
+ mid = (mid + Math.imul(ah1, bl8)) | 0;
1360
+ hi = (hi + Math.imul(ah1, bh8)) | 0;
1361
+ lo = (lo + Math.imul(al0, bl9)) | 0;
1362
+ mid = (mid + Math.imul(al0, bh9)) | 0;
1363
+ mid = (mid + Math.imul(ah0, bl9)) | 0;
1364
+ hi = (hi + Math.imul(ah0, bh9)) | 0;
1365
+ var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1366
+ c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
1362
1367
  w9 &= 0x3ffffff;
1363
1368
  /* k = 10 */
1364
1369
  lo = Math.imul(al9, bl1);
1365
1370
  mid = Math.imul(al9, bh1);
1366
- mid += Math.imul(ah9, bl1);
1371
+ mid = (mid + Math.imul(ah9, bl1)) | 0;
1367
1372
  hi = Math.imul(ah9, bh1);
1368
- lo += Math.imul(al8, bl2);
1369
- mid += Math.imul(al8, bh2);
1370
- mid += Math.imul(ah8, bl2);
1371
- hi += Math.imul(ah8, bh2);
1372
- lo += Math.imul(al7, bl3);
1373
- mid += Math.imul(al7, bh3);
1374
- mid += Math.imul(ah7, bl3);
1375
- hi += Math.imul(ah7, bh3);
1376
- lo += Math.imul(al6, bl4);
1377
- mid += Math.imul(al6, bh4);
1378
- mid += Math.imul(ah6, bl4);
1379
- hi += Math.imul(ah6, bh4);
1380
- lo += Math.imul(al5, bl5);
1381
- mid += Math.imul(al5, bh5);
1382
- mid += Math.imul(ah5, bl5);
1383
- hi += Math.imul(ah5, bh5);
1384
- lo += Math.imul(al4, bl6);
1385
- mid += Math.imul(al4, bh6);
1386
- mid += Math.imul(ah4, bl6);
1387
- hi += Math.imul(ah4, bh6);
1388
- lo += Math.imul(al3, bl7);
1389
- mid += Math.imul(al3, bh7);
1390
- mid += Math.imul(ah3, bl7);
1391
- hi += Math.imul(ah3, bh7);
1392
- lo += Math.imul(al2, bl8);
1393
- mid += Math.imul(al2, bh8);
1394
- mid += Math.imul(ah2, bl8);
1395
- hi += Math.imul(ah2, bh8);
1396
- lo += Math.imul(al1, bl9);
1397
- mid += Math.imul(al1, bh9);
1398
- mid += Math.imul(ah1, bl9);
1399
- hi += Math.imul(ah1, bh9);
1400
- var w10 = c + lo + ((mid & 0x1fff) << 13);
1401
- c = hi + (mid >>> 13) + (w10 >>> 26);
1373
+ lo = (lo + Math.imul(al8, bl2)) | 0;
1374
+ mid = (mid + Math.imul(al8, bh2)) | 0;
1375
+ mid = (mid + Math.imul(ah8, bl2)) | 0;
1376
+ hi = (hi + Math.imul(ah8, bh2)) | 0;
1377
+ lo = (lo + Math.imul(al7, bl3)) | 0;
1378
+ mid = (mid + Math.imul(al7, bh3)) | 0;
1379
+ mid = (mid + Math.imul(ah7, bl3)) | 0;
1380
+ hi = (hi + Math.imul(ah7, bh3)) | 0;
1381
+ lo = (lo + Math.imul(al6, bl4)) | 0;
1382
+ mid = (mid + Math.imul(al6, bh4)) | 0;
1383
+ mid = (mid + Math.imul(ah6, bl4)) | 0;
1384
+ hi = (hi + Math.imul(ah6, bh4)) | 0;
1385
+ lo = (lo + Math.imul(al5, bl5)) | 0;
1386
+ mid = (mid + Math.imul(al5, bh5)) | 0;
1387
+ mid = (mid + Math.imul(ah5, bl5)) | 0;
1388
+ hi = (hi + Math.imul(ah5, bh5)) | 0;
1389
+ lo = (lo + Math.imul(al4, bl6)) | 0;
1390
+ mid = (mid + Math.imul(al4, bh6)) | 0;
1391
+ mid = (mid + Math.imul(ah4, bl6)) | 0;
1392
+ hi = (hi + Math.imul(ah4, bh6)) | 0;
1393
+ lo = (lo + Math.imul(al3, bl7)) | 0;
1394
+ mid = (mid + Math.imul(al3, bh7)) | 0;
1395
+ mid = (mid + Math.imul(ah3, bl7)) | 0;
1396
+ hi = (hi + Math.imul(ah3, bh7)) | 0;
1397
+ lo = (lo + Math.imul(al2, bl8)) | 0;
1398
+ mid = (mid + Math.imul(al2, bh8)) | 0;
1399
+ mid = (mid + Math.imul(ah2, bl8)) | 0;
1400
+ hi = (hi + Math.imul(ah2, bh8)) | 0;
1401
+ lo = (lo + Math.imul(al1, bl9)) | 0;
1402
+ mid = (mid + Math.imul(al1, bh9)) | 0;
1403
+ mid = (mid + Math.imul(ah1, bl9)) | 0;
1404
+ hi = (hi + Math.imul(ah1, bh9)) | 0;
1405
+ var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1406
+ c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
1402
1407
  w10 &= 0x3ffffff;
1403
1408
  /* k = 11 */
1404
1409
  lo = Math.imul(al9, bl2);
1405
1410
  mid = Math.imul(al9, bh2);
1406
- mid += Math.imul(ah9, bl2);
1411
+ mid = (mid + Math.imul(ah9, bl2)) | 0;
1407
1412
  hi = Math.imul(ah9, bh2);
1408
- lo += Math.imul(al8, bl3);
1409
- mid += Math.imul(al8, bh3);
1410
- mid += Math.imul(ah8, bl3);
1411
- hi += Math.imul(ah8, bh3);
1412
- lo += Math.imul(al7, bl4);
1413
- mid += Math.imul(al7, bh4);
1414
- mid += Math.imul(ah7, bl4);
1415
- hi += Math.imul(ah7, bh4);
1416
- lo += Math.imul(al6, bl5);
1417
- mid += Math.imul(al6, bh5);
1418
- mid += Math.imul(ah6, bl5);
1419
- hi += Math.imul(ah6, bh5);
1420
- lo += Math.imul(al5, bl6);
1421
- mid += Math.imul(al5, bh6);
1422
- mid += Math.imul(ah5, bl6);
1423
- hi += Math.imul(ah5, bh6);
1424
- lo += Math.imul(al4, bl7);
1425
- mid += Math.imul(al4, bh7);
1426
- mid += Math.imul(ah4, bl7);
1427
- hi += Math.imul(ah4, bh7);
1428
- lo += Math.imul(al3, bl8);
1429
- mid += Math.imul(al3, bh8);
1430
- mid += Math.imul(ah3, bl8);
1431
- hi += Math.imul(ah3, bh8);
1432
- lo += Math.imul(al2, bl9);
1433
- mid += Math.imul(al2, bh9);
1434
- mid += Math.imul(ah2, bl9);
1435
- hi += Math.imul(ah2, bh9);
1436
- var w11 = c + lo + ((mid & 0x1fff) << 13);
1437
- c = hi + (mid >>> 13) + (w11 >>> 26);
1413
+ lo = (lo + Math.imul(al8, bl3)) | 0;
1414
+ mid = (mid + Math.imul(al8, bh3)) | 0;
1415
+ mid = (mid + Math.imul(ah8, bl3)) | 0;
1416
+ hi = (hi + Math.imul(ah8, bh3)) | 0;
1417
+ lo = (lo + Math.imul(al7, bl4)) | 0;
1418
+ mid = (mid + Math.imul(al7, bh4)) | 0;
1419
+ mid = (mid + Math.imul(ah7, bl4)) | 0;
1420
+ hi = (hi + Math.imul(ah7, bh4)) | 0;
1421
+ lo = (lo + Math.imul(al6, bl5)) | 0;
1422
+ mid = (mid + Math.imul(al6, bh5)) | 0;
1423
+ mid = (mid + Math.imul(ah6, bl5)) | 0;
1424
+ hi = (hi + Math.imul(ah6, bh5)) | 0;
1425
+ lo = (lo + Math.imul(al5, bl6)) | 0;
1426
+ mid = (mid + Math.imul(al5, bh6)) | 0;
1427
+ mid = (mid + Math.imul(ah5, bl6)) | 0;
1428
+ hi = (hi + Math.imul(ah5, bh6)) | 0;
1429
+ lo = (lo + Math.imul(al4, bl7)) | 0;
1430
+ mid = (mid + Math.imul(al4, bh7)) | 0;
1431
+ mid = (mid + Math.imul(ah4, bl7)) | 0;
1432
+ hi = (hi + Math.imul(ah4, bh7)) | 0;
1433
+ lo = (lo + Math.imul(al3, bl8)) | 0;
1434
+ mid = (mid + Math.imul(al3, bh8)) | 0;
1435
+ mid = (mid + Math.imul(ah3, bl8)) | 0;
1436
+ hi = (hi + Math.imul(ah3, bh8)) | 0;
1437
+ lo = (lo + Math.imul(al2, bl9)) | 0;
1438
+ mid = (mid + Math.imul(al2, bh9)) | 0;
1439
+ mid = (mid + Math.imul(ah2, bl9)) | 0;
1440
+ hi = (hi + Math.imul(ah2, bh9)) | 0;
1441
+ var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1442
+ c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
1438
1443
  w11 &= 0x3ffffff;
1439
1444
  /* k = 12 */
1440
1445
  lo = Math.imul(al9, bl3);
1441
1446
  mid = Math.imul(al9, bh3);
1442
- mid += Math.imul(ah9, bl3);
1447
+ mid = (mid + Math.imul(ah9, bl3)) | 0;
1443
1448
  hi = Math.imul(ah9, bh3);
1444
- lo += Math.imul(al8, bl4);
1445
- mid += Math.imul(al8, bh4);
1446
- mid += Math.imul(ah8, bl4);
1447
- hi += Math.imul(ah8, bh4);
1448
- lo += Math.imul(al7, bl5);
1449
- mid += Math.imul(al7, bh5);
1450
- mid += Math.imul(ah7, bl5);
1451
- hi += Math.imul(ah7, bh5);
1452
- lo += Math.imul(al6, bl6);
1453
- mid += Math.imul(al6, bh6);
1454
- mid += Math.imul(ah6, bl6);
1455
- hi += Math.imul(ah6, bh6);
1456
- lo += Math.imul(al5, bl7);
1457
- mid += Math.imul(al5, bh7);
1458
- mid += Math.imul(ah5, bl7);
1459
- hi += Math.imul(ah5, bh7);
1460
- lo += Math.imul(al4, bl8);
1461
- mid += Math.imul(al4, bh8);
1462
- mid += Math.imul(ah4, bl8);
1463
- hi += Math.imul(ah4, bh8);
1464
- lo += Math.imul(al3, bl9);
1465
- mid += Math.imul(al3, bh9);
1466
- mid += Math.imul(ah3, bl9);
1467
- hi += Math.imul(ah3, bh9);
1468
- var w12 = c + lo + ((mid & 0x1fff) << 13);
1469
- c = hi + (mid >>> 13) + (w12 >>> 26);
1449
+ lo = (lo + Math.imul(al8, bl4)) | 0;
1450
+ mid = (mid + Math.imul(al8, bh4)) | 0;
1451
+ mid = (mid + Math.imul(ah8, bl4)) | 0;
1452
+ hi = (hi + Math.imul(ah8, bh4)) | 0;
1453
+ lo = (lo + Math.imul(al7, bl5)) | 0;
1454
+ mid = (mid + Math.imul(al7, bh5)) | 0;
1455
+ mid = (mid + Math.imul(ah7, bl5)) | 0;
1456
+ hi = (hi + Math.imul(ah7, bh5)) | 0;
1457
+ lo = (lo + Math.imul(al6, bl6)) | 0;
1458
+ mid = (mid + Math.imul(al6, bh6)) | 0;
1459
+ mid = (mid + Math.imul(ah6, bl6)) | 0;
1460
+ hi = (hi + Math.imul(ah6, bh6)) | 0;
1461
+ lo = (lo + Math.imul(al5, bl7)) | 0;
1462
+ mid = (mid + Math.imul(al5, bh7)) | 0;
1463
+ mid = (mid + Math.imul(ah5, bl7)) | 0;
1464
+ hi = (hi + Math.imul(ah5, bh7)) | 0;
1465
+ lo = (lo + Math.imul(al4, bl8)) | 0;
1466
+ mid = (mid + Math.imul(al4, bh8)) | 0;
1467
+ mid = (mid + Math.imul(ah4, bl8)) | 0;
1468
+ hi = (hi + Math.imul(ah4, bh8)) | 0;
1469
+ lo = (lo + Math.imul(al3, bl9)) | 0;
1470
+ mid = (mid + Math.imul(al3, bh9)) | 0;
1471
+ mid = (mid + Math.imul(ah3, bl9)) | 0;
1472
+ hi = (hi + Math.imul(ah3, bh9)) | 0;
1473
+ var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1474
+ c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
1470
1475
  w12 &= 0x3ffffff;
1471
1476
  /* k = 13 */
1472
1477
  lo = Math.imul(al9, bl4);
1473
1478
  mid = Math.imul(al9, bh4);
1474
- mid += Math.imul(ah9, bl4);
1479
+ mid = (mid + Math.imul(ah9, bl4)) | 0;
1475
1480
  hi = Math.imul(ah9, bh4);
1476
- lo += Math.imul(al8, bl5);
1477
- mid += Math.imul(al8, bh5);
1478
- mid += Math.imul(ah8, bl5);
1479
- hi += Math.imul(ah8, bh5);
1480
- lo += Math.imul(al7, bl6);
1481
- mid += Math.imul(al7, bh6);
1482
- mid += Math.imul(ah7, bl6);
1483
- hi += Math.imul(ah7, bh6);
1484
- lo += Math.imul(al6, bl7);
1485
- mid += Math.imul(al6, bh7);
1486
- mid += Math.imul(ah6, bl7);
1487
- hi += Math.imul(ah6, bh7);
1488
- lo += Math.imul(al5, bl8);
1489
- mid += Math.imul(al5, bh8);
1490
- mid += Math.imul(ah5, bl8);
1491
- hi += Math.imul(ah5, bh8);
1492
- lo += Math.imul(al4, bl9);
1493
- mid += Math.imul(al4, bh9);
1494
- mid += Math.imul(ah4, bl9);
1495
- hi += Math.imul(ah4, bh9);
1496
- var w13 = c + lo + ((mid & 0x1fff) << 13);
1497
- c = hi + (mid >>> 13) + (w13 >>> 26);
1481
+ lo = (lo + Math.imul(al8, bl5)) | 0;
1482
+ mid = (mid + Math.imul(al8, bh5)) | 0;
1483
+ mid = (mid + Math.imul(ah8, bl5)) | 0;
1484
+ hi = (hi + Math.imul(ah8, bh5)) | 0;
1485
+ lo = (lo + Math.imul(al7, bl6)) | 0;
1486
+ mid = (mid + Math.imul(al7, bh6)) | 0;
1487
+ mid = (mid + Math.imul(ah7, bl6)) | 0;
1488
+ hi = (hi + Math.imul(ah7, bh6)) | 0;
1489
+ lo = (lo + Math.imul(al6, bl7)) | 0;
1490
+ mid = (mid + Math.imul(al6, bh7)) | 0;
1491
+ mid = (mid + Math.imul(ah6, bl7)) | 0;
1492
+ hi = (hi + Math.imul(ah6, bh7)) | 0;
1493
+ lo = (lo + Math.imul(al5, bl8)) | 0;
1494
+ mid = (mid + Math.imul(al5, bh8)) | 0;
1495
+ mid = (mid + Math.imul(ah5, bl8)) | 0;
1496
+ hi = (hi + Math.imul(ah5, bh8)) | 0;
1497
+ lo = (lo + Math.imul(al4, bl9)) | 0;
1498
+ mid = (mid + Math.imul(al4, bh9)) | 0;
1499
+ mid = (mid + Math.imul(ah4, bl9)) | 0;
1500
+ hi = (hi + Math.imul(ah4, bh9)) | 0;
1501
+ var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1502
+ c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
1498
1503
  w13 &= 0x3ffffff;
1499
1504
  /* k = 14 */
1500
1505
  lo = Math.imul(al9, bl5);
1501
1506
  mid = Math.imul(al9, bh5);
1502
- mid += Math.imul(ah9, bl5);
1507
+ mid = (mid + Math.imul(ah9, bl5)) | 0;
1503
1508
  hi = Math.imul(ah9, bh5);
1504
- lo += Math.imul(al8, bl6);
1505
- mid += Math.imul(al8, bh6);
1506
- mid += Math.imul(ah8, bl6);
1507
- hi += Math.imul(ah8, bh6);
1508
- lo += Math.imul(al7, bl7);
1509
- mid += Math.imul(al7, bh7);
1510
- mid += Math.imul(ah7, bl7);
1511
- hi += Math.imul(ah7, bh7);
1512
- lo += Math.imul(al6, bl8);
1513
- mid += Math.imul(al6, bh8);
1514
- mid += Math.imul(ah6, bl8);
1515
- hi += Math.imul(ah6, bh8);
1516
- lo += Math.imul(al5, bl9);
1517
- mid += Math.imul(al5, bh9);
1518
- mid += Math.imul(ah5, bl9);
1519
- hi += Math.imul(ah5, bh9);
1520
- var w14 = c + lo + ((mid & 0x1fff) << 13);
1521
- c = hi + (mid >>> 13) + (w14 >>> 26);
1509
+ lo = (lo + Math.imul(al8, bl6)) | 0;
1510
+ mid = (mid + Math.imul(al8, bh6)) | 0;
1511
+ mid = (mid + Math.imul(ah8, bl6)) | 0;
1512
+ hi = (hi + Math.imul(ah8, bh6)) | 0;
1513
+ lo = (lo + Math.imul(al7, bl7)) | 0;
1514
+ mid = (mid + Math.imul(al7, bh7)) | 0;
1515
+ mid = (mid + Math.imul(ah7, bl7)) | 0;
1516
+ hi = (hi + Math.imul(ah7, bh7)) | 0;
1517
+ lo = (lo + Math.imul(al6, bl8)) | 0;
1518
+ mid = (mid + Math.imul(al6, bh8)) | 0;
1519
+ mid = (mid + Math.imul(ah6, bl8)) | 0;
1520
+ hi = (hi + Math.imul(ah6, bh8)) | 0;
1521
+ lo = (lo + Math.imul(al5, bl9)) | 0;
1522
+ mid = (mid + Math.imul(al5, bh9)) | 0;
1523
+ mid = (mid + Math.imul(ah5, bl9)) | 0;
1524
+ hi = (hi + Math.imul(ah5, bh9)) | 0;
1525
+ var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1526
+ c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
1522
1527
  w14 &= 0x3ffffff;
1523
1528
  /* k = 15 */
1524
1529
  lo = Math.imul(al9, bl6);
1525
1530
  mid = Math.imul(al9, bh6);
1526
- mid += Math.imul(ah9, bl6);
1531
+ mid = (mid + Math.imul(ah9, bl6)) | 0;
1527
1532
  hi = Math.imul(ah9, bh6);
1528
- lo += Math.imul(al8, bl7);
1529
- mid += Math.imul(al8, bh7);
1530
- mid += Math.imul(ah8, bl7);
1531
- hi += Math.imul(ah8, bh7);
1532
- lo += Math.imul(al7, bl8);
1533
- mid += Math.imul(al7, bh8);
1534
- mid += Math.imul(ah7, bl8);
1535
- hi += Math.imul(ah7, bh8);
1536
- lo += Math.imul(al6, bl9);
1537
- mid += Math.imul(al6, bh9);
1538
- mid += Math.imul(ah6, bl9);
1539
- hi += Math.imul(ah6, bh9);
1540
- var w15 = c + lo + ((mid & 0x1fff) << 13);
1541
- c = hi + (mid >>> 13) + (w15 >>> 26);
1533
+ lo = (lo + Math.imul(al8, bl7)) | 0;
1534
+ mid = (mid + Math.imul(al8, bh7)) | 0;
1535
+ mid = (mid + Math.imul(ah8, bl7)) | 0;
1536
+ hi = (hi + Math.imul(ah8, bh7)) | 0;
1537
+ lo = (lo + Math.imul(al7, bl8)) | 0;
1538
+ mid = (mid + Math.imul(al7, bh8)) | 0;
1539
+ mid = (mid + Math.imul(ah7, bl8)) | 0;
1540
+ hi = (hi + Math.imul(ah7, bh8)) | 0;
1541
+ lo = (lo + Math.imul(al6, bl9)) | 0;
1542
+ mid = (mid + Math.imul(al6, bh9)) | 0;
1543
+ mid = (mid + Math.imul(ah6, bl9)) | 0;
1544
+ hi = (hi + Math.imul(ah6, bh9)) | 0;
1545
+ var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1546
+ c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
1542
1547
  w15 &= 0x3ffffff;
1543
1548
  /* k = 16 */
1544
1549
  lo = Math.imul(al9, bl7);
1545
1550
  mid = Math.imul(al9, bh7);
1546
- mid += Math.imul(ah9, bl7);
1551
+ mid = (mid + Math.imul(ah9, bl7)) | 0;
1547
1552
  hi = Math.imul(ah9, bh7);
1548
- lo += Math.imul(al8, bl8);
1549
- mid += Math.imul(al8, bh8);
1550
- mid += Math.imul(ah8, bl8);
1551
- hi += Math.imul(ah8, bh8);
1552
- lo += Math.imul(al7, bl9);
1553
- mid += Math.imul(al7, bh9);
1554
- mid += Math.imul(ah7, bl9);
1555
- hi += Math.imul(ah7, bh9);
1556
- var w16 = c + lo + ((mid & 0x1fff) << 13);
1557
- c = hi + (mid >>> 13) + (w16 >>> 26);
1553
+ lo = (lo + Math.imul(al8, bl8)) | 0;
1554
+ mid = (mid + Math.imul(al8, bh8)) | 0;
1555
+ mid = (mid + Math.imul(ah8, bl8)) | 0;
1556
+ hi = (hi + Math.imul(ah8, bh8)) | 0;
1557
+ lo = (lo + Math.imul(al7, bl9)) | 0;
1558
+ mid = (mid + Math.imul(al7, bh9)) | 0;
1559
+ mid = (mid + Math.imul(ah7, bl9)) | 0;
1560
+ hi = (hi + Math.imul(ah7, bh9)) | 0;
1561
+ var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1562
+ c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
1558
1563
  w16 &= 0x3ffffff;
1559
1564
  /* k = 17 */
1560
1565
  lo = Math.imul(al9, bl8);
1561
1566
  mid = Math.imul(al9, bh8);
1562
- mid += Math.imul(ah9, bl8);
1567
+ mid = (mid + Math.imul(ah9, bl8)) | 0;
1563
1568
  hi = Math.imul(ah9, bh8);
1564
- lo += Math.imul(al8, bl9);
1565
- mid += Math.imul(al8, bh9);
1566
- mid += Math.imul(ah8, bl9);
1567
- hi += Math.imul(ah8, bh9);
1568
- var w17 = c + lo + ((mid & 0x1fff) << 13);
1569
- c = hi + (mid >>> 13) + (w17 >>> 26);
1569
+ lo = (lo + Math.imul(al8, bl9)) | 0;
1570
+ mid = (mid + Math.imul(al8, bh9)) | 0;
1571
+ mid = (mid + Math.imul(ah8, bl9)) | 0;
1572
+ hi = (hi + Math.imul(ah8, bh9)) | 0;
1573
+ var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1574
+ c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
1570
1575
  w17 &= 0x3ffffff;
1571
1576
  /* k = 18 */
1572
1577
  lo = Math.imul(al9, bl9);
1573
1578
  mid = Math.imul(al9, bh9);
1574
- mid += Math.imul(ah9, bl9);
1579
+ mid = (mid + Math.imul(ah9, bl9)) | 0;
1575
1580
  hi = Math.imul(ah9, bh9);
1576
- var w18 = c + lo + ((mid & 0x1fff) << 13);
1577
- c = hi + (mid >>> 13) + (w18 >>> 26);
1581
+ var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1582
+ c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
1578
1583
  w18 &= 0x3ffffff;
1579
1584
  o[0] = w0;
1580
1585
  o[1] = w1;
@@ -2097,6 +2102,10 @@
2097
2102
 
2098
2103
  assert(this.negative === 0, 'imaskn works only with positive numbers');
2099
2104
 
2105
+ if (this.length <= s) {
2106
+ return this;
2107
+ }
2108
+
2100
2109
  if (r !== 0) {
2101
2110
  s++;
2102
2111
  }
@@ -3279,7 +3288,7 @@
3279
3288
  };
3280
3289
 
3281
3290
  Red.prototype.pow = function pow (a, num) {
3282
- if (num.isZero()) return new BN(1);
3291
+ if (num.isZero()) return new BN(1).toRed(this);
3283
3292
  if (num.cmpn(1) === 0) return a.clone();
3284
3293
 
3285
3294
  var windowSize = 4;