# mingw doesn't have BSD random / srandom
#def random() rand()
#def srandom(seed) srand(seed)

use stdint.h

local unsigned long m__seed = 407355683

srandom(unsigned long seed)
	m__seed = seed

long random():
	static long M = (1U<<31)-1
	static long A = 48271
	static long Q = 44488
	static long R = 3399
	int32_t X
	X = m__seed
	X = A*(X%Q) - R * (int32_t)(X/Q)
	if X < 0:
		X = X+M+1
	m__seed = X
	return (long)X