private function parseSignedInt32()
    {
        try {
            $result = \unpack('N', $this->buffer)[1];

            if ($result & 0x80000000) {
                return $result - 0x100000000;
            }

            return $result;
        } finally {
            $this->buffer = mb_orig_substr($this->buffer, 4);
        }
    }