Código:
((void (*)(unsigned char*, unsigned char*))&r) (p, q);
Pero ese codigo es horriblemente ilegible asi que lo haria asi:
Código:
typedef void (decrypt_ptr)(unsigned char*, unsigned char*);
decrypt_ptr *decrypt = (decrypt_ptr*)&r;
decrypt(p, q);