#include <stdio.h>
#include <stdint.h>
#include <string.h>
#define haszero(v) (((v) - 0x0101010101010101UL) & ~(v) & 0x8080808080808080UL)
/*
uint64_t ct_hash(const uint64_t *ptr)
{
uint64_t val = 14695981039346656037ull;
for (size_t i=0;;++i) {
val ^= ptr[i];
val *= 1099511628211ull;
if haszero(ptr[i]) {
return val;
}
}
}
uint64_t barop(const char *ptr){
uint64_t * p64 = (uint64_t*)ptr;
return haszero(* (p64))
? * (p64)
: ct_hash(p64)
;
}
*/
uint64_t bagor(const char *ptr){
uint64_t * p64 = (uint64_t*)ptr;
return haszero(* (p64))
? * (p64)
: -1
;
}
#define SWITCH(ptr) \
do{ \
uint64_t Switch = (bagor(ptr)); \
const char * SwitchKey = ptr; \
if (0){
#define CASE(ptr) } else if (-1 != Switch \
? Switch == bagor(ptr) \
: 0 == strcmp(SwitchKey, ptr) \
){
#define DEFAULT } else {
#define ENDCASE } } while(0);
void say(const char who[8]){
SWITCH(who)
CASE("pituh")
CASE("lalka")
CASE("syoma")
CASE("bagor")
CASE("korova")
break;
CASE("Stripper Penetrator\0\0")
DEFAULT
ENDCASE
}
int main()
{
say("syoma");
say("korova");
say("pituh");
say("neznayka");
say("Stripper Penetrator");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4gCiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgaGFzemVybyh2KSAoKCh2KSAtIDB4MDEwMTAxMDEwMTAxMDEwMVVMKSAmIH4odikgJiAweDgwODA4MDgwODA4MDgwODBVTCkKLyoKdWludDY0X3QgY3RfaGFzaChjb25zdCB1aW50NjRfdCAqcHRyKQp7CiAgICB1aW50NjRfdCB2YWwgPSAxNDY5NTk4MTAzOTM0NjY1NjAzN3VsbDsKICAgIAogICAgZm9yIChzaXplX3QgaT0wOzsrK2kpIHsKICAgICAgICB2YWwgXj0gcHRyW2ldOwogICAgICAgIHZhbCAqPSAxMDk5NTExNjI4MjExdWxsOwogICAgICAgIGlmIGhhc3plcm8ocHRyW2ldKSB7CiAgICAgICAgICAgIHJldHVybiB2YWw7CiAgICAgICAgfQogICAgfQp9Cgp1aW50NjRfdCBiYXJvcChjb25zdCBjaGFyICpwdHIpewogICAgdWludDY0X3QgKiBwNjQgPSAodWludDY0X3QqKXB0cjsKICAgICByZXR1cm4gaGFzemVybygqIChwNjQpKSAKICAgICAgICA/ICogKHA2NCkKICAgICAgICA6IGN0X2hhc2gocDY0KQogICAgIDsKfQoqLwp1aW50NjRfdCBiYWdvcihjb25zdCBjaGFyICpwdHIpewogICAgdWludDY0X3QgKiBwNjQgPSAodWludDY0X3QqKXB0cjsKICAgICByZXR1cm4gaGFzemVybygqIChwNjQpKSAKICAgICAgICA/ICogKHA2NCkKICAgICAgICA6IC0xCiAgICAgOwp9CgoKI2RlZmluZSBTV0lUQ0gocHRyKSAgICAgICAgICAgICAgICAgICAgIFwKICAgIGRveyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHVpbnQ2NF90IFN3aXRjaCA9IChiYWdvcihwdHIpKTsgICAgIFwKICAgIGNvbnN0IGNoYXIgKiBTd2l0Y2hLZXkgPSBwdHI7ICAgICAgIFwKICAgIGlmICgwKXsgCiAgICAKI2RlZmluZSBDQVNFKHB0cikgfSBlbHNlIGlmICgtMSAhPSBTd2l0Y2ggICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgID8gICAgU3dpdGNoID09IGJhZ29yKHB0cikgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgIDogICAgMCA9PSBzdHJjbXAoU3dpdGNoS2V5LCBwdHIpICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICApewojZGVmaW5lIERFRkFVTFQgfSBlbHNlIHsKI2RlZmluZSBFTkRDQVNFIH0gfSB3aGlsZSgwKTsKCgp2b2lkIHNheShjb25zdCBjaGFyIHdob1s4XSl7CiAgICBwcmludGYoIiU4cyBzYXlzOiAiLHdobyk7IAogICAgU1dJVENIKHdobykgCiAgICBDQVNFKCJwaXR1aCIpIAogICAgICAgIHB1dHMoImtva29rbyIpOyAKICAgIENBU0UoImxhbGthIikKICAgICAgICAgcHV0cygiYXphemEiKTsKICAgIENBU0UoInN5b21hIikKICAgICAgICAgcHV0cygicnVzLW55YSIpOwogICAgQ0FTRSgiYmFnb3IiKQogICAgICAgICBwdXRzKCJoaGhyZ2hoIik7CiAgICBDQVNFKCJrb3JvdmEiKQogICAgICAgICBwdXRzKCJtb290b29scyIpOwogICAgICAgICBicmVhazsKICAgICAgICAgcHV0cygidW5yZWFjaGFibGUiKTsKICAgIENBU0UoIlN0cmlwcGVyIFBlbmV0cmF0b3JcMFwwIikKICAgICAgICAgcHV0cygidmFuaXNoZWQiKTsKICAgIERFRkFVTFQKICAgICAgICBwdXRzKCJkdW5ubywgbG9sIik7CiAgICBFTkRDQVNFCgogICAgCn0KaW50IG1haW4oKQp7CiAgICBzYXkoInN5b21hIik7CiAgICBzYXkoImtvcm92YSIpOwogICAgc2F5KCJwaXR1aCIpOwogICAgc2F5KCJuZXpuYXlrYSIpOwogICAgc2F5KCJTdHJpcHBlciBQZW5ldHJhdG9yIik7ICAgIAoKICAgIHJldHVybiAwOwp9