This could be out of topic but I have suggestion for BSGS.
Instead of create list from 1bit -> Xbit, create it from target -> Xbit (or reverse) so you can just directly check the hash table without doing any subtract to the private key.
Well yes it is some offtopic but i going to reply to you here
Ok, i don't get you idea at the first sigt but after re-read it for second time i understand what are you trying to do.
There are many substractions in BSGS Example, not only ONE example:
Current Implementation:Key 99
known range 75-100
Baby step 5 = { 0,1,2,3,4}
Giant step 5 = {0,5,10,25,20}
First subtraction to move key to the BSGS range
99(key) - 75(Base range) = 24
New Target Key 24
Giant step 0
24 - 0 = 24 is on Baby Table? NO
Giant step 1
24 - 5 = 19 is on Baby Table? NO
Giant step 2
24 - 10 = 14 is on Baby Table? NO
Giant step 3
24 - 15 = 9 is on Baby Table? NO
Giant step 4
24 - 20 = 4 is on Baby Table? YES (HIT)
Calcualted KEY is Giant Step 4 plus Baby step 4 PLUS [b]Base range[/b], this is 20 + 4 + 75 = 99
Your proposed Implementation:Key 99
known range 75-100
Baby step 5 = {75,76,77,78,79}
Giant step 5 = {0,5,10,25,20}
Target Key 99
Giant step 0
99 - 0 = 99 is on Baby Table? NO
Giant step 1
99 - 5 = 94 is on Baby Table? NO
Giant step 2
99 - 10 = 89 is on Baby Table? NO
Giant step 3
99 - 15 = 84 is on Baby Table? NO
Giant step 4
99 - 20 = 79 is on Baby Table? YES (HIT)
Calcualted KEY is the HIT key
I don't know if that is your idea or not, please correctme if im wrong But in this example We only avoid one substraction, all the Giant Step subtractions remain... There will be some more varians of this but almost all keep the Giant Step subtractions.
BTW another important thing to Generate a lis from 1 to X is that we can use that SAME list for ANOTHER targets BUt if you do the list from Target to ( Target + X), then that list only is going to be useful againts that specific target.