This seems to be a variable length integer ala utf-8 style

def read_vint32(self):
        """
        This seems to be a variable length integer ala utf-8 style
        """
        result = 0
        count = 0
        while True:
            if count > 4:
                raise ValueError("Corrupt VarInt32")

            b = self.read_byte()
            result = result | (b & 0x7F) << (7 * count)
            count += 1

            if not b & 0x80:
                return result