LOADPRIVDATA doesn't behave like a function
The LOADPRIVDATA "returns" a value by just assigning it to the pointer argument. E.g., consider the following non-obvious code:
void *d; LOADPRIVDATA(d); /* d is now different from what it was before */
It's simple enough to change it to something like:
d = GETPRIVDATA();
This is easier to reason about since it has no obvious side-effects.