private static void Unnormalize(uint[] un, out uint[] r, int shift) {
Debug.Assert(0 <= shift && shift < 32);
int length = GetLength(un);
r = new uint[length];
if (shift > 0) {
int lshift = 32 - shift;
uint carry = 0;
for (int i = length - 1; i >= 0; i--) {
uint uni = un[i];
r[i] = (uni >> shift) | carry;
carry = (uni << lshift);
}
} else {
for (int i = 0; i < length; i++) {
r[i] = un[i];
}
}
TestNormalize(r, un, shift);
}