#include "windows.h"
#include "stdio.h"

char
comparison(int r)
{
    switch (r) {
    case 1:
        return '>';
    case -1:
        return '<';
    default:
        return '=';
    }
}

int
wmain(int argc, wchar_t* argv[])
{
    int     result;
    wchar_t s1[] = { 0x11a7, 0x1188, 0xd7a2, 0x0000 };
    wchar_t s2[] = { 0x11a7, 0xd7a2, 0x1188, 0x0000 };
    wchar_t s3[] = { 0xd7a2, 0x11a7, 0x1188, 0x0000 };

    int     len;
    wchar_t c1[23];
    wchar_t c2[23];
    wchar_t c3[23];

    result = CompareStringEx(L"es-US", 0, s1, -1, s2, -1, NULL, NULL, 0);
    printf("s1 %c s2\n", comparison(result - 2));
    result = CompareStringEx(L"es-US", 0, s2, -1, s3, -1, NULL, NULL, 0);
    printf("s2 %c s3\n", comparison(result - 2));
    result = CompareStringEx(L"es-US", 0, s1, -1, s3, -1, NULL, NULL, 0);
    printf("s1 %c s3\n", comparison(result - 2));

    len = LCMapStringEx(L"es-US", LCMAP_SORTKEY, s1, -1, c1, 23, NULL, NULL, 0);
    len = LCMapStringEx(L"es-US", LCMAP_SORTKEY, s2, -1, c2, 23, NULL, NULL, 0);
    len = LCMapStringEx(L"es-US", LCMAP_SORTKEY, s3, -1, c3, 23, NULL, NULL, 0);

    result = memcmp(c1, c2, 23);
    printf("c1 %c c2\n", comparison(result));
    result = memcmp(c2, c3, 23);
    printf("c2 %c c3\n", comparison(result));
    result = memcmp(c1, c3, 23);
    printf("c1 %c c3\n", comparison(result));

    return 0;
}
