public static uint ip(uint[] w, uint n, uint x, uint y, uint c)
{
var xl = x & bdm;
var xh = x >> bd;
var yl = y & bdm;
var yh = y >> bd;
var m = xh * yl + yh * xl;
var l = xl * yl + ((m & bdm) << bd) + w[n] + c;
w[n] = (uint)(l & bm);
c = (uint)(xh * yh + (m >> bd) + (l >> bs));
return c;
}