The function is already inlined because the implementation is visible. You can check the assembly, it has no calls to the compare and swap functions.
I guess you're right, since the function accepts a void pointer, it could also point to an array of two array pointers. So yes, it can also process two arrays.