#include <stdio.h>
const unsigned long APP_MASK = 0xA80980B1;
unsigned long uds_calc_key(void);
unsigned long uds_calc_key(void)
{
unsigned long seed=0x711D89D3;
unsigned long tmpseed = seed;
unsigned long key_1 = tmpseed ^ APP_MASK;
unsigned long seed_2 = tmpseed;
seed_2 = (seed_2 & 0x55555555) << 1 ^ (seed_2 & 0xAAAAAAAA) >> 1;
seed_2 = (seed_2 ^ 0x33333333) << 2 ^ (seed_2 ^ 0xCCCCCCCC) >> 2;
seed_2 = (seed_2 & 0x0F0F0F0F) << 4 ^ (seed_2 & 0xF0F0F0F0) >> 4;
seed_2 = (seed_2 ^ 0x00FF00FF) << 8 ^ (seed_2 ^ 0xFF00FF00) >> 8;
seed_2 = (seed_2 & 0x0000FFFF) << 16 ^ (seed_2 & 0xFFFF0000) >> 16;
unsigned long key_2 = seed_2;
unsigned long key = key_1 + key_2;
//return key;
printf("output = 0x%8x\n",key
); }
int main(void)
{
uds_calc_key();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmNvbnN0IHVuc2lnbmVkIGxvbmcgIEFQUF9NQVNLID0gMHhBODA5ODBCMTsKdW5zaWduZWQgbG9uZyAgdWRzX2NhbGNfa2V5KHZvaWQpOwp1bnNpZ25lZCBsb25nICB1ZHNfY2FsY19rZXkodm9pZCkKewoJdW5zaWduZWQgbG9uZyAgc2VlZD0weDcxMUQ4OUQzOwoJdW5zaWduZWQgbG9uZyAgdG1wc2VlZCA9IHNlZWQ7Cgl1bnNpZ25lZCBsb25nICBrZXlfMSA9IHRtcHNlZWQgXiBBUFBfTUFTSzsKCXVuc2lnbmVkIGxvbmcgIHNlZWRfMiA9IHRtcHNlZWQ7CglzZWVkXzIgPSAoc2VlZF8yICYgMHg1NTU1NTU1NSkgPDwgMSBeIChzZWVkXzIgJiAweEFBQUFBQUFBKSA+PiAxOwoJc2VlZF8yID0gKHNlZWRfMiBeIDB4MzMzMzMzMzMpIDw8IDIgXiAoc2VlZF8yIF4gMHhDQ0NDQ0NDQykgPj4gMjsKCXNlZWRfMiA9IChzZWVkXzIgJiAweDBGMEYwRjBGKSA8PCA0IF4gKHNlZWRfMiAmIDB4RjBGMEYwRjApID4+IDQ7CglzZWVkXzIgPSAoc2VlZF8yIF4gMHgwMEZGMDBGRikgPDwgOCBeIChzZWVkXzIgXiAweEZGMDBGRjAwKSA+PiA4OwoJc2VlZF8yID0gKHNlZWRfMiAmIDB4MDAwMEZGRkYpIDw8IDE2IF4gKHNlZWRfMiAmIDB4RkZGRjAwMDApID4+IDE2OwoJdW5zaWduZWQgbG9uZyAga2V5XzIgPSBzZWVkXzI7Cgl1bnNpZ25lZCBsb25nICBrZXkgPSBrZXlfMSArIGtleV8yOwoJLy9yZXR1cm4ga2V5OwoJcHJpbnRmKCJvdXRwdXQgPSAweCU4eFxuIixrZXkpOwp9CmludCBtYWluKHZvaWQpCnsKCgl1ZHNfY2FsY19rZXkoKTsKCXJldHVybiAwOwp9