// Token: 0x060001F9 RID: 505 RVA: 0x00008320 File Offset: 0x00006520 private static object parseBinaryArray(int objRef) { List <object> list = new List <object>(); List <int> list2 = new List <int>(); byte b = Plist.objectTable[Plist.offsetTable[objRef]]; int num; int count = Plist.getCount(Plist.offsetTable[objRef], ref num); checked { if (count < 15) { num = Plist.offsetTable[objRef] + 1; } else { num = Plist.offsetTable[objRef] + 2 + Plist.RegulateNullBytes(BitConverter.GetBytes(count), 1).Length; } int i; for (i = num; i < num + count * Plist.objRefSize; i += Plist.objRefSize) { byte[] array = Plist.objectTable.GetRange(i, Plist.objRefSize).ToArray(); Array.Reverse(array); list2.Add(BitConverter.ToInt32(Plist.RegulateNullBytes(array, 4), 0)); } i = 0; while (i < count) { list.Add(RuntimeHelpers.GetObjectValue(Plist.parseBinary(list2[i]))); Math.Max(Interlocked.Increment(ref i), i - 1); } return(list); } }
// Token: 0x060001E3 RID: 483 RVA: 0x00007188 File Offset: 0x00005388 private static object readBinary(byte[] data) { Plist.offsetTable.Clear(); List <byte> offsetTableBytes = new List <byte>(); Plist.objectTable.Clear(); Plist.refCount = 0; Plist.objRefSize = 0; Plist.offsetByteSize = 0; Plist.offsetTableOffset = 0L; List <byte> list = new List <byte>(data); checked { List <byte> range = list.GetRange(list.Count - 32, 32); Plist.parseTrailer(range); Plist.objectTable = list.GetRange(0, (int)Plist.offsetTableOffset); offsetTableBytes = list.GetRange((int)Plist.offsetTableOffset, list.Count - (int)Plist.offsetTableOffset - 32); Plist.parseOffsetTable(offsetTableBytes); return(Plist.parseBinary(0)); } }