bool arch_init = true;
        unsigned long rv;
 
-       mix_pool_bytes(&now, sizeof(now));
        for (i = BLAKE2S_BLOCK_SIZE; i > 0; i -= sizeof(rv)) {
-               if (!arch_get_random_seed_long(&rv) &&
-                   !arch_get_random_long(&rv))
-                       rv = random_get_entropy();
-               mix_pool_bytes(&rv, sizeof(rv));
-       }
-       mix_pool_bytes(utsname(), sizeof(*(utsname())));
-
-       extract_entropy(&primary_crng.state[4], sizeof(u32) * 12);
-       for (i = 4; i < 16; i++) {
                if (!arch_get_random_seed_long_early(&rv) &&
                    !arch_get_random_long_early(&rv)) {
                        rv = random_get_entropy();
                        arch_init = false;
                }
-               primary_crng.state[i] ^= rv;
+               mix_pool_bytes(&rv, sizeof(rv));
        }
+       mix_pool_bytes(&now, sizeof(now));
+       mix_pool_bytes(utsname(), sizeof(*(utsname())));
+
+       extract_entropy(&primary_crng.state[4], sizeof(u32) * 12);
        if (arch_init && trust_cpu && crng_init < 2) {
                invalidate_batched_entropy();
                crng_init = 2;