#include <stdio.h>
#include <string.h>
#include <stdlib.h>
enum
{
LICENSE_FREE,
LICENSE_STANDARD,
LICENSE_PRO,
LICENSE_NULL,
LICENSE_NOCPP,
LICENSE_CPPFREE,
LICENSE_CPPFULL
};
/* Padded keystring for XC8 compiler */
const char XC8_KEY[] = "120205690315959428539973816151144999076498629234049888"
"179227155534183820578631309018645587360933525814619915"
"779526071941849199599867328321377639683720790016145394"
"178294936006671919157552224249424396156390966410329115"
"909578096551465127991840510571525598801543710978110203"
"982753256678760352233698494166181105701471577863949973"
"752378527793703095602570185318279000307654710756304884"
"332086971157374238079344503160762531771453544441183117"
"818224971852635709182448998796203508335756172022603393"
"785870328131267807990054177348691152537065623705744096"
"622171290262732073236149224291304052855537234103307757"
"779806424202430488281521000914602653822069627155202082"
"274335001015294801198690117625951676366998171835575234"
"880703719555742347294083595208861666202572853755813079"
"282586487282173705566196898952662018776810629200817792"
"338135876828426412432431480282173674506720693507626895"
"304345939375032966363775750624733239923482883107733905"
"27680200757984356120205690";
int main(int argc, char *argv[])
{
int license = LICENSE_FREE;
int ii;
for (ii = 0; ii < argc; ++ii)
{
if (!strcmp(argv
[ii
], "swxc32") || !strcmp(argv
[ii
], "swxc16") || {
license = LICENSE_PRO;
}
else if (!strcmp(argv
[ii
], "swxcpp32")) {
license = LICENSE_CPPFULL;
}
else if (!strcmp(argv
[ii
], "-hash")) {
int index
= atoi(argv
[ii
+1]); printf("%.10s", &XC8_KEY
[index
]); }
}
return license;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKZW51bQp7CiAgICBMSUNFTlNFX0ZSRUUsCiAgICBMSUNFTlNFX1NUQU5EQVJELAogICAgTElDRU5TRV9QUk8sCiAgICBMSUNFTlNFX05VTEwsCiAgICBMSUNFTlNFX05PQ1BQLAogICAgTElDRU5TRV9DUFBGUkVFLAogICAgTElDRU5TRV9DUFBGVUxMCn07CgovKiBQYWRkZWQga2V5c3RyaW5nIGZvciBYQzggY29tcGlsZXIgKi8KY29uc3QgY2hhciBYQzhfS0VZW10gPSAiMTIwMjA1NjkwMzE1OTU5NDI4NTM5OTczODE2MTUxMTQ0OTk5MDc2NDk4NjI5MjM0MDQ5ODg4IgogICAgICAgICAgICAgICAgICAgICAgICIxNzkyMjcxNTU1MzQxODM4MjA1Nzg2MzEzMDkwMTg2NDU1ODczNjA5MzM1MjU4MTQ2MTk5MTUiCiAgICAgICAgICAgICAgICAgICAgICAgIjc3OTUyNjA3MTk0MTg0OTE5OTU5OTg2NzMyODMyMTM3NzYzOTY4MzcyMDc5MDAxNjE0NTM5NCIKICAgICAgICAgICAgICAgICAgICAgICAiMTc4Mjk0OTM2MDA2NjcxOTE5MTU3NTUyMjI0MjQ5NDI0Mzk2MTU2MzkwOTY2NDEwMzI5MTE1IgogICAgICAgICAgICAgICAgICAgICAgICI5MDk1NzgwOTY1NTE0NjUxMjc5OTE4NDA1MTA1NzE1MjU1OTg4MDE1NDM3MTA5NzgxMTAyMDMiCiAgICAgICAgICAgICAgICAgICAgICAgIjk4Mjc1MzI1NjY3ODc2MDM1MjIzMzY5ODQ5NDE2NjE4MTEwNTcwMTQ3MTU3Nzg2Mzk0OTk3MyIKICAgICAgICAgICAgICAgICAgICAgICAiNzUyMzc4NTI3NzkzNzAzMDk1NjAyNTcwMTg1MzE4Mjc5MDAwMzA3NjU0NzEwNzU2MzA0ODg0IgogICAgICAgICAgICAgICAgICAgICAgICIzMzIwODY5NzExNTczNzQyMzgwNzkzNDQ1MDMxNjA3NjI1MzE3NzE0NTM1NDQ0NDExODMxMTciCiAgICAgICAgICAgICAgICAgICAgICAgIjgxODIyNDk3MTg1MjYzNTcwOTE4MjQ0ODk5ODc5NjIwMzUwODMzNTc1NjE3MjAyMjYwMzM5MyIKICAgICAgICAgICAgICAgICAgICAgICAiNzg1ODcwMzI4MTMxMjY3ODA3OTkwMDU0MTc3MzQ4NjkxMTUyNTM3MDY1NjIzNzA1NzQ0MDk2IgogICAgICAgICAgICAgICAgICAgICAgICI2MjIxNzEyOTAyNjI3MzIwNzMyMzYxNDkyMjQyOTEzMDQwNTI4NTU1MzcyMzQxMDMzMDc3NTciCiAgICAgICAgICAgICAgICAgICAgICAgIjc3OTgwNjQyNDIwMjQzMDQ4ODI4MTUyMTAwMDkxNDYwMjY1MzgyMjA2OTYyNzE1NTIwMjA4MiIKICAgICAgICAgICAgICAgICAgICAgICAiMjc0MzM1MDAxMDE1Mjk0ODAxMTk4NjkwMTE3NjI1OTUxNjc2MzY2OTk4MTcxODM1NTc1MjM0IgogICAgICAgICAgICAgICAgICAgICAgICI4ODA3MDM3MTk1NTU3NDIzNDcyOTQwODM1OTUyMDg4NjE2NjYyMDI1NzI4NTM3NTU4MTMwNzkiCiAgICAgICAgICAgICAgICAgICAgICAgIjI4MjU4NjQ4NzI4MjE3MzcwNTU2NjE5Njg5ODk1MjY2MjAxODc3NjgxMDYyOTIwMDgxNzc5MiIKICAgICAgICAgICAgICAgICAgICAgICAiMzM4MTM1ODc2ODI4NDI2NDEyNDMyNDMxNDgwMjgyMTczNjc0NTA2NzIwNjkzNTA3NjI2ODk1IgogICAgICAgICAgICAgICAgICAgICAgICIzMDQzNDU5MzkzNzUwMzI5NjYzNjM3NzU3NTA2MjQ3MzMyMzk5MjM0ODI4ODMxMDc3MzM5MDUiCiAgICAgICAgICAgICAgICAgICAgICAgIjI3NjgwMjAwNzU3OTg0MzU2MTIwMjA1NjkwIjsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICAgIGludCBsaWNlbnNlID0gTElDRU5TRV9GUkVFOwogICAgaW50IGlpOwoKICAgIGZvciAoaWkgPSAwOyBpaSA8IGFyZ2M7ICsraWkpCiAgICB7CiAgICAgICAgaWYgKCFzdHJjbXAoYXJndltpaV0sICJzd3hjMzIiKSB8fAogICAgICAgICAgICAhc3RyY21wKGFyZ3ZbaWldLCAic3d4YzE2IikgfHwKICAgICAgICAgICAgIXN0cmNtcChhcmd2W2lpXSwgInN3eGM4IikpCiAgICAgICAgewogICAgICAgICAgICBsaWNlbnNlID0gTElDRU5TRV9QUk87CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJndltpaV0sICJzd3hjcHAzMiIpKQogICAgICAgIHsKICAgICAgICAgICAgbGljZW5zZSA9IExJQ0VOU0VfQ1BQRlVMTDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2lpXSwgIi1oYXNoIikpCiAgICAgICAgewogICAgICAgICAgICBpbnQgaW5kZXggPSBhdG9pKGFyZ3ZbaWkrMV0pOwogICAgICAgICAgICBwcmludGYoIiUuMTBzIiwgJlhDOF9LRVlbaW5kZXhdKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gbGljZW5zZTsKfQ==
I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKI2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwoKZW51bQp7CiAgICBMSUNFTlNFX0ZSRUUsCiAgICBMSUNFTlNFX1NUQU5EQVJELAogICAgTElDRU5TRV9QUk8sCiAgICBMSUNFTlNFX05VTEwsCiAgICBMSUNFTlNFX05PQ1BQLAogICAgTElDRU5TRV9DUFBGUkVFLAogICAgTElDRU5TRV9DUFBGVUxMCn07CgovKiBQYWRkZWQga2V5c3RyaW5nIGZvciBYQzggY29tcGlsZXIgKi8KY29uc3QgY2hhciBYQzhfS0VZW10gPSAmcXVvdDsxMjAyMDU2OTAzMTU5NTk0Mjg1Mzk5NzM4MTYxNTExNDQ5OTkwNzY0OTg2MjkyMzQwNDk4ODgmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDsxNzkyMjcxNTU1MzQxODM4MjA1Nzg2MzEzMDkwMTg2NDU1ODczNjA5MzM1MjU4MTQ2MTk5MTUmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs3Nzk1MjYwNzE5NDE4NDkxOTk1OTk4NjczMjgzMjEzNzc2Mzk2ODM3MjA3OTAwMTYxNDUzOTQmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDsxNzgyOTQ5MzYwMDY2NzE5MTkxNTc1NTIyMjQyNDk0MjQzOTYxNTYzOTA5NjY0MTAzMjkxMTUmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs5MDk1NzgwOTY1NTE0NjUxMjc5OTE4NDA1MTA1NzE1MjU1OTg4MDE1NDM3MTA5NzgxMTAyMDMmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs5ODI3NTMyNTY2Nzg3NjAzNTIyMzM2OTg0OTQxNjYxODExMDU3MDE0NzE1Nzc4NjM5NDk5NzMmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs3NTIzNzg1Mjc3OTM3MDMwOTU2MDI1NzAxODUzMTgyNzkwMDAzMDc2NTQ3MTA3NTYzMDQ4ODQmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDszMzIwODY5NzExNTczNzQyMzgwNzkzNDQ1MDMxNjA3NjI1MzE3NzE0NTM1NDQ0NDExODMxMTcmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs4MTgyMjQ5NzE4NTI2MzU3MDkxODI0NDg5OTg3OTYyMDM1MDgzMzU3NTYxNzIwMjI2MDMzOTMmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs3ODU4NzAzMjgxMzEyNjc4MDc5OTAwNTQxNzczNDg2OTExNTI1MzcwNjU2MjM3MDU3NDQwOTYmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs2MjIxNzEyOTAyNjI3MzIwNzMyMzYxNDkyMjQyOTEzMDQwNTI4NTU1MzcyMzQxMDMzMDc3NTcmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs3Nzk4MDY0MjQyMDI0MzA0ODgyODE1MjEwMDA5MTQ2MDI2NTM4MjIwNjk2MjcxNTUyMDIwODImcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDsyNzQzMzUwMDEwMTUyOTQ4MDExOTg2OTAxMTc2MjU5NTE2NzYzNjY5OTgxNzE4MzU1NzUyMzQmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDs4ODA3MDM3MTk1NTU3NDIzNDcyOTQwODM1OTUyMDg4NjE2NjYyMDI1NzI4NTM3NTU4MTMwNzkmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDsyODI1ODY0ODcyODIxNzM3MDU1NjYxOTY4OTg5NTI2NjIwMTg3NzY4MTA2MjkyMDA4MTc3OTImcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDszMzgxMzU4NzY4Mjg0MjY0MTI0MzI0MzE0ODAyODIxNzM2NzQ1MDY3MjA2OTM1MDc2MjY4OTUmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDszMDQzNDU5MzkzNzUwMzI5NjYzNjM3NzU3NTA2MjQ3MzMyMzk5MjM0ODI4ODMxMDc3MzM5MDUmcXVvdDsKICAgICAgICAgICAgICAgICAgICAgICAmcXVvdDsyNzY4MDIwMDc1Nzk4NDM1NjEyMDIwNTY5MCZxdW90OzsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICAgIGludCBsaWNlbnNlID0gTElDRU5TRV9GUkVFOwogICAgaW50IGlpOwoKICAgIGZvciAoaWkgPSAwOyBpaSAmbHQ7IGFyZ2M7ICsraWkpCiAgICB7CiAgICAgICAgaWYgKCFzdHJjbXAoYXJndltpaV0sICZxdW90O3N3eGMzMiZxdW90OykgfHwKICAgICAgICAgICAgIXN0cmNtcChhcmd2W2lpXSwgJnF1b3Q7c3d4YzE2JnF1b3Q7KSB8fAogICAgICAgICAgICAhc3RyY21wKGFyZ3ZbaWldLCAmcXVvdDtzd3hjOCZxdW90OykpCiAgICAgICAgewogICAgICAgICAgICBsaWNlbnNlID0gTElDRU5TRV9QUk87CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJndltpaV0sICZxdW90O3N3eGNwcDMyJnF1b3Q7KSkKICAgICAgICB7CiAgICAgICAgICAgIGxpY2Vuc2UgPSBMSUNFTlNFX0NQUEZVTEw7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJndltpaV0sICZxdW90Oy1oYXNoJnF1b3Q7KSkKICAgICAgICB7CiAgICAgICAgICAgIGludCBpbmRleCA9IGF0b2koYXJndltpaSsxXSk7CiAgICAgICAgICAgIHByaW50ZigmcXVvdDslLjEwcyZxdW90OywgJmFtcDtYQzhfS0VZW2luZGV4XSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGxpY2Vuc2U7Cn0=
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
enum
{
LICENSE_FREE,
LICENSE_STANDARD,
LICENSE_PRO,
LICENSE_NULL,
LICENSE_NOCPP,
LICENSE_CPPFREE,
LICENSE_CPPFULL
};
/* Padded keystring for XC8 compiler */
const char XC8_KEY[] = "120205690315959428539973816151144999076498629234049888"
"179227155534183820578631309018645587360933525814619915"
"779526071941849199599867328321377639683720790016145394"
"178294936006671919157552224249424396156390966410329115"
"909578096551465127991840510571525598801543710978110203"
"982753256678760352233698494166181105701471577863949973"
"752378527793703095602570185318279000307654710756304884"
"332086971157374238079344503160762531771453544441183117"
"818224971852635709182448998796203508335756172022603393"
"785870328131267807990054177348691152537065623705744096"
"622171290262732073236149224291304052855537234103307757"
"779806424202430488281521000914602653822069627155202082"
"274335001015294801198690117625951676366998171835575234"
"880703719555742347294083595208861666202572853755813079"
"282586487282173705566196898952662018776810629200817792"
"338135876828426412432431480282173674506720693507626895"
"304345939375032966363775750624733239923482883107733905"
"27680200757984356120205690";
int main(int argc, char *argv[])
{
int license = LICENSE_FREE;
int ii;
for (ii = 0; ii < argc; ++ii)
{
if (!strcmp(argv[ii], "swxc32") ||
!strcmp(argv[ii], "swxc16") ||
!strcmp(argv[ii], "swxc8"))
{
license = LICENSE_PRO;
}
else if (!strcmp(argv[ii], "swxcpp32"))
{
license = LICENSE_CPPFULL;
}
else if (!strcmp(argv[ii], "-hash"))
{
int index = atoi(argv[ii+1]);
printf("%.10s", &XC8_KEY[index]);
}
}
return license;
}