internal void GetIntegerParts(int signSrc, out int sign, out uint[] bits) {
if (this._iuLast == 0) {
if (this._uSmall <= 0x7fffffff) {
sign = (int)(signSrc * this._uSmall);
bits = null;
return;
}
if (this._rgu == null) {
this._rgu = new uint[] { this._uSmall };
}
else if (this._fWritable) {
this._rgu[0] = this._uSmall;
}
else if (this._rgu[0] != this._uSmall) {
this._rgu = new uint[] { this._uSmall };
}
}
sign = signSrc;
int num = (this._rgu.Length - this._iuLast) - 1;
if (num <= 1) {
if ((num == 0) || (this._rgu[this._iuLast + 1] == 0)) {
this._fWritable = false;
bits = this._rgu;
return;
}
if (this._fWritable) {
this._rgu[this._iuLast + 1] = 0;
this._fWritable = false;
bits = this._rgu;
return;
}
}
bits = this._rgu;
#if !(dotNET10 || dotNET11 || dotNETCF10 || dotNETCF20 || dotNETMF)
Array.Resize<uint>(ref bits, this._iuLast + 1);
#else
Resize(ref bits, this._iuLast + 1);
#endif
if (!this._fWritable) {
this._rgu = bits;
}
}