// Token: 0x060012C4 RID: 4804 RVA: 0x0006D934 File Offset: 0x0006BB34
        private static void SkipProperty(PropTag propTag, byte[] recordBuffer, ref int propertyOffset)
        {
            int i   = 1;
            int num = 0;

            if (propTag.IsMultiValued())
            {
                DiffFileGenerator.GetV4IntegerValue(recordBuffer, ref propertyOffset, out i);
            }
            while (i > 0)
            {
                PropType propType = propTag.ValueType() & (PropType)(-4097);
                if (propType <= PropType.Boolean)
                {
                    if (propType != PropType.Int && propType != PropType.Boolean)
                    {
                        goto IL_69;
                    }
                    DiffFileGenerator.GetV4IntegerValue(recordBuffer, ref propertyOffset, out num);
                }
                else
                {
                    switch (propType)
                    {
                    case PropType.AnsiString:
                    case PropType.String:
                        while (recordBuffer[propertyOffset++] != 0)
                        {
                        }
                        break;

                    default:
                        if (propType != PropType.Binary)
                        {
                            goto IL_69;
                        }
                        goto IL_69;
                    }
                }
IL_78:
                i--;
                continue;
IL_69:
                DiffFileGenerator.GetV4IntegerValue(recordBuffer, ref propertyOffset, out num);
                propertyOffset += num;
                goto IL_78;
            }
        }
        // Token: 0x060012C5 RID: 4805 RVA: 0x0006D9C4 File Offset: 0x0006BBC4
        private static object GetPropertyValue(PropTag propTag, byte[] recordBuffer, ref int propertyOffset, bool isFromOldFile)
        {
            PropType propType = propTag.ValueType() & (PropType)(-4097);
            object   result;

            switch (propType)
            {
            case PropType.AnsiString:
            case PropType.String:
            {
                int num = propertyOffset;
                while (recordBuffer[propertyOffset] != 0)
                {
                    propertyOffset++;
                }
                result = Encoding.UTF8.GetString(recordBuffer, num, propertyOffset - num);
                break;
            }

            default:
            {
                if (propType != PropType.Binary)
                {
                    throw new NotSupportedException(string.Format("GetProperty doesn't support property type {0} now", propTag.ValueType()));
                }
                int num2;
                DiffFileGenerator.GetV4IntegerValue(recordBuffer, ref propertyOffset, out num2);
                if (num2 <= 0)
                {
                    OABLogger.LogRecord(TraceType.FatalTrace, "Invalid binary property data for tag {0} from {1} file . The offset is {2}. The binary blob is {3}", new object[]
                        {
                            propTag.ToString(),
                            isFromOldFile ? "old" : "new",
                            propertyOffset,
                            BitConverter.ToString(recordBuffer)
                        });
                    throw new InvalidDataException(string.Format("Invalid binary property data for tag {0}", propTag.ToString()));
                }
                byte[] array = new byte[num2];
                Array.Copy(recordBuffer, propertyOffset, array, 0, num2);
                propertyOffset += num2;
                result          = array;
                break;
            }
            }
            return(result);
        }