Man oh man. That would take a long time to figure out. Is this really the best a C decompiler can do?
Unfortunately there's still a lot decompilers can't do, mostly compiler tricks (e.g. storing a pointer to the middle of a structure instead of its beginning, and using negative offsets to access other struct members [3] - this is usually obvious when looking at it, but HexRays can't make sense of it so it falls back to raw pointer math).
[1] http://www.hex-rays.com/ [2] http://img824.imageshack.us/img824/1188/hexrayscpp.png [3] https://github.com/Laurelai/decompile-dump/blob/master/outpu...
"WARNING: CHLLCode::appendTypeIdent: declaring type void as int for param2"
http://www.google.com/codesearch?as_q=WARNING%3A+CHLLCode%3A...
http://boomerang.sf.net/ is clearly what was used.