And that was only achieved by byte swapping the data (swap16) and using the UINT32le datatype type. Typically (but not always), Modbus data is packed in be (Big Endian)
I suspect 1 or more things
Your read request is off by 1 (i.e. it should be [5178,0])
The data is being reversed by your computer/server
You have processed the data (perhaps in a function) or the way the modbus node packed the data buffer into an integer array has manipulated it - and that is what you are showing us.
To be certain, you should read 7 registers from address 5010 and output the result to a debug node - then capture the FULL payload using the "Copy Value" button
Then tell me what they SHOULD be.
[nn, oo, pp, qq]
Besides any how, you should be reading more than 1 item at a time and using the buffer-parser to convert everything in one go (helps with data consistency and reduced traffic) - see this article for details