#include "Random.h"

uint32_t lrand(uint64_t *s){
	// initial value of s must be 2 or higher
	uint64_t hi = *(uint64_t *)s / 41943011;
	uint64_t lo = *(uint64_t *)s % 41943011;
	//uint64_t tmp = *(uint64_t *)s * lo;
	*(uint64_t *)s = *(uint64_t *)s * lo - 2147483647 * hi;

	//if(*(uint64_t *)s < 0) *(uint64_t *)s += 0x7fffffffffffffff;
	return (*(uint64_t *)s & 0xFFFFFFFF00000000) >> 32;
}