#include<stdio.h>
main()
{
unsigned char data[] = {
0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
int i;
unsigned long long A3 = 0x13108B3C1, A2, S1=0, S3=0;
for (i = 0; i < sizeof(data); i++)
{
A3 += data[i] << (S1 & 0x0F);
A2 = A3<<0x3F>>0x1F | A3>>1 ^ A3<<0x2C>>0x20;
A3 = A2 >> 0x14 & 0xFFF ^ A2;
S3 ^= A3;
S1 += 7;
}
for ( i-= 1; i >= 0 ; i--)
{
A3 += data[i] << (S1 & 0x0F);
A2 = A3<<0x3F>>0x1F | A3>>1 ^ A3<<0x2C>>0x20;
A3 = A2 >> 0x14 & 0xFFF ^ A2;
S3 ^= A3;
S1 += 3;
}
}
I2luY2x1ZGU8c3RkaW8uaD4KbWFpbigpCnsKICAgIHVuc2lnbmVkIGNoYXIgZGF0YVtdID0gewogICAgICAgICAweDExLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDQzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAogICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwCiAgICB9OyAKICAgIGludCBpOwogICAgdW5zaWduZWQgbG9uZyBsb25nIEEzID0gMHgxMzEwOEIzQzEsIEEyLCBTMT0wLCBTMz0wOwogICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGRhdGEpOyBpKyspCiAgICB7ICAgCiAgICAgICAgQTMgKz0gZGF0YVtpXSA8PCAoUzEgJiAweDBGKTsKICAgICAgICBBMiA9IEEzPDwweDNGPj4weDFGIHwgQTM+PjEgXiBBMzw8MHgyQz4+MHgyMDsKICAgICAgICBBMyA9IEEyID4+IDB4MTQgJiAweEZGRiBeIEEyOwogICAgICAgIFMzIF49IEEzOwogICAgICAgIFMxICs9IDc7CiAgICB9CiAgICBmb3IgKCBpLT0gMTsgaSA+PSAwIDsgaS0tKQogICAgeyAgIAogICAgICAgIEEzICs9IGRhdGFbaV0gPDwgKFMxICYgMHgwRik7CiAgICAgICAgQTIgPSBBMzw8MHgzRj4+MHgxRiB8IEEzPj4xIF4gQTM8PDB4MkM+PjB4MjA7CiAgICAgICAgQTMgPSBBMiA+PiAweDE0ICYgMHhGRkYgXiBBMjsKICAgICAgICBTMyBePSBBMzsKICAgICAgICBTMSArPSAzOwogICAgfQogICAgcHJpbnRmKCJcbi0tLVxuJVgiLFMzKTsKfQ==