When you arrive at the sort of gibberish that you need a tool to make sense of it, it's time to split the declaration into several much simpler typedef building blocks (especially recommended for function types).
Also for what it's worth, this isn't 'human readable' either, or is it?:
"declare foo as pointer to function (pointer to const void) returning pointer to array 3 of int"