# File src/ISAAC.rb, line 96
                def randinit(flag)
                        i = 0
                        a = 0
                        b = 0
                        c = 0
                        d = 0
                        e = 0
                        f = 0
                        g = 0
                        @aa = @bb = @cc = 0
                        a = b = c = d = e = f = g = h = 0x9e3779b9

                        while (i < 4) do
                                a ^= b<<1; d += a; b += c
                                b ^= 0x3fffffff & (c>>2); e += b; c += d
                                c ^= d << 8; f += c; d += e
                                d ^= 0x0000ffff & (e >> 16); g += d; e += f
                                e ^= f << 10; h += e; f += g
                                f ^= 0x0fffffff & (g >> 4); a += f; g += h
                                g ^= h << 8; b += g; h += a
                                h ^= 0x007fffff & (a >> 9); c += h; a += b
                                i += 1
                        end

                        i = 0
                        while (i < 256) do
                                if (flag)
                                        a+=@randrsl[i  ].to_i; b+=@randrsl[i+1].to_i;
                                        c+=@randrsl[i+2]; d+=@randrsl[i+3];
                                        e+=@randrsl[i+4]; f+=@randrsl[i+5];
                                        g+=@randrsl[i+6]; h+=@randrsl[i+7];
                                end

                                a^=b<<11; d+=a; b+=c;
                                b^=0x3fffffff & (c>>2);  e+=b; c+=d;
                                c^=d<<8;  f+=c; d+=e;
                                d^=0x0000ffff & (e>>16); g+=d; e+=f;
                                e^=f<<10; h+=e; f+=g;
                                f^=0x0fffffff & (g>>4);  a+=f; g+=h;
                                g^=h<<8;  b+=g; h+=a;
                                h^=0x007fffff & (a>>9);  c+=h; a+=b;
                                @mm[i]=a;@mm[i+1]=b; @mm[i+2]=c; @mm[i+3]=d;
                                @mm[i+4]=e; @mm[i+5]=f; @mm[i+6]=g; @mm[i+7]=h;
                                i += 8
                        end

                        if flag
                                i = 0
                                while (i < 256)
                                        a+=@mm[i  ]; b+=@mm[i+1]; c+=@mm[i+2]; d+=@mm[i+3];
                                        e+=@mm[i+4]; f+=@mm[i+5]; g+=@mm[i+6]; h+=@mm[i+7];
                                        a^=b<<11; d+=a; b+=c;
                                        b^=0x3fffffff & (c>>2);  e+=b; c+=d;
                                        c^=d<<8;  f+=c; d+=e;
                                        d^=0x0000ffff & (e>>16); g+=d; e+=f;
                                        e^=f<<10; h+=e; f+=g;
                                        f^=0x0fffffff & (g>>4);  a+=f; g+=h;
                                        g^=h<<8;  b+=g; h+=a;
                                        h^=0x007fffff & (a>>9);  c+=h; a+=b;
                                        @mm[i  ]=a; @mm[i+1]=b; @mm[i+2]=c; @mm[i+3]=d;
                                        @mm[i+4]=e; @mm[i+5]=f; @mm[i+6]=g; @mm[i+7]=h;
                                        i += 8
                                end
                        end

                isaac()
                @randcnt=256;        # /* prepare to use the first set of results */
                end