Decode MD5, Brute Force The Challenge

Create a program that brute-force* decodes the MD5-hashed string, given here:
92a7c9116fa52eb83cf4c2919599c24a which translates to code-golf

The Rules


You may not use any built-in functions that decode the hash for you if
the language you choose has such. 
You may not use an online service to decode the hash for you.
This is code-golf, the program that accomplishes
the task in the shortest amount of characters wins.


Good luck. May the brute-force be with you.

*Brute-Force definition: looping from a-zzz.. including abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=[]\;',./~!@#$%^&amp;*()_+{}|:"`&lt;&gt;? in a string, hashing it, and testing it against the hash given until the correct string that has been hashed has been found. Print the string to the program's output stream.
Haskell, 101 characters

import Data.Hash.MD5
main=interact$ \m-&gt;head.filter((==m).md5s.Str)$iterate([' '..'~']:)[]&gt;&gt;=sequence


Use it like so:

&amp; ghc -O2 -o brute 42043-BruteForce.hs
&amp; echo -n c-g | md5
bc098aea57599de26c8f17a9edbd492e
&amp; echo -n bc098aea57599de26c8f17a9edbd492e | ./brute
c-g


This requires the common package MissingH.