public void ShiftLeft(int cuShift, int cbitShift) {
int index = this._iuLast + cuShift;
uint num2 = 0;
if (cbitShift > 0) {
num2 = this.High >> (0x20 - cbitShift);
if (num2 != 0) {
index++;
}
}
if (index == 0) {
this._uSmall = this._uSmall << cbitShift;
}
else {
uint[] sourceArray = this._rgu;
bool flag = cuShift > 0;
if (!this._fWritable || (this._rgu.Length <= index)) {
this._rgu = new uint[index + 1];
this._fWritable = true;
flag = false;
}
if (this._iuLast == 0) {
if (num2 != 0) {
this._rgu[cuShift + 1] = num2;
}
this._rgu[cuShift] = this._uSmall << cbitShift;
}
else if (cbitShift == 0) {
Array.Copy(sourceArray, 0, this._rgu, cuShift, this._iuLast + 1);
}
else {
int num3 = this._iuLast;
int num4 = this._iuLast + cuShift;
if (num4 < index) {
this._rgu[index] = num2;
}
while (num3 > 0) {
this._rgu[num4] = (sourceArray[num3] << cbitShift) | (sourceArray[num3 - 1] >> (0x20 - cbitShift));
num3--;
num4--;
}
this._rgu[cuShift] = sourceArray[0] << cbitShift;
}
this._iuLast = index;
if (flag) {
Array.Clear(this._rgu, 0, cuShift);
}
}
}