This won't be hard.
Each entry in the table is a composite value containing the time in the upper 3 bytes of a DWORD variable, and the low byte is the engine number...0xTTTTTTNN. The math expression to create it is something like this:
Dn = (EngineHours << 8) | EngineNumber
Where EngineNumber is expected to be a value between 0 and 255, and EngineHours is a value from 0 to 8388607 (a 23 bit unsigned int). This guarantees that the data stays within the positive range of the 32 signed int.
After you have created your 6 entries in D0-D5, you would use a task to do a simple bubble sort. We'll try to throw a bubble sort example together to post to the examples section. But if you want to tackle it yourself, use a task with two nested FOR loops, and reference each entry using the array operator. You would be comparing each entry to all the other entries, and then swapping them based on the sort order, like this:
if D[V0] > D[V1] Then Temp = D[V1], D[V1] = D[V0], D[V0] = Temp
Once you have sorted the entries, D0 would contain the lowest time and D5 the highest. You can access the engine number from the entry using the byte extraction cast operator: EngineNumber = D0:B0 (returns the low byte)
Engine time would use a math expression: EngineTime = D0 >> 8