public void setInitialized(int pageOffset, int size, byte[] maskUpdate) {
		int maskOffset = pageOffset / 8;
		int firstBit = pageOffset % 8;
		while (size > 0) {
			int s = Math.min(size, 8 - firstBit);
			size -= s;
			int mask = (0xff << firstBit) & ((1 << (firstBit + s)) - 1);
			int val = mask;
			if (maskUpdate != null) {
				val &= maskUpdate[maskOffset];
			}
			if (initializedMask == null) {
				// allocate mask if needed
				byte test = (byte) (val | ~mask);
				if (test == (byte) -1) {
					++maskOffset;
					firstBit = 0;
					continue;
				}
				initializedMask = getInitializedMask(data.length, true);
			}
			initializedMask[maskOffset] = (byte) ((initializedMask[maskOffset] & ~mask) | val);
			++maskOffset;
			firstBit = 0;
		}
	}
Update initialization mask
@param pageOffset
@param size
@param maskUpdate
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/memstate/MemoryPage.java