#include <stdio.h>
#include <inttypes.h>
#include "stdint.h" /* Replace with <stdint.h> if appropriate */
#undef get16bits
#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__) \
|| defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
#define get16bits(d) (*((const uint16_t *) (d)))
#endif
#if !defined (get16bits)
#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
+(uint32_t)(((const uint8_t *)(d))[0]) )
#endif
uint32_t SuperFastHash (const char * data, int len) {
uint32_t hash = len, tmp;
int rem;
if (len <= 0 || data == NULL) return 0;
rem = len & 3;
len >>= 2;
/* Main loop */
for (;len > 0; len--) {
hash += get16bits (data);
tmp = (get16bits (data+2) << 11) ^ hash;
hash = (hash << 16) ^ tmp;
data += 2*sizeof (uint16_t);
hash += hash >> 11;
}
/* Handle end cases */
switch (rem) {
case 3: hash += get16bits (data);
hash ^= hash << 16;
hash ^= ((signed char)data[sizeof (uint16_t)]) << 18;
hash += hash >> 11;
break;
case 2: hash += get16bits (data);
hash ^= hash << 11;
hash += hash >> 17;
break;
case 1: hash += (signed char)*data;
hash ^= hash << 10;
hash += hash >> 1;
}
/* Force "avalanching" of final 127 bits */
hash ^= hash << 3;
hash += hash >> 5;
hash ^= hash << 4;
hash += hash >> 17;
hash ^= hash << 25;
hash += hash >> 6;
return hash;
}
int main(void) {
//char arr[3][100] = {"2cb2db96-3bd0-403e-abe2-9269b3761041.Bubble",
// "9ce3c9c2-462f-4cc9-bbd7-57d656445be0.Bubble", "9ce3c9c2-462f-4cc9-bbd7-57d656445be0.Dot"};
//char chunk[] = "Microsoft.Global.OnRamp_ImportUpsell";
//uint32_t hash = SuperFastHash(chunk, strlen(chunk));
//printf("%d\n", hash);
char ids[39][100]={"Nurturing.Local.chinaLanguageMismatch","Nurturing.Local.personalizeManageText","Nurturing.Local.layoutPromotion","Nurturing.Local.layoutDemotion","Nurturing.Local.locationAccuracyRevIP","Nurturing.Local.marketLanguage","Nurturing.Local.marketRoaming","Nurturing.Local.o365tab2_psl","Nurturing.Local.OfficeCoachmarkO365Layout","Nurturing.Local.OfficeCoachmarkWorkFeedTab","Nurturing.Local.topSitesCloseByWpo","Nurturing.Local.streakIntroduction","Nurturing.Local.streakOneDay","Nurturing.Local.lockScreenLocationCoachmark","Nurturing.Local.cnexEndBanner","Nurturing.Local.rubyFeedback","Nurturing.Local.widgetsUpsell","Nurturing.Local.marketChanged","Nurturing.Local.prong1RotationSettingsButton","Nurturing.Local.prong1SettingsButtonDialog","Nurturing.Local.prong1ShuffleButton","Nurturing.Local.prong2ProfileMigration","Nurturing.Local.prong2PlayPivotButton","Nurturing.Local.prong2MarketMismatchButton","Nurturing.Local.prong2WeatherNurturing","Nurturing.Local.prong2ConsumptionCoachmark","Nurturing.Local.prong2RubyOptoutCoachmark","Nurturing.Local.nurturingPlacementManagerTestKey","Nurturing.Local.actionTrayComment","Nurturing.Local.actionTrayCommentControl","Nurturing.Local.actionTrayCommentFirst","Nurturing.Local.actionTrayCommentFirstControl","Nurturing.Local.consumptionTopicTag","Nurturing.Local.microsoftStartAppCoachmark","Nurturing.Local.personalizeCexp","Nurturing.Local.TermOfUseBanner2","Nurturing.Local.TermOfUseBanner1","Nurturing.Local.LanguageExplainingBanner","Nurturing.Local.popupCF"};
for (int i = 0; i < 39; i++)
{
//printf("%d\n", strlen(ids[i]));
int hash
= SuperFastHash
(ids
[i
], strlen(ids
[i
])); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgoKI2luY2x1ZGUgInN0ZGludC5oIiAvKiBSZXBsYWNlIHdpdGggPHN0ZGludC5oPiBpZiBhcHByb3ByaWF0ZSAqLwojdW5kZWYgZ2V0MTZiaXRzCiNpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2kzODZfXykpIHx8IGRlZmluZWQoX19XQVRDT01DX18pIFwKICB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkIChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQgKF9fVFVSQk9DX18pCiNkZWZpbmUgZ2V0MTZiaXRzKGQpICgqKChjb25zdCB1aW50MTZfdCAqKSAoZCkpKQojZW5kaWYKCiNpZiAhZGVmaW5lZCAoZ2V0MTZiaXRzKQojZGVmaW5lIGdldDE2Yml0cyhkKSAoKCgodWludDMyX3QpKCgoY29uc3QgdWludDhfdCAqKShkKSlbMV0pKSA8PCA4KVwKICAgICAgICAgICAgICAgICAgICAgICArKHVpbnQzMl90KSgoKGNvbnN0IHVpbnQ4X3QgKikoZCkpWzBdKSApCiNlbmRpZgoKdWludDMyX3QgU3VwZXJGYXN0SGFzaCAoY29uc3QgY2hhciAqIGRhdGEsIGludCBsZW4pIHsKdWludDMyX3QgaGFzaCA9IGxlbiwgdG1wOwppbnQgcmVtOwoKICAgIGlmIChsZW4gPD0gMCB8fCBkYXRhID09IE5VTEwpIHJldHVybiAwOwoKICAgIHJlbSA9IGxlbiAmIDM7CiAgICBsZW4gPj49IDI7CgogICAgLyogTWFpbiBsb29wICovCiAgICBmb3IgKDtsZW4gPiAwOyBsZW4tLSkgewogICAgICAgIGhhc2ggICs9IGdldDE2Yml0cyAoZGF0YSk7CiAgICAgICAgdG1wICAgID0gKGdldDE2Yml0cyAoZGF0YSsyKSA8PCAxMSkgXiBoYXNoOwogICAgICAgIGhhc2ggICA9IChoYXNoIDw8IDE2KSBeIHRtcDsKICAgICAgICBkYXRhICArPSAyKnNpemVvZiAodWludDE2X3QpOwogICAgICAgIGhhc2ggICs9IGhhc2ggPj4gMTE7CiAgICB9CgogICAgLyogSGFuZGxlIGVuZCBjYXNlcyAqLwogICAgc3dpdGNoIChyZW0pIHsKICAgICAgICBjYXNlIDM6IGhhc2ggKz0gZ2V0MTZiaXRzIChkYXRhKTsKICAgICAgICAgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxNjsKICAgICAgICAgICAgICAgIGhhc2ggXj0gKChzaWduZWQgY2hhcilkYXRhW3NpemVvZiAodWludDE2X3QpXSkgPDwgMTg7CiAgICAgICAgICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IGhhc2ggKz0gZ2V0MTZiaXRzIChkYXRhKTsKICAgICAgICAgICAgICAgIGhhc2ggXj0gaGFzaCA8PCAxMTsKICAgICAgICAgICAgICAgIGhhc2ggKz0gaGFzaCA+PiAxNzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMTogaGFzaCArPSAoc2lnbmVkIGNoYXIpKmRhdGE7CiAgICAgICAgICAgICAgICBoYXNoIF49IGhhc2ggPDwgMTA7CiAgICAgICAgICAgICAgICBoYXNoICs9IGhhc2ggPj4gMTsKICAgIH0KCiAgICAvKiBGb3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDEyNyBiaXRzICovCiAgICBoYXNoIF49IGhhc2ggPDwgMzsKICAgIGhhc2ggKz0gaGFzaCA+PiA1OwogICAgaGFzaCBePSBoYXNoIDw8IDQ7CiAgICBoYXNoICs9IGhhc2ggPj4gMTc7CiAgICBoYXNoIF49IGhhc2ggPDwgMjU7CiAgICBoYXNoICs9IGhhc2ggPj4gNjsKCiAgICByZXR1cm4gaGFzaDsKfQoKaW50IG1haW4odm9pZCkgewoJLy9jaGFyIGFyclszXVsxMDBdID0geyIyY2IyZGI5Ni0zYmQwLTQwM2UtYWJlMi05MjY5YjM3NjEwNDEuQnViYmxlIiwgCgkvLyAgICAgICAgICAgICAgICAgICAgICI5Y2UzYzljMi00NjJmLTRjYzktYmJkNy01N2Q2NTY0NDViZTAuQnViYmxlIiwgIjljZTNjOWMyLTQ2MmYtNGNjOS1iYmQ3LTU3ZDY1NjQ0NWJlMC5Eb3QifTsKCS8vY2hhciBjaHVua1tdID0gIk1pY3Jvc29mdC5HbG9iYWwuT25SYW1wX0ltcG9ydFVwc2VsbCI7CgkvL3VpbnQzMl90IGhhc2ggPSBTdXBlckZhc3RIYXNoKGNodW5rLCBzdHJsZW4oY2h1bmspKTsKCS8vcHJpbnRmKCIlZFxuIiwgaGFzaCk7CgljaGFyIGlkc1szOV1bMTAwXT17Ik51cnR1cmluZy5Mb2NhbC5jaGluYUxhbmd1YWdlTWlzbWF0Y2giLCJOdXJ0dXJpbmcuTG9jYWwucGVyc29uYWxpemVNYW5hZ2VUZXh0IiwiTnVydHVyaW5nLkxvY2FsLmxheW91dFByb21vdGlvbiIsIk51cnR1cmluZy5Mb2NhbC5sYXlvdXREZW1vdGlvbiIsIk51cnR1cmluZy5Mb2NhbC5sb2NhdGlvbkFjY3VyYWN5UmV2SVAiLCJOdXJ0dXJpbmcuTG9jYWwubWFya2V0TGFuZ3VhZ2UiLCJOdXJ0dXJpbmcuTG9jYWwubWFya2V0Um9hbWluZyIsIk51cnR1cmluZy5Mb2NhbC5vMzY1dGFiMl9wc2wiLCJOdXJ0dXJpbmcuTG9jYWwuT2ZmaWNlQ29hY2htYXJrTzM2NUxheW91dCIsIk51cnR1cmluZy5Mb2NhbC5PZmZpY2VDb2FjaG1hcmtXb3JrRmVlZFRhYiIsIk51cnR1cmluZy5Mb2NhbC50b3BTaXRlc0Nsb3NlQnlXcG8iLCJOdXJ0dXJpbmcuTG9jYWwuc3RyZWFrSW50cm9kdWN0aW9uIiwiTnVydHVyaW5nLkxvY2FsLnN0cmVha09uZURheSIsIk51cnR1cmluZy5Mb2NhbC5sb2NrU2NyZWVuTG9jYXRpb25Db2FjaG1hcmsiLCJOdXJ0dXJpbmcuTG9jYWwuY25leEVuZEJhbm5lciIsIk51cnR1cmluZy5Mb2NhbC5ydWJ5RmVlZGJhY2siLCJOdXJ0dXJpbmcuTG9jYWwud2lkZ2V0c1Vwc2VsbCIsIk51cnR1cmluZy5Mb2NhbC5tYXJrZXRDaGFuZ2VkIiwiTnVydHVyaW5nLkxvY2FsLnByb25nMVJvdGF0aW9uU2V0dGluZ3NCdXR0b24iLCJOdXJ0dXJpbmcuTG9jYWwucHJvbmcxU2V0dGluZ3NCdXR0b25EaWFsb2ciLCJOdXJ0dXJpbmcuTG9jYWwucHJvbmcxU2h1ZmZsZUJ1dHRvbiIsIk51cnR1cmluZy5Mb2NhbC5wcm9uZzJQcm9maWxlTWlncmF0aW9uIiwiTnVydHVyaW5nLkxvY2FsLnByb25nMlBsYXlQaXZvdEJ1dHRvbiIsIk51cnR1cmluZy5Mb2NhbC5wcm9uZzJNYXJrZXRNaXNtYXRjaEJ1dHRvbiIsIk51cnR1cmluZy5Mb2NhbC5wcm9uZzJXZWF0aGVyTnVydHVyaW5nIiwiTnVydHVyaW5nLkxvY2FsLnByb25nMkNvbnN1bXB0aW9uQ29hY2htYXJrIiwiTnVydHVyaW5nLkxvY2FsLnByb25nMlJ1YnlPcHRvdXRDb2FjaG1hcmsiLCJOdXJ0dXJpbmcuTG9jYWwubnVydHVyaW5nUGxhY2VtZW50TWFuYWdlclRlc3RLZXkiLCJOdXJ0dXJpbmcuTG9jYWwuYWN0aW9uVHJheUNvbW1lbnQiLCJOdXJ0dXJpbmcuTG9jYWwuYWN0aW9uVHJheUNvbW1lbnRDb250cm9sIiwiTnVydHVyaW5nLkxvY2FsLmFjdGlvblRyYXlDb21tZW50Rmlyc3QiLCJOdXJ0dXJpbmcuTG9jYWwuYWN0aW9uVHJheUNvbW1lbnRGaXJzdENvbnRyb2wiLCJOdXJ0dXJpbmcuTG9jYWwuY29uc3VtcHRpb25Ub3BpY1RhZyIsIk51cnR1cmluZy5Mb2NhbC5taWNyb3NvZnRTdGFydEFwcENvYWNobWFyayIsIk51cnR1cmluZy5Mb2NhbC5wZXJzb25hbGl6ZUNleHAiLCJOdXJ0dXJpbmcuTG9jYWwuVGVybU9mVXNlQmFubmVyMiIsIk51cnR1cmluZy5Mb2NhbC5UZXJtT2ZVc2VCYW5uZXIxIiwiTnVydHVyaW5nLkxvY2FsLkxhbmd1YWdlRXhwbGFpbmluZ0Jhbm5lciIsIk51cnR1cmluZy5Mb2NhbC5wb3B1cENGIn07Cglmb3IgKGludCBpID0gMDsgaSA8IDM5OyBpKyspIAoJewoJCS8vcHJpbnRmKCIlZFxuIiwgc3RybGVuKGlkc1tpXSkpOwoJCWludCBoYXNoID0gU3VwZXJGYXN0SGFzaChpZHNbaV0sIHN0cmxlbihpZHNbaV0pKTsKCQlwcmludGYoIiVkXG4iLCBoYXNoKTsKCX0KCXJldHVybiAwOwp9Cg==