Version 1: >50 billion in <120 GB

Live!

So yeah I fail I haven't been motivated enough to finish the fast version of my LTH generator. Good news is back on December 12, 2010 I decided to write a generator that will take the least amount of work to write. Three steps (each step took about a day), single threaded, and using 808 GB of disk. On the 18th, it was finished and already generated a LHT with the key space below with a minor error I didn't output a millionth of the data :( and probably had another bug. I didn't regenerate the data until January 9th which is when I found THE BUG. In short VS2010 compiled my code wrong which made it write worthless data to disk. The fix was checking to see if it's a valid password index which magically made the password index correct.
The three steps were write the 64 bit password index and 64 bits of the hash to 256 files split at about 1.5 GiB making 512 files, sort half of the files with rtsort (yeah I planed sorting them all but it took too long and ended up sorting the other haves in step three), and merged the file haves and wrote the LHT data. I think step one caused a lot of fragmentation which made reading at later steps go at 16 MB/s.
My plan is to add SSE2 then other x86 magic to the cracker because 1.5 million MD5s per second is slow (worst case about 1 second average 150-200 ms) looking for 35 million (worst case 44 ms, average 6.4-8.3 ms). Then upgrade the generator to do in-place generation which should fix the reading speed issues in later steps. Then awesomeness then release previous less awesomeness version.
* - 95 characters: space through ~
m - 52 characters: A-Z and a-z
a - 26 characters: a-z
0 - 10 characters: 0-9
*
**
***
****
*****
000000
m00000
ma0000
maa000
maaa00
maaaa0
maaaaa
0000000
m000000
ma00000
maa0000
maaa000
maaaa00
maaaaa0
maaaaaa
00000000
m0000000
ma000000
maa00000
maaa0000
000000000
--------------
50,529,455,839


Version 2's goal is to hit one Trillion

The layout:
(Indexed bits, mini indexed bits, password bits)
(40, 33, 19) is 2.96 TB and hoping for under 16 ms disk + 64 ms work (single threaded)
(40, 33, 22) is 3.38 TB and hoping for under 16 ms disk + 8 ms work (single threaded)
Hmm I can cut disk time in half with 18 GB of SSD.

1.981 bits/password for the main index
0.125 bits/password for the mini index
19 or 22 bits/password for the password

Total bits/password are:
21.106 bits/password or 24.106 bits/password

My database will contain the passwords in "Omni-5"
Key Space is 2 ^ 40.028 (1.12 Trillion [1,121,284,146,783])

* - 95 characters: space through ~
M - 62 characters: A-Z, a-z, and 0-9
m - 52 characters: A-Z and a-z
n - 36 characters: a-z and 0-9
a - 26 characters: a-z
0 - 10 characters: 0-9
*
**
***
****
*****
MMMMMM
Mnnnnnn
maaaaaaa
00000000
000000000
0000000000
maaa0000
maaaa000
maaaaa00
maaaaaa0
maaaa0000

Yeah, yeah I know brute force style passwords are not all that good for guessing passwords, but this is just a proof of concept and I am looking at generating 2 ^ 40 of the most likely passwords. Probably going to do something like Matt Weir's "Probabilistic Password Cracker."