[ad_1]
[*]
It will be easy to understand if to represent the function declaration
void* volatile* (*func(unsigned long const long volatile int, signed, long*[*][42]))(__int128* (*) (int* restrict const[static restrict const 17]));
using typedefs.
The first one can be the following
typedef _int128* FunctionAsParameter(int* restrict const[static restrict const 17]);
The second one is the following
typedef void* volatile* FunctionAsReurnType( FunctionAsParameter * );
And at last teh original function declaration will look like
FunctionAsReturnType * func( unsigned long const long volatile int, signed, long*[*][42])'
[*][ad_2]
[*]