void PatchResourceDirectoryTable(ByteBuffer resources)
        {
            resources.Advance(12);

            var entries = resources.ReadUInt16() + resources.ReadUInt16();

            for (int i = 0; i < entries; i++)
                PatchResourceDirectoryEntry(resources);
        }
        void PatchResourceDirectoryEntry(ByteBuffer resources)
        {
            resources.Advance(4);
            var child = resources.ReadUInt32();

            var position = resources.position;
            resources.position = (int)child & 0x7fffffff;

            if ((child & 0x80000000) != 0)
                PatchResourceDirectoryTable(resources);
            else
                PatchResourceDataEntry(resources);

            resources.position = position;
        }