private void BlockRead(BinaryReader reader, Array array, int dataSize)
{
int i = Buffer.ByteLength(array);
if (this.arrayBuffer == null || (i > this.arrayBuffer.Length && this.arrayBuffer.Length != this.ArrayBufferLength))
{
this.arrayBuffer = new byte[(i > this.ArrayBufferLength) ? this.ArrayBufferLength : i];
}
int num = 0;
while (i > 0)
{
int num2 = (i >= this.arrayBuffer.Length) ? this.arrayBuffer.Length : i;
int num3 = 0;
do
{
int num4 = reader.Read(this.arrayBuffer, num3, num2 - num3);
if (num4 == 0)
{
break;
}
num3 += num4;
}while (num3 < num2);
IL_A6:
if (!BitConverter.IsLittleEndian && dataSize > 1)
{
BinaryCommon.SwapBytes(this.arrayBuffer, num2, dataSize);
}
Buffer.BlockCopy(this.arrayBuffer, 0, array, num, num2);
i -= num2;
num += num2;
continue;
goto IL_A6;
}
}