No es imposible convertir código hexadecimal a C, pero sí es una tarea ambigua.
La conversión de hex a asm es directa porque cada instrucción en hex es directamente pasada a un nemónico, no hay pierde ni confusión. En cambio con C, un grupo de instrucciones puede significar un bucle while por ejemplo, pero también puede significar un bucle for... o incluso solo pueden significar un delay por ciclos anidados... el decompilador tendría que ser súper experto para lograr definir qué está haciendo el grupo de instrucciones y peor aún... saber de dónde a dónde tomar instrucciones para analizarlas.
Hay muchos decompiladores, por ejemplo los de byte code a código fuente de Java (class):
http://www.bysoft.se/sureshot/cavaj/Hasta ahora nadie ha hecho un decompilador de hex a C para micros PIC, pero si existiera estaría fuertemente ligado al compilador original, es decir que habrá un decompilador para CCS, otro para C18, etc.
No es imposible, solo que requiere de mucho trabajo y desambiguación. Un tema de trabajo digno de una tesis de maestría en computación.