byte* to individual values | PubSubClient

While arrays and pointers are often interchangeable, they are not always.

Your payloadMan pointer points to the same memory that payload uses. So, when you assign a value to payloadMan, you are assigning a value to payload, too. By the time you start trying to extract the data from rec2, you've already crapped on the data that is supposed to be rec2.

Create another array, NOT a pointer. Copy the data from one array to the other.