in src/rand.c [58:80]
static void sirand(csprng* rng,unsign32 seed)
{
/* initialise random number system */
/* modified so that a subsequent call "stirs" in another seed value */
/* in this way as many seed bits as desired may be used */
int i;
int in;
unsign32 t;
unsign32 m=1;
rng->borrow=0L;
rng->rndptr=0;
rng->ira[0]^=seed;
for (i=1; i<NK; i++)
{
/* fill initialisation vector */
in=(NV*i)%NK;
rng->ira[in]^=m; /* note XOR */
t=m;
m=seed-m;
seed=t;
}
for (i=0; i<10000; i++) sbrand(rng ); /* "warm-up" & stir the generator */
}