#include <iostream>

using namespace std;

enum WindingOrder {
    BOTTOM = 0,
    RIGHT,
    TOP,
    LEFT
};

void DoWinding1(unsigned int const *const in, unsigned int *const out, const enum WindingOrder ord)
{
	static const unsigned int order[4][4] = { [BOTTOM] = {0,1,2,1},
	                                          [RIGHT]  = {2,1,2,3},
	                                          [TOP]    = {3,4,0,3},
	                                          [LEFT]   = {0,3,0,1} };
	out[0] = in[order[ord][0]]; 
	out[1] = in[order[ord][1]];
	out[2] = in[order[ord][2]];
	out[3] = in[order[ord][3]];
}


int main() {
	unsigned int idx;
	unsigned int rect[4] = {1, 3, 4, 5};
	unsigned int out[4] = {0};

	DoWinding1(rect, out, BOTTOM);
    
	std::cout << out[0] << out[1] << out[2] << out[3] << std::endl;

	return 0;
}