@AlexanderCurl, regarding sequential key generation:
Have you tried adding a large prime number, like 0xdeadbeef (just an example, I don't even know if that's prime)?
Sure, you'll have to check for overflow more frequently - fortunately, that's just a matter of doing a Greater-Than comparison followed by a subtraction - but a sufficiently large increment should make the keys look pseudorandom as far as the bits are concerned.
Have no idea what you are talking about. On my computer i use VanitySearch code on a daily basis for all types of programs.(random, sequential, whatever)
And have no problems. Even had to add floor_division like this through GMP. Works perfect.
void Int::floor_Div(Int *a, Int *b) {
Int r;
mpz_t n, d, q;
mpz_inits(n, d, q, NULL);
mpz_set_str(n, a->GetBase10().c_str(), 0);
mpz_set_str(d, b->GetBase10().c_str(), 0);
mpz_fdiv_q(q, n, d);
r.SetBase10(mpz_get_str(NULL, 10, q));
mpz_clears(n, d, q, NULL);
this->Set(&r);
}