def METHOD_NAME(self):
    if not os.path.exists(self.filename):
        return False
    self.build_storm_buffer()
    self.stream = open(self.filename, 'rb')
    self.header = MpqHeader.from_stream(self.stream)
    self.block_size = 0x200 << self.header.block_size
    self.stream.seek(self.header.hash_table_pos)
    hash_data = self.stream.read(self.header.hash_table_size * MpqHash.SIZE)
    decrypted_data = self.decrypt_block_from_bytes(hash_data, self.hash_string('(hash table)', 0x300))
    self.build_mpq_hashes(decrypted_data)
    self.stream.seek(self.header.block_table_pos)
    entries_data = self.stream.read(self.header.block_table_size * MpqEntry.SIZE)
    decrypted_data = self.decrypt_block_from_bytes(entries_data, self.hash_string('(block table)', 0x300))
    self.build_mpq_entries(decrypted_data)
    self.add_list_filenames()