'use strict' exports.umulTo10x10 = function (num1, num2, out) { var a = num1.words var b = num2.words var o = out.words var c = 0 var lo var mid var hi var a0 = a[0] | 0 var al0 = a0 & 0x1fff var ah0 = a0 >>> 13 var a1 = a[1] | 0 var al1 = a1 & 0x1fff var ah1 = a1 >>> 13 var a2 = a[2] | 0 var al2 = a2 & 0x1fff var ah2 = a2 >>> 13 var a3 = a[3] | 0 var al3 = a3 & 0x1fff var ah3 = a3 >>> 13 var a4 = a[4] | 0 var al4 = a4 & 0x1fff var ah4 = a4 >>> 13 var a5 = a[5] | 0 var al5 = a5 & 0x1fff var ah5 = a5 >>> 13 var a6 = a[6] | 0 var al6 = a6 & 0x1fff var ah6 = a6 >>> 13 var a7 = a[7] | 0 var al7 = a7 & 0x1fff var ah7 = a7 >>> 13 var a8 = a[8] | 0 var al8 = a8 & 0x1fff var ah8 = a8 >>> 13 var a9 = a[9] | 0 var al9 = a9 & 0x1fff var ah9 = a9 >>> 13 var b0 = b[0] | 0 var bl0 = b0 & 0x1fff var bh0 = b0 >>> 13 var b1 = b[1] | 0 var bl1 = b1 & 0x1fff var bh1 = b1 >>> 13 var b2 = b[2] | 0 var bl2 = b2 & 0x1fff var bh2 = b2 >>> 13 var b3 = b[3] | 0 var bl3 = b3 & 0x1fff var bh3 = b3 >>> 13 var b4 = b[4] | 0 var bl4 = b4 & 0x1fff var bh4 = b4 >>> 13 var b5 = b[5] | 0 var bl5 = b5 & 0x1fff var bh5 = b5 >>> 13 var b6 = b[6] | 0 var bl6 = b6 & 0x1fff var bh6 = b6 >>> 13 var b7 = b[7] | 0 var bl7 = b7 & 0x1fff var bh7 = b7 >>> 13 var b8 = b[8] | 0 var bl8 = b8 & 0x1fff var bh8 = b8 >>> 13 var b9 = b[9] | 0 var bl9 = b9 & 0x1fff var bh9 = b9 >>> 13 out.length = 19 /* k = 0 */ lo = Math.imul(al0, bl0) mid = Math.imul(al0, bh0) mid += Math.imul(ah0, bl0) hi = Math.imul(ah0, bh0) var w0 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w0 >>> 26) w0 &= 0x3ffffff /* k = 1 */ lo = Math.imul(al1, bl0) mid = Math.imul(al1, bh0) mid += Math.imul(ah1, bl0) hi = Math.imul(ah1, bh0) lo += Math.imul(al0, bl1) mid += Math.imul(al0, bh1) mid += Math.imul(ah0, bl1) hi += Math.imul(ah0, bh1) var w1 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w1 >>> 26) w1 &= 0x3ffffff /* k = 2 */ lo = Math.imul(al2, bl0) mid = Math.imul(al2, bh0) mid += Math.imul(ah2, bl0) hi = Math.imul(ah2, bh0) lo += Math.imul(al1, bl1) mid += Math.imul(al1, bh1) mid += Math.imul(ah1, bl1) hi += Math.imul(ah1, bh1) lo += Math.imul(al0, bl2) mid += Math.imul(al0, bh2) mid += Math.imul(ah0, bl2) hi += Math.imul(ah0, bh2) var w2 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w2 >>> 26) w2 &= 0x3ffffff /* k = 3 */ lo = Math.imul(al3, bl0) mid = Math.imul(al3, bh0) mid += Math.imul(ah3, bl0) hi = Math.imul(ah3, bh0) lo += Math.imul(al2, bl1) mid += Math.imul(al2, bh1) mid += Math.imul(ah2, bl1) hi += Math.imul(ah2, bh1) lo += Math.imul(al1, bl2) mid += Math.imul(al1, bh2) mid += Math.imul(ah1, bl2) hi += Math.imul(ah1, bh2) lo += Math.imul(al0, bl3) mid += Math.imul(al0, bh3) mid += Math.imul(ah0, bl3) hi += Math.imul(ah0, bh3) var w3 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w3 >>> 26) w3 &= 0x3ffffff /* k = 4 */ lo = Math.imul(al4, bl0) mid = Math.imul(al4, bh0) mid += Math.imul(ah4, bl0) hi = Math.imul(ah4, bh0) lo += Math.imul(al3, bl1) mid += Math.imul(al3, bh1) mid += Math.imul(ah3, bl1) hi += Math.imul(ah3, bh1) lo += Math.imul(al2, bl2) mid += Math.imul(al2, bh2) mid += Math.imul(ah2, bl2) hi += Math.imul(ah2, bh2) lo += Math.imul(al1, bl3) mid += Math.imul(al1, bh3) mid += Math.imul(ah1, bl3) hi += Math.imul(ah1, bh3) lo += Math.imul(al0, bl4) mid += Math.imul(al0, bh4) mid += Math.imul(ah0, bl4) hi += Math.imul(ah0, bh4) var w4 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w4 >>> 26) w4 &= 0x3ffffff /* k = 5 */ lo = Math.imul(al5, bl0) mid = Math.imul(al5, bh0) mid += Math.imul(ah5, bl0) hi = Math.imul(ah5, bh0) lo += Math.imul(al4, bl1) mid += Math.imul(al4, bh1) mid += Math.imul(ah4, bl1) hi += Math.imul(ah4, bh1) lo += Math.imul(al3, bl2) mid += Math.imul(al3, bh2) mid += Math.imul(ah3, bl2) hi += Math.imul(ah3, bh2) lo += Math.imul(al2, bl3) mid += Math.imul(al2, bh3) mid += Math.imul(ah2, bl3) hi += Math.imul(ah2, bh3) lo += Math.imul(al1, bl4) mid += Math.imul(al1, bh4) mid += Math.imul(ah1, bl4) hi += Math.imul(ah1, bh4) lo += Math.imul(al0, bl5) mid += Math.imul(al0, bh5) mid += Math.imul(ah0, bl5) hi += Math.imul(ah0, bh5) var w5 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w5 >>> 26) w5 &= 0x3ffffff /* k = 6 */ lo = Math.imul(al6, bl0) mid = Math.imul(al6, bh0) mid += Math.imul(ah6, bl0) hi = Math.imul(ah6, bh0) lo += Math.imul(al5, bl1) mid += Math.imul(al5, bh1) mid += Math.imul(ah5, bl1) hi += Math.imul(ah5, bh1) lo += Math.imul(al4, bl2) mid += Math.imul(al4, bh2) mid += Math.imul(ah4, bl2) hi += Math.imul(ah4, bh2) lo += Math.imul(al3, bl3) mid += Math.imul(al3, bh3) mid += Math.imul(ah3, bl3) hi += Math.imul(ah3, bh3) lo += Math.imul(al2, bl4) mid += Math.imul(al2, bh4) mid += Math.imul(ah2, bl4) hi += Math.imul(ah2, bh4) lo += Math.imul(al1, bl5) mid += Math.imul(al1, bh5) mid += Math.imul(ah1, bl5) hi += Math.imul(ah1, bh5) lo += Math.imul(al0, bl6) mid += Math.imul(al0, bh6) mid += Math.imul(ah0, bl6) hi += Math.imul(ah0, bh6) var w6 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w6 >>> 26) w6 &= 0x3ffffff /* k = 7 */ lo = Math.imul(al7, bl0) mid = Math.imul(al7, bh0) mid += Math.imul(ah7, bl0) hi = Math.imul(ah7, bh0) lo += Math.imul(al6, bl1) mid += Math.imul(al6, bh1) mid += Math.imul(ah6, bl1) hi += Math.imul(ah6, bh1) lo += Math.imul(al5, bl2) mid += Math.imul(al5, bh2) mid += Math.imul(ah5, bl2) hi += Math.imul(ah5, bh2) lo += Math.imul(al4, bl3) mid += Math.imul(al4, bh3) mid += Math.imul(ah4, bl3) hi += Math.imul(ah4, bh3) lo += Math.imul(al3, bl4) mid += Math.imul(al3, bh4) mid += Math.imul(ah3, bl4) hi += Math.imul(ah3, bh4) lo += Math.imul(al2, bl5) mid += Math.imul(al2, bh5) mid += Math.imul(ah2, bl5) hi += Math.imul(ah2, bh5) lo += Math.imul(al1, bl6) mid += Math.imul(al1, bh6) mid += Math.imul(ah1, bl6) hi += Math.imul(ah1, bh6) lo += Math.imul(al0, bl7) mid += Math.imul(al0, bh7) mid += Math.imul(ah0, bl7) hi += Math.imul(ah0, bh7) var w7 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w7 >>> 26) w7 &= 0x3ffffff /* k = 8 */ lo = Math.imul(al8, bl0) mid = Math.imul(al8, bh0) mid += Math.imul(ah8, bl0) hi = Math.imul(ah8, bh0) lo += Math.imul(al7, bl1) mid += Math.imul(al7, bh1) mid += Math.imul(ah7, bl1) hi += Math.imul(ah7, bh1) lo += Math.imul(al6, bl2) mid += Math.imul(al6, bh2) mid += Math.imul(ah6, bl2) hi += Math.imul(ah6, bh2) lo += Math.imul(al5, bl3) mid += Math.imul(al5, bh3) mid += Math.imul(ah5, bl3) hi += Math.imul(ah5, bh3) lo += Math.imul(al4, bl4) mid += Math.imul(al4, bh4) mid += Math.imul(ah4, bl4) hi += Math.imul(ah4, bh4) lo += Math.imul(al3, bl5) mid += Math.imul(al3, bh5) mid += Math.imul(ah3, bl5) hi += Math.imul(ah3, bh5) lo += Math.imul(al2, bl6) mid += Math.imul(al2, bh6) mid += Math.imul(ah2, bl6) hi += Math.imul(ah2, bh6) lo += Math.imul(al1, bl7) mid += Math.imul(al1, bh7) mid += Math.imul(ah1, bl7) hi += Math.imul(ah1, bh7) lo += Math.imul(al0, bl8) mid += Math.imul(al0, bh8) mid += Math.imul(ah0, bl8) hi += Math.imul(ah0, bh8) var w8 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w8 >>> 26) w8 &= 0x3ffffff /* k = 9 */ lo = Math.imul(al9, bl0) mid = Math.imul(al9, bh0) mid += Math.imul(ah9, bl0) hi = Math.imul(ah9, bh0) lo += Math.imul(al8, bl1) mid += Math.imul(al8, bh1) mid += Math.imul(ah8, bl1) hi += Math.imul(ah8, bh1) lo += Math.imul(al7, bl2) mid += Math.imul(al7, bh2) mid += Math.imul(ah7, bl2) hi += Math.imul(ah7, bh2) lo += Math.imul(al6, bl3) mid += Math.imul(al6, bh3) mid += Math.imul(ah6, bl3) hi += Math.imul(ah6, bh3) lo += Math.imul(al5, bl4) mid += Math.imul(al5, bh4) mid += Math.imul(ah5, bl4) hi += Math.imul(ah5, bh4) lo += Math.imul(al4, bl5) mid += Math.imul(al4, bh5) mid += Math.imul(ah4, bl5) hi += Math.imul(ah4, bh5) lo += Math.imul(al3, bl6) mid += Math.imul(al3, bh6) mid += Math.imul(ah3, bl6) hi += Math.imul(ah3, bh6) lo += Math.imul(al2, bl7) mid += Math.imul(al2, bh7) mid += Math.imul(ah2, bl7) hi += Math.imul(ah2, bh7) lo += Math.imul(al1, bl8) mid += Math.imul(al1, bh8) mid += Math.imul(ah1, bl8) hi += Math.imul(ah1, bh8) lo += Math.imul(al0, bl9) mid += Math.imul(al0, bh9) mid += Math.imul(ah0, bl9) hi += Math.imul(ah0, bh9) var w9 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w9 >>> 26) w9 &= 0x3ffffff /* k = 10 */ lo = Math.imul(al9, bl1) mid = Math.imul(al9, bh1) mid += Math.imul(ah9, bl1) hi = Math.imul(ah9, bh1) lo += Math.imul(al8, bl2) mid += Math.imul(al8, bh2) mid += Math.imul(ah8, bl2) hi += Math.imul(ah8, bh2) lo += Math.imul(al7, bl3) mid += Math.imul(al7, bh3) mid += Math.imul(ah7, bl3) hi += Math.imul(ah7, bh3) lo += Math.imul(al6, bl4) mid += Math.imul(al6, bh4) mid += Math.imul(ah6, bl4) hi += Math.imul(ah6, bh4) lo += Math.imul(al5, bl5) mid += Math.imul(al5, bh5) mid += Math.imul(ah5, bl5) hi += Math.imul(ah5, bh5) lo += Math.imul(al4, bl6) mid += Math.imul(al4, bh6) mid += Math.imul(ah4, bl6) hi += Math.imul(ah4, bh6) lo += Math.imul(al3, bl7) mid += Math.imul(al3, bh7) mid += Math.imul(ah3, bl7) hi += Math.imul(ah3, bh7) lo += Math.imul(al2, bl8) mid += Math.imul(al2, bh8) mid += Math.imul(ah2, bl8) hi += Math.imul(ah2, bh8) lo += Math.imul(al1, bl9) mid += Math.imul(al1, bh9) mid += Math.imul(ah1, bl9) hi += Math.imul(ah1, bh9) var w10 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w10 >>> 26) w10 &= 0x3ffffff /* k = 11 */ lo = Math.imul(al9, bl2) mid = Math.imul(al9, bh2) mid += Math.imul(ah9, bl2) hi = Math.imul(ah9, bh2) lo += Math.imul(al8, bl3) mid += Math.imul(al8, bh3) mid += Math.imul(ah8, bl3) hi += Math.imul(ah8, bh3) lo += Math.imul(al7, bl4) mid += Math.imul(al7, bh4) mid += Math.imul(ah7, bl4) hi += Math.imul(ah7, bh4) lo += Math.imul(al6, bl5) mid += Math.imul(al6, bh5) mid += Math.imul(ah6, bl5) hi += Math.imul(ah6, bh5) lo += Math.imul(al5, bl6) mid += Math.imul(al5, bh6) mid += Math.imul(ah5, bl6) hi += Math.imul(ah5, bh6) lo += Math.imul(al4, bl7) mid += Math.imul(al4, bh7) mid += Math.imul(ah4, bl7) hi += Math.imul(ah4, bh7) lo += Math.imul(al3, bl8) mid += Math.imul(al3, bh8) mid += Math.imul(ah3, bl8) hi += Math.imul(ah3, bh8) lo += Math.imul(al2, bl9) mid += Math.imul(al2, bh9) mid += Math.imul(ah2, bl9) hi += Math.imul(ah2, bh9) var w11 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w11 >>> 26) w11 &= 0x3ffffff /* k = 12 */ lo = Math.imul(al9, bl3) mid = Math.imul(al9, bh3) mid += Math.imul(ah9, bl3) hi = Math.imul(ah9, bh3) lo += Math.imul(al8, bl4) mid += Math.imul(al8, bh4) mid += Math.imul(ah8, bl4) hi += Math.imul(ah8, bh4) lo += Math.imul(al7, bl5) mid += Math.imul(al7, bh5) mid += Math.imul(ah7, bl5) hi += Math.imul(ah7, bh5) lo += Math.imul(al6, bl6) mid += Math.imul(al6, bh6) mid += Math.imul(ah6, bl6) hi += Math.imul(ah6, bh6) lo += Math.imul(al5, bl7) mid += Math.imul(al5, bh7) mid += Math.imul(ah5, bl7) hi += Math.imul(ah5, bh7) lo += Math.imul(al4, bl8) mid += Math.imul(al4, bh8) mid += Math.imul(ah4, bl8) hi += Math.imul(ah4, bh8) lo += Math.imul(al3, bl9) mid += Math.imul(al3, bh9) mid += Math.imul(ah3, bl9) hi += Math.imul(ah3, bh9) var w12 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w12 >>> 26) w12 &= 0x3ffffff /* k = 13 */ lo = Math.imul(al9, bl4) mid = Math.imul(al9, bh4) mid += Math.imul(ah9, bl4) hi = Math.imul(ah9, bh4) lo += Math.imul(al8, bl5) mid += Math.imul(al8, bh5) mid += Math.imul(ah8, bl5) hi += Math.imul(ah8, bh5) lo += Math.imul(al7, bl6) mid += Math.imul(al7, bh6) mid += Math.imul(ah7, bl6) hi += Math.imul(ah7, bh6) lo += Math.imul(al6, bl7) mid += Math.imul(al6, bh7) mid += Math.imul(ah6, bl7) hi += Math.imul(ah6, bh7) lo += Math.imul(al5, bl8) mid += Math.imul(al5, bh8) mid += Math.imul(ah5, bl8) hi += Math.imul(ah5, bh8) lo += Math.imul(al4, bl9) mid += Math.imul(al4, bh9) mid += Math.imul(ah4, bl9) hi += Math.imul(ah4, bh9) var w13 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w13 >>> 26) w13 &= 0x3ffffff /* k = 14 */ lo = Math.imul(al9, bl5) mid = Math.imul(al9, bh5) mid += Math.imul(ah9, bl5) hi = Math.imul(ah9, bh5) lo += Math.imul(al8, bl6) mid += Math.imul(al8, bh6) mid += Math.imul(ah8, bl6) hi += Math.imul(ah8, bh6) lo += Math.imul(al7, bl7) mid += Math.imul(al7, bh7) mid += Math.imul(ah7, bl7) hi += Math.imul(ah7, bh7) lo += Math.imul(al6, bl8) mid += Math.imul(al6, bh8) mid += Math.imul(ah6, bl8) hi += Math.imul(ah6, bh8) lo += Math.imul(al5, bl9) mid += Math.imul(al5, bh9) mid += Math.imul(ah5, bl9) hi += Math.imul(ah5, bh9) var w14 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w14 >>> 26) w14 &= 0x3ffffff /* k = 15 */ lo = Math.imul(al9, bl6) mid = Math.imul(al9, bh6) mid += Math.imul(ah9, bl6) hi = Math.imul(ah9, bh6) lo += Math.imul(al8, bl7) mid += Math.imul(al8, bh7) mid += Math.imul(ah8, bl7) hi += Math.imul(ah8, bh7) lo += Math.imul(al7, bl8) mid += Math.imul(al7, bh8) mid += Math.imul(ah7, bl8) hi += Math.imul(ah7, bh8) lo += Math.imul(al6, bl9) mid += Math.imul(al6, bh9) mid += Math.imul(ah6, bl9) hi += Math.imul(ah6, bh9) var w15 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w15 >>> 26) w15 &= 0x3ffffff /* k = 16 */ lo = Math.imul(al9, bl7) mid = Math.imul(al9, bh7) mid += Math.imul(ah9, bl7) hi = Math.imul(ah9, bh7) lo += Math.imul(al8, bl8) mid += Math.imul(al8, bh8) mid += Math.imul(ah8, bl8) hi += Math.imul(ah8, bh8) lo += Math.imul(al7, bl9) mid += Math.imul(al7, bh9) mid += Math.imul(ah7, bl9) hi += Math.imul(ah7, bh9) var w16 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w16 >>> 26) w16 &= 0x3ffffff /* k = 17 */ lo = Math.imul(al9, bl8) mid = Math.imul(al9, bh8) mid += Math.imul(ah9, bl8) hi = Math.imul(ah9, bh8) lo += Math.imul(al8, bl9) mid += Math.imul(al8, bh9) mid += Math.imul(ah8, bl9) hi += Math.imul(ah8, bh9) var w17 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w17 >>> 26) w17 &= 0x3ffffff /* k = 18 */ lo = Math.imul(al9, bl9) mid = Math.imul(al9, bh9) mid += Math.imul(ah9, bl9) hi = Math.imul(ah9, bh9) var w18 = c + lo + ((mid & 0x1fff) << 13) c = hi + (mid >>> 13) + (w18 >>> 26) w18 &= 0x3ffffff o[0] = w0 o[1] = w1 o[2] = w2 o[3] = w3 o[4] = w4 o[5] = w5 o[6] = w6 o[7] = w7 o[8] = w8 o[9] = w9 o[10] = w10 o[11] = w11 o[12] = w12 o[13] = w13 o[14] = w14 o[15] = w15 o[16] = w16 o[17] = w17 o[18] = w18 if (c !== 0) { o[19] = c out.length++ } return out }