public static void WriteString(string value, ProtoWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } if (writer.wireType != ProtoBuf.WireType.String) { throw ProtoWriter.CreateException(writer); } if (value == null) { throw new ArgumentNullException("value"); } if (value.Length == 0) { ProtoWriter.WriteUInt32Variant(0, writer); writer.wireType = ProtoBuf.WireType.None; return; } int byteCount = ProtoWriter.encoding.GetByteCount(value); ProtoWriter.WriteUInt32Variant((uint)byteCount, writer); ProtoWriter.DemandSpace(byteCount, writer); int bytes = ProtoWriter.encoding.GetBytes(value, 0, value.Length, writer.ioBuffer, writer.ioIndex); ProtoWriter.IncrementedAndReset(bytes, writer); }
private static void CopyRawFromStream(Stream source, ProtoWriter writer) { byte[] numArray = writer.ioBuffer; int length = (int)numArray.Length - writer.ioIndex; int num = 1; while (length > 0) { int num1 = source.Read(numArray, writer.ioIndex, length); num = num1; if (num1 <= 0) { break; } writer.ioIndex += num; writer.position += num; length -= num; } if (num <= 0) { return; } if (writer.flushLock == 0) { ProtoWriter.Flush(writer); while (true) { int num2 = source.Read(numArray, 0, (int)numArray.Length); num = num2; if (num2 <= 0) { break; } writer.dest.Write(numArray, 0, num); writer.position += num; } return; } while (true) { ProtoWriter.DemandSpace(128, writer); int num3 = source.Read(writer.ioBuffer, writer.ioIndex, (int)writer.ioBuffer.Length - writer.ioIndex); num = num3; if (num3 <= 0) { break; } writer.position += num; writer.ioIndex += num; } }
public static void WriteBytes(byte[] data, int offset, int length, ProtoWriter writer) { if (data == null) { throw new ArgumentNullException("data"); } if (writer == null) { throw new ArgumentNullException("writer"); } switch (writer.wireType) { case WireType.Fixed64: if (length != 8) { throw new ArgumentException("length"); } goto IL_D5; case WireType.String: ProtoWriter.WriteUInt32Variant((uint)length, writer); writer.wireType = WireType.None; if (length == 0) { return; } if (writer.flushLock != 0 || length <= writer.ioBuffer.Length) { goto IL_D5; } ProtoWriter.Flush(writer); writer.dest.Write(data, offset, length); writer.position += length; return; case WireType.Fixed32: if (length != 4) { throw new ArgumentException("length"); } goto IL_D5; } throw ProtoWriter.CreateException(writer); IL_D5: ProtoWriter.DemandSpace(length, writer); Helpers.BlockCopy(data, offset, writer.ioBuffer, writer.ioIndex, length); ProtoWriter.IncrementedAndReset(length, writer); }
private static void WriteUInt64Variant(ulong value, ProtoWriter writer) { ProtoWriter.DemandSpace(10, writer); int num = 0; do { writer.ioBuffer[writer.ioIndex++] = (byte)((value & 127uL) | 128uL); num++; }while ((value >>= 7) != 0uL); byte[] expr_51_cp_0 = writer.ioBuffer; int expr_51_cp_1 = writer.ioIndex - 1; expr_51_cp_0[expr_51_cp_1] &= 127; writer.position += num; }
// Token: 0x060034D8 RID: 13528 RVA: 0x00132844 File Offset: 0x00130C44 private static void WriteUInt64Variant(ulong value, ProtoWriter writer) { ProtoWriter.DemandSpace(10, writer); int num = 0; do { writer.ioBuffer[writer.ioIndex++] = (byte)((value & 127UL) | 128UL); num++; }while ((value >>= 7) != 0UL); byte[] array = writer.ioBuffer; int num2 = writer.ioIndex - 1; array[num2] &= 127; writer.position += num; }
// Token: 0x06000146 RID: 326 RVA: 0x0000D348 File Offset: 0x0000B548 private static SubItemToken StartSubItem(object instance, ProtoWriter writer, bool allowFixed) { if (writer == null) { throw new ArgumentNullException("writer"); } int num = writer.depth + 1; writer.depth = num; if (num > 25) { writer.CheckRecursionStackAndPush(instance); } if (writer.packedFieldNumber != 0) { throw new InvalidOperationException("Cannot begin a sub-item while performing packed encoding"); } switch (writer.wireType) { case WireType.String: writer.wireType = WireType.None; ProtoWriter.DemandSpace(32, writer); writer.flushLock++; writer.position++; num = writer.ioIndex; writer.ioIndex = num + 1; return(new SubItemToken(num)); case WireType.StartGroup: writer.wireType = WireType.None; return(new SubItemToken(-writer.fieldNumber)); case WireType.Fixed32: { if (!allowFixed) { throw ProtoWriter.CreateException(writer); } ProtoWriter.DemandSpace(32, writer); writer.flushLock++; SubItemToken result = new SubItemToken(writer.ioIndex); ProtoWriter.IncrementedAndReset(4, writer); return(result); } } throw ProtoWriter.CreateException(writer); }
// Token: 0x060034C3 RID: 13507 RVA: 0x001320A0 File Offset: 0x001304A0 public static void WriteBytes(byte[] data, int offset, int length, ProtoWriter writer) { if (data == null) { throw new ArgumentNullException("data"); } if (writer == null) { throw new ArgumentNullException("writer"); } WireType wireType = writer.wireType; if (wireType != WireType.Fixed32) { if (wireType != WireType.Fixed64) { if (wireType != WireType.String) { throw ProtoWriter.CreateException(writer); } ProtoWriter.WriteUInt32Variant((uint)length, writer); writer.wireType = WireType.None; if (length == 0) { return; } if (writer.flushLock == 0 && length > writer.ioBuffer.Length) { ProtoWriter.Flush(writer); writer.dest.Write(data, offset, length); writer.position += length; return; } } else if (length != 8) { throw new ArgumentException("length"); } } else if (length != 4) { throw new ArgumentException("length"); } ProtoWriter.DemandSpace(length, writer); Helpers.BlockCopy(data, offset, writer.ioBuffer, writer.ioIndex, length); ProtoWriter.IncrementedAndReset(length, writer); }
// Token: 0x06000153 RID: 339 RVA: 0x0000D700 File Offset: 0x0000B900 private static void WriteUInt32Variant(uint value, ProtoWriter writer) { ProtoWriter.DemandSpace(5, writer); int num = 0; do { byte[] array = writer.ioBuffer; int num2 = writer.ioIndex; writer.ioIndex = num2 + 1; array[num2] = (byte)((value & 127u) | 128u); num++; }while ((value >>= 7) != 0u); byte[] array2 = writer.ioBuffer; int num3 = writer.ioIndex - 1; array2[num3] &= 127; writer.position += num; }
private static void WriteUInt32Variant(uint value, ProtoWriter writer) { UInt32 num; ProtoWriter.DemandSpace(5, writer); int num1 = 0; do { byte[] numArray = writer.ioBuffer; ProtoWriter protoWriter = writer; int num2 = protoWriter.ioIndex; int num3 = num2; protoWriter.ioIndex = num2 + 1; numArray[num3] = (byte)(value & 127 | 128); num1++; num = value >> 7; value = num; }while (num != 0); ref byte numPointer = ref writer.ioBuffer[writer.ioIndex - 1];
private static void CopyRawFromStream(Stream source, ProtoWriter writer) { byte[] array = writer.ioBuffer; int num = array.Length - writer.ioIndex; int num2 = 1; while (num > 0 && (num2 = source.Read(array, writer.ioIndex, num)) > 0) { writer.ioIndex += num2; writer.position += num2; num -= num2; } if (num2 <= 0) { return; } if (writer.flushLock == 0) { ProtoWriter.Flush(writer); while ((num2 = source.Read(array, 0, array.Length)) > 0) { writer.dest.Write(array, 0, num2); writer.position += num2; } } else { while (true) { ProtoWriter.DemandSpace(128, writer); if ((num2 = source.Read(writer.ioBuffer, writer.ioIndex, writer.ioBuffer.Length - writer.ioIndex)) <= 0) { break; } writer.position += num2; writer.ioIndex += num2; } } }
public static void WriteInt64(long value, ProtoWriter writer) { byte[] numArray; int num; if (writer == null) { throw new ArgumentNullException("writer"); } ProtoBuf.WireType wireType = writer.wireType; switch (wireType) { case ProtoBuf.WireType.Variant: { if (value >= (long)0) { ProtoWriter.WriteUInt64Variant((ulong)value, writer); writer.wireType = ProtoBuf.WireType.None; return; } ProtoWriter.DemandSpace(10, writer); numArray = writer.ioBuffer; num = writer.ioIndex; numArray[num] = (byte)(value | (long)128); numArray[num + 1] = (byte)((int)(value >> 7) | 128); numArray[num + 2] = (byte)((int)(value >> 14) | 128); numArray[num + 3] = (byte)((int)(value >> 21) | 128); numArray[num + 4] = (byte)((int)(value >> 28) | 128); numArray[num + 5] = (byte)((int)(value >> 35) | 128); numArray[num + 6] = (byte)((int)(value >> 42) | 128); numArray[num + 7] = (byte)((int)(value >> 49) | 128); numArray[num + 8] = (byte)((int)(value >> 56) | 128); numArray[num + 9] = 1; ProtoWriter.IncrementedAndReset(10, writer); return; } case ProtoBuf.WireType.Fixed64: { ProtoWriter.DemandSpace(8, writer); numArray = writer.ioBuffer; num = writer.ioIndex; numArray[num] = (byte)value; numArray[num + 1] = (byte)(value >> 8); numArray[num + 2] = (byte)(value >> 16); numArray[num + 3] = (byte)(value >> 24); numArray[num + 4] = (byte)(value >> 32); numArray[num + 5] = (byte)(value >> 40); numArray[num + 6] = (byte)(value >> 48); numArray[num + 7] = (byte)(value >> 56); ProtoWriter.IncrementedAndReset(8, writer); return; } default: { if (wireType == ProtoBuf.WireType.Fixed32) { break; } else { if (wireType != ProtoBuf.WireType.SignedVariant) { throw ProtoWriter.CreateException(writer); } ProtoWriter.WriteUInt64Variant(ProtoWriter.Zig(value), writer); writer.wireType = ProtoBuf.WireType.None; return; } } } ProtoWriter.WriteInt32(checked ((int)value), writer); }
public static void WriteInt32(int value, ProtoWriter writer) { byte[] numArray; int num; if (writer == null) { throw new ArgumentNullException("writer"); } ProtoBuf.WireType wireType = writer.wireType; switch (wireType) { case ProtoBuf.WireType.Variant: { if (value >= 0) { ProtoWriter.WriteUInt32Variant((uint)value, writer); writer.wireType = ProtoBuf.WireType.None; return; } ProtoWriter.DemandSpace(10, writer); numArray = writer.ioBuffer; num = writer.ioIndex; numArray[num] = (byte)(value | 128); numArray[num + 1] = (byte)(value >> 7 | 128); numArray[num + 2] = (byte)(value >> 14 | 128); numArray[num + 3] = (byte)(value >> 21 | 128); numArray[num + 4] = (byte)(value >> 28 | 128); int num1 = 255; byte num2 = (byte)num1; numArray[num + 8] = (byte)num1; byte num3 = num2; byte num4 = num3; numArray[num + 7] = num3; byte num5 = num4; byte num6 = num5; numArray[num + 6] = num5; numArray[num + 5] = num6; numArray[num + 9] = 1; ProtoWriter.IncrementedAndReset(10, writer); return; } case ProtoBuf.WireType.Fixed64: { ProtoWriter.DemandSpace(8, writer); numArray = writer.ioBuffer; num = writer.ioIndex; numArray[num] = (byte)value; numArray[num + 1] = (byte)(value >> 8); numArray[num + 2] = (byte)(value >> 16); numArray[num + 3] = (byte)(value >> 24); int num7 = 0; byte num8 = (byte)num7; numArray[num + 7] = (byte)num7; byte num9 = num8; byte num10 = num9; numArray[num + 6] = num9; byte num11 = num10; byte num12 = num11; numArray[num + 5] = num11; numArray[num + 4] = num12; ProtoWriter.IncrementedAndReset(8, writer); return; } default: { if (wireType == ProtoBuf.WireType.Fixed32) { break; } else { if (wireType != ProtoBuf.WireType.SignedVariant) { throw ProtoWriter.CreateException(writer); } ProtoWriter.WriteUInt32Variant(ProtoWriter.Zig(value), writer); writer.wireType = ProtoBuf.WireType.None; return; } } } ProtoWriter.DemandSpace(4, writer); ProtoWriter.WriteInt32ToBuffer(value, writer.ioBuffer, writer.ioIndex); ProtoWriter.IncrementedAndReset(4, writer); }
public static void WriteBytes(byte[] data, int offset, int length, ProtoWriter writer) { if (data == null) { throw new ArgumentNullException("data"); } if (writer == null) { throw new ArgumentNullException("writer"); } switch (writer.wireType) { case ProtoBuf.WireType.Fixed64: { if (length == 8) { break; } throw new ArgumentException("length"); } case ProtoBuf.WireType.String: { ProtoWriter.WriteUInt32Variant((uint)length, writer); writer.wireType = ProtoBuf.WireType.None; if (length == 0) { return; } if (writer.flushLock != 0 || length <= (int)writer.ioBuffer.Length) { break; } ProtoWriter.Flush(writer); writer.dest.Write(data, offset, length); writer.position += length; return; } case ProtoBuf.WireType.StartGroup: case ProtoBuf.WireType.EndGroup: { throw ProtoWriter.CreateException(writer); } case ProtoBuf.WireType.Fixed32: { if (length == 4) { break; } throw new ArgumentException("length"); } default: { throw ProtoWriter.CreateException(writer); } } ProtoWriter.DemandSpace(length, writer); Helpers.BlockCopy(data, offset, writer.ioBuffer, writer.ioIndex, length); ProtoWriter.IncrementedAndReset(length, writer); }
private static SubItemToken StartSubItem(object instance, ProtoWriter writer, bool allowFixed) { if (writer == null) { throw new ArgumentNullException("writer"); } ProtoWriter protoWriter = writer; int num = protoWriter.depth + 1; int num1 = num; protoWriter.depth = num; if (num1 > 25) { writer.CheckRecursionStackAndPush(instance); } if (writer.packedFieldNumber != 0) { throw new InvalidOperationException("Cannot begin a sub-item while performing packed encoding"); } switch (writer.wireType) { case ProtoBuf.WireType.String: { writer.wireType = ProtoBuf.WireType.None; ProtoWriter.DemandSpace(32, writer); writer.flushLock++; writer.position++; ProtoWriter protoWriter1 = writer; int num2 = protoWriter1.ioIndex; int num3 = num2; protoWriter1.ioIndex = num2 + 1; return(new SubItemToken(num3)); } case ProtoBuf.WireType.StartGroup: { writer.wireType = ProtoBuf.WireType.None; return(new SubItemToken(-writer.fieldNumber)); } case ProtoBuf.WireType.EndGroup: { throw ProtoWriter.CreateException(writer); } case ProtoBuf.WireType.Fixed32: { if (!allowFixed) { throw ProtoWriter.CreateException(writer); } ProtoWriter.DemandSpace(32, writer); writer.flushLock++; SubItemToken subItemToken = new SubItemToken(writer.ioIndex); ProtoWriter.IncrementedAndReset(4, writer); return(subItemToken); } default: { throw ProtoWriter.CreateException(writer); } } }
private static void EndSubItem(SubItemToken token, ProtoWriter writer, PrefixStyle style) { int num; UInt32 num1; if (writer == null) { throw new ArgumentNullException("writer"); } if (writer.wireType != ProtoBuf.WireType.None) { throw ProtoWriter.CreateException(writer); } int num2 = token.@value; if (writer.depth <= 0) { throw ProtoWriter.CreateException(writer); } ProtoWriter protoWriter = writer; int num3 = protoWriter.depth; int num4 = num3; protoWriter.depth = num3 - 1; if (num4 > 25) { writer.PopRecursionStack(); } writer.packedFieldNumber = 0; if (num2 < 0) { ProtoWriter.WriteHeaderCore(-num2, ProtoBuf.WireType.EndGroup, writer); writer.wireType = ProtoBuf.WireType.None; return; } switch (style) { case PrefixStyle.Base128: { num = writer.ioIndex - num2 - 1; int num5 = 0; uint num6 = (uint)num; while (true) { UInt32 num7 = num6 >> 7; num6 = num7; if (num7 == 0) { break; } num5++; } if (num5 != 0) { ProtoWriter.DemandSpace(num5, writer); byte[] numArray = writer.ioBuffer; Helpers.BlockCopy(numArray, num2 + 1, numArray, num2 + 1 + num5, num); num6 = (uint)num; do { int num8 = num2; num2 = num8 + 1; numArray[num8] = (byte)(num6 & 127 | 128); num1 = num6 >> 7; num6 = num1; }while (num1 != 0); numArray[num2 - 1] = (byte)(numArray[num2 - 1] & -129); writer.position += num5; writer.ioIndex += num5; break; } else { writer.ioBuffer[num2] = (byte)(num & 127); break; } } case PrefixStyle.Fixed32: { num = writer.ioIndex - num2 - 4; ProtoWriter.WriteInt32ToBuffer(num, writer.ioBuffer, num2); break; } case PrefixStyle.Fixed32BigEndian: { num = writer.ioIndex - num2 - 4; byte[] numArray1 = writer.ioBuffer; ProtoWriter.WriteInt32ToBuffer(num, numArray1, num2); byte num9 = numArray1[num2]; numArray1[num2] = numArray1[num2 + 3]; numArray1[num2 + 3] = num9; num9 = numArray1[num2 + 1]; numArray1[num2 + 1] = numArray1[num2 + 2]; numArray1[num2 + 2] = num9; break; } default: { throw new ArgumentOutOfRangeException("style"); } } ProtoWriter protoWriter1 = writer; int num10 = protoWriter1.flushLock - 1; int num11 = num10; protoWriter1.flushLock = num10; if (num11 == 0 && writer.ioIndex >= 1024) { ProtoWriter.Flush(writer); } }
// Token: 0x06000159 RID: 345 RVA: 0x0000D8C4 File Offset: 0x0000BAC4 public static void WriteInt64(long value, ProtoWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } WireType wireType = writer.wireType; if (wireType <= WireType.Fixed64) { if (wireType != WireType.Variant) { if (wireType == WireType.Fixed64) { ProtoWriter.DemandSpace(8, writer); byte[] array = writer.ioBuffer; int num = writer.ioIndex; array[num] = (byte)value; array[num + 1] = (byte)(value >> 8); array[num + 2] = (byte)(value >> 16); array[num + 3] = (byte)(value >> 24); array[num + 4] = (byte)(value >> 32); array[num + 5] = (byte)(value >> 40); array[num + 6] = (byte)(value >> 48); array[num + 7] = (byte)(value >> 56); ProtoWriter.IncrementedAndReset(8, writer); return; } } else { if (value >= 0L) { ProtoWriter.WriteUInt64Variant((ulong)value, writer); writer.wireType = WireType.None; return; } ProtoWriter.DemandSpace(10, writer); byte[] array2 = writer.ioBuffer; int num = writer.ioIndex; array2[num] = (byte)(value | 128L); array2[num + 1] = (byte)((int)(value >> 7) | 128); array2[num + 2] = (byte)((int)(value >> 14) | 128); array2[num + 3] = (byte)((int)(value >> 21) | 128); array2[num + 4] = (byte)((int)(value >> 28) | 128); array2[num + 5] = (byte)((int)(value >> 35) | 128); array2[num + 6] = (byte)((int)(value >> 42) | 128); array2[num + 7] = (byte)((int)(value >> 49) | 128); array2[num + 8] = (byte)((int)(value >> 56) | 128); array2[num + 9] = 1; ProtoWriter.IncrementedAndReset(10, writer); return; } } else { if (wireType == WireType.Fixed32) { ProtoWriter.WriteInt32(checked ((int)value), writer); return; } if (wireType == WireType.SignedVariant) { ProtoWriter.WriteUInt64Variant(ProtoWriter.Zig(value), writer); writer.wireType = WireType.None; return; } } throw ProtoWriter.CreateException(writer); }
public static void WriteInt32(int value, ProtoWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } WireType wireType = writer.wireType; switch (wireType) { case WireType.Variant: if (value >= 0) { ProtoWriter.WriteUInt32Variant((uint)value, writer); writer.wireType = WireType.None; } else { ProtoWriter.DemandSpace(10, writer); byte[] array = writer.ioBuffer; int num = writer.ioIndex; array[num] = (byte)(value | 128); array[num + 1] = (byte)(value >> 7 | 128); array[num + 2] = (byte)(value >> 14 | 128); array[num + 3] = (byte)(value >> 21 | 128); array[num + 4] = (byte)(value >> 28 | 128); array[num + 5] = (array[num + 6] = (array[num + 7] = (array[num + 8] = 255))); array[num + 9] = 1; ProtoWriter.IncrementedAndReset(10, writer); } return; case WireType.Fixed64: { ProtoWriter.DemandSpace(8, writer); byte[] array = writer.ioBuffer; int num = writer.ioIndex; array[num] = (byte)value; array[num + 1] = (byte)(value >> 8); array[num + 2] = (byte)(value >> 16); array[num + 3] = (byte)(value >> 24); array[num + 4] = (array[num + 5] = (array[num + 6] = (array[num + 7] = 0))); ProtoWriter.IncrementedAndReset(8, writer); return; } case WireType.String: case WireType.StartGroup: case WireType.EndGroup: IL_36: if (wireType != WireType.SignedVariant) { throw ProtoWriter.CreateException(writer); } ProtoWriter.WriteUInt32Variant(ProtoWriter.Zig(value), writer); writer.wireType = WireType.None; return; case WireType.Fixed32: ProtoWriter.DemandSpace(4, writer); ProtoWriter.WriteInt32ToBuffer(value, writer.ioBuffer, writer.ioIndex); ProtoWriter.IncrementedAndReset(4, writer); return; } goto IL_36; }
private static void EndSubItem(SubItemToken token, ProtoWriter writer, PrefixStyle style) { if (writer == null) { throw new ArgumentNullException("writer"); } if (writer.wireType != WireType.None) { throw ProtoWriter.CreateException(writer); } int value = token.value; if (writer.depth <= 0) { throw ProtoWriter.CreateException(writer); } if (writer.depth-- > 25) { writer.PopRecursionStack(); } writer.packedFieldNumber = 0; if (value < 0) { ProtoWriter.WriteHeaderCore(-value, WireType.EndGroup, writer); writer.wireType = WireType.None; return; } switch (style) { case PrefixStyle.Base128: { int num = writer.ioIndex - value - 1; int num2 = 0; uint num3 = (uint)num; while ((num3 >>= 7) != 0u) { num2++; } if (num2 == 0) { writer.ioBuffer[value] = (byte)(num & 127); } else { ProtoWriter.DemandSpace(num2, writer); byte[] array = writer.ioBuffer; Helpers.BlockCopy(array, value + 1, array, value + 1 + num2, num); num3 = (uint)num; do { array[value++] = (byte)((num3 & 127u) | 128u); }while ((num3 >>= 7) != 0u); array[value - 1] = (byte)((int)array[value - 1] & -129); writer.position += num2; writer.ioIndex += num2; } break; } case PrefixStyle.Fixed32: { int num = writer.ioIndex - value - 4; ProtoWriter.WriteInt32ToBuffer(num, writer.ioBuffer, value); break; } case PrefixStyle.Fixed32BigEndian: { int num = writer.ioIndex - value - 4; byte[] array2 = writer.ioBuffer; ProtoWriter.WriteInt32ToBuffer(num, array2, value); byte b = array2[value]; array2[value] = array2[value + 3]; array2[value + 3] = b; b = array2[value + 1]; array2[value + 1] = array2[value + 2]; array2[value + 2] = b; break; } default: throw new ArgumentOutOfRangeException("style"); } if (--writer.flushLock == 0 && writer.ioIndex >= 1024) { ProtoWriter.Flush(writer); } }
// Token: 0x06000160 RID: 352 RVA: 0x0000DAB0 File Offset: 0x0000BCB0 public static void WriteInt32(int value, ProtoWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } WireType wireType = writer.wireType; if (wireType <= WireType.Fixed64) { if (wireType != WireType.Variant) { if (wireType == WireType.Fixed64) { ProtoWriter.DemandSpace(8, writer); byte[] array = writer.ioBuffer; int num = writer.ioIndex; array[num] = (byte)value; array[num + 1] = (byte)(value >> 8); array[num + 2] = (byte)(value >> 16); array[num + 3] = (byte)(value >> 24); array[num + 4] = (array[num + 5] = (array[num + 6] = (array[num + 7] = 0))); ProtoWriter.IncrementedAndReset(8, writer); return; } } else { if (value >= 0) { ProtoWriter.WriteUInt32Variant((uint)value, writer); writer.wireType = WireType.None; return; } ProtoWriter.DemandSpace(10, writer); byte[] array = writer.ioBuffer; int num = writer.ioIndex; array[num] = (byte)(value | 128); array[num + 1] = (byte)(value >> 7 | 128); array[num + 2] = (byte)(value >> 14 | 128); array[num + 3] = (byte)(value >> 21 | 128); array[num + 4] = (byte)(value >> 28 | 128); array[num + 5] = (array[num + 6] = (array[num + 7] = (array[num + 8] = byte.MaxValue))); array[num + 9] = 1; ProtoWriter.IncrementedAndReset(10, writer); return; } } else { if (wireType == WireType.Fixed32) { ProtoWriter.DemandSpace(4, writer); ProtoWriter.WriteInt32ToBuffer(value, writer.ioBuffer, writer.ioIndex); ProtoWriter.IncrementedAndReset(4, writer); return; } if (wireType == WireType.SignedVariant) { ProtoWriter.WriteUInt32Variant(ProtoWriter.Zig(value), writer); writer.wireType = WireType.None; return; } } throw ProtoWriter.CreateException(writer); }