public void DoSplitter(int i1, int i2, int diff)
{
int num = this.realSizes[i1];
int num2 = this.realSizes[i2];
int num3 = this.minSizes[i1];
int num4 = this.minSizes[i2];
int num5 = this.maxSizes[i1];
int num6 = this.maxSizes[i2];
bool flag = false;
if (num3 == 0)
{
num3 = 0x10;
}
if (num4 == 0)
{
num4 = 0x10;
}
if ((num + diff) < num3)
{
diff -= num3 - num;
this.realSizes[i2] += this.realSizes[i1] - num3;
this.realSizes[i1] = num3;
if (i1 != 0)
{
this.DoSplitter(i1 - 1, i2, diff);
}
else
{
this.splitterInitialOffset -= diff;
}
flag = true;
}
else if ((num2 - diff) < num4)
{
diff -= num2 - num4;
this.realSizes[i1] += this.realSizes[i2] - num4;
this.realSizes[i2] = num4;
if (i2 != (this.realSizes.Length - 1))
{
this.DoSplitter(i1, i2 + 1, diff);
}
else
{
this.splitterInitialOffset -= diff;
}
flag = true;
}
if (!flag)
{
if ((num5 != 0) && ((num + diff) > num5))
{
diff -= this.realSizes[i1] - num5;
this.realSizes[i2] += this.realSizes[i1] - num5;
this.realSizes[i1] = num5;
if (i1 != 0)
{
this.DoSplitter(i1 - 1, i2, diff);
}
else
{
this.splitterInitialOffset -= diff;
}
flag = true;
}
else if ((num6 != 0) && ((num2 - diff) > num6))
{
diff -= num2 - num6;
this.realSizes[i1] += this.realSizes[i2] - num6;
this.realSizes[i2] = num6;
if (i2 != (this.realSizes.Length - 1))
{
this.DoSplitter(i1, i2 + 1, diff);
}
else
{
this.splitterInitialOffset -= diff;
}
flag = true;
}
}
if (!flag)
{
this.realSizes[i1] += diff;
this.realSizes[i2] -= diff;
}
}