IffStream* DataArchiveStore::openIffFile(const String& fileName) {
	if (fileName.isEmpty())
		return nullptr;

	IffStream* iffStream = nullptr;

	int size = 0;

	byte* data = getData(fileName, size);

	if (size == 0)
		return nullptr;

	iffStream = new IffStream();

	if (iffStream != nullptr) {
		try {
			if (!iffStream->parseChunks(data, size, fileName)) {
				delete iffStream;
				iffStream = nullptr;
			}
		} catch (Exception& e) {
			delete iffStream;
			iffStream = nullptr;
		}
	}

	delete [] data;

	return iffStream;
}