private final void init (boolean flag) {
		int i;
		int a, b, c, d, e, f, g, h;
		a = b = c = d = e = f = g = h = 0x9e3779b9;		// The golden ratio

		for (i = 0; i < 4; ++i) {
			a ^= b <<  11; d += a; b += c;
			b ^= c >>>  2; e += b; c += d;
			c ^= d <<   8; f += c; d += e;
			d ^= e >>> 16; g += d; e += f;
			e ^= f <<  10; h += e; f += g;
			f ^= g >>>  4; a += f; g += h;
			g ^= h <<   8; b += g; h += a;
			h ^= a >>>  9; c += h; a += b;
		}

		for (i = 0; i < SIZE; i += 8) {		// Fill in mem[] with messy stuff
			if (flag) {
				a += rsl[i    ]; b += rsl[i + 1]; c += rsl[i + 2]; d += rsl[i + 3];
				e += rsl[i + 4]; f += rsl[i + 5]; g += rsl[i + 6]; h += rsl[i + 7];
			}
			a ^= b <<  11; d += a; b += c;
			b ^= c >>>  2; e += b; c += d;
			c ^= d <<   8; f += c; d += e;
			d ^= e >>> 16; g += d; e += f;
			e ^= f <<  10; h += e; f += g;
			f ^= g >>>  4; a += f; g += h;
			g ^= h <<   8; b += g; h += a;
			h ^= a >>>  9; c += h; a += b;
			mem[i    ] = a; mem[i + 1] = b; mem[i + 2] = c; mem[i + 3] = d;
			mem[i + 4] = e; mem[i + 5] = f; mem[i + 6] = g; mem[i + 7] = h;
		}

		if (flag) {							// Second pass: makes all of seed affect all of mem[]
			for (i = 0; i < SIZE; i += 8) {
				a += mem[i    ]; b += mem[i + 1]; c += mem[i + 2]; d += mem[i + 3];
				e += mem[i + 4]; f += mem[i + 5]; g += mem[i + 6]; h += mem[i + 7];
				a ^= b <<  11; d += a; b += c;
				b ^= c >>>  2; e += b; c += d;
				c ^= d <<   8; f += c; d += e;
				d ^= e >>> 16; g += d; e += f;
				e ^= f <<  10; h += e; f += g;
				f ^= g >>>  4; a += f; g += h;
				g ^= h <<   8; b += g; h += a;
				h ^= a >>>  9; c += h; a += b;
				mem[i    ] = a; mem[i + 1] = b; mem[i + 2] = c; mem[i + 3] = d;
				mem[i + 4] = e; mem[i + 5] = f; mem[i + 6] = g; mem[i + 7] = h;
			}
		}

		isaac ();
		count = SIZE;
	}