public double ReadVarLong() { byte _loc_3 = 0; Int64 result = new Int64(); uint _loc_4 = 0; while (true) { _loc_3 = this.ReadByte(); if (_loc_4 == 28) { break; } else if (_loc_3 >= 128) { result.low = Convert.ToUInt32(result.low | Convert.ToUInt32(_loc_3 & 127) << Convert.ToInt32(_loc_4)); } else { result.low = Convert.ToUInt32(result.low | Convert.ToUInt32(_loc_3) << Convert.ToInt32(_loc_4)); return result.toNumber(); } _loc_4 = _loc_4 + 7; } if (_loc_3 >= 128) { _loc_3 = (byte)(_loc_3 & 127); result.low = Convert.ToUInt32(result.low | Convert.ToUInt32(_loc_3) << Convert.ToInt32(_loc_4)); result.high = Convert.ToUInt32(_loc_3) >> 4; } else { result.low = Convert.ToUInt32(result.low | Convert.ToUInt32(_loc_3) << Convert.ToInt32(_loc_4)); result.high = Convert.ToUInt32(_loc_3) >> 4; return result.toNumber(); } _loc_4 = 3; while (true) { _loc_3 = ReadByte(); if (_loc_4 < 32) { if (_loc_3 >= 128) { result.high = result.high | Convert.ToUInt32(_loc_3 & 127) << Convert.ToInt32(_loc_4); } else { result.high = result.high | Convert.ToUInt32(_loc_3) << Convert.ToInt32(_loc_4); break; } } _loc_4 = _loc_4 + 7; } return result.toNumber(); }