code: function mula32 (p, x, y, t, z) {
          t = t | 0;
          z = z | 0;
  
          var n = 31;
          var w = 0;
          var i = 0;
          for (; i < t; i++) {
              var zy = z * (y[i] & 0xFF);
              w += mula_small(p, p, i, x, n, zy) + (p[i+n] & 0xFF) + zy * (x[n] & 0xFF);
              p[i + n] = w & 0xFF;
              w >>= 8;
          }
          p[i + n] = (w + (p[i + n] & 0xFF)) & 0xFF;
          return w >> 8;
      }
docs: /* p += x * y * z  where z is a small integer
  x is size 32, y is size t, p is size 32+t
  y is allowed to overlap with p+32 if you don't care about the upper half