private static async Task <byte[]> Receive(UdpClient client)
{
byte[] numArray;
Func <byte[], bool> u003cu003e9_50;
byte[][] numArray1;
byte[][] numArray2 = null;
byte num = 0;
byte num1 = 1;
do
{
UdpReceiveResult udpReceiveResult = await client.ReceiveAsync();
UdpReceiveResult udpReceiveResult1 = udpReceiveResult;
udpReceiveResult = new UdpReceiveResult();
byte[] buffer = udpReceiveResult1.Buffer;
using (BinaryReader binaryReader = new BinaryReader(new MemoryStream(buffer)))
{
int num2 = binaryReader.ReadInt32();
if (num2 != -1)
{
if (num2 != -2)
{
throw new Exception("Invalid Header");
}
binaryReader.ReadInt32();
num = binaryReader.ReadByte();
num1 = binaryReader.ReadByte();
binaryReader.ReadInt32();
if (numArray2 == null)
{
numArray2 = new byte[num1][];
}
byte[] numArray3 = new Byte[checked ((IntPtr)((long)((int)buffer.Length) - binaryReader.BaseStream.Position))];
Buffer.BlockCopy(buffer, (int)binaryReader.BaseStream.Position, numArray3, 0, (int)numArray3.Length);
numArray2[num] = numArray3;
numArray3 = null;
}
else
{
byte[] numArray4 = new Byte[checked ((IntPtr)((long)((int)buffer.Length) - binaryReader.BaseStream.Position))];
Buffer.BlockCopy(buffer, (int)binaryReader.BaseStream.Position, numArray4, 0, (int)numArray4.Length);
numArray = numArray4;
return(numArray);
}
}
binaryReader = null;
udpReceiveResult1 = new UdpReceiveResult();
buffer = null;
numArray1 = numArray2;
u003cu003e9_50 = SourceServerQuery.< > c.< > 9__5_0;
if (u003cu003e9_50 != null)
{
continue;
}
u003cu003e9_50 = (byte[] p) => p == null;
SourceServerQuery.< > c.< > 9__5_0 = u003cu003e9_50;
}while (numArray1.Any <byte[]>(u003cu003e9_50));
numArray = SourceServerQuery.Combine(numArray2);
return(numArray);
}