import struct
def rol(data, shift, size=8):
shift %= size
remains = data >> (size - shift)
body = (data << shift) - (remains << size )
return (body + remains)
#decrypt 1
table = [0x0, 0x1, 0x4727, 0x25a3, 0x619e, 0x146d, 0x4acc, 0x2112, 0x11f0, 0x845, 0x4724, 0x2ebd, 0x3ce4, 0x589c, 0x3eba, 0x4651, 0x13b6, 0x8d, 0x3342, 0x6200, 0x6877, 0x47e2, 0x507b, 0x175a, 0x6cf0, 0x44ca, 0x43a0, 0x24ca, 0x403a, 0x470b, 0x480a, 0x3df3, 0x303d, 0x148f, 0x89e, 0x5fa3, 0x9ca, 0x2822, 0x3345, 0x46aa, 0x378b, 0x212c, 0x4aac, 0x59b, 0x2c59, 0x3da9, 0x3283, 0x5aca, 0xc3e, 0x4c29, 0x9dd, 0x1377, 0x41de, 0x1dcf, 0x3811, 0x4c93, 0x44f2, 0x41c, 0x5818, 0xf83, 0x38ce, 0x2717, 0x469, 0x3f1d, 0x5533, 0x25aa, 0x42f8, 0x3fde, 0x6922, 0x3d38, 0x49ab, 0x3f68, 0x5148, 0x3999, 0x303a, 0x6a1e, 0x2f1, 0x1312, 0xfc3, 0x2851, 0x4c0d, 0x6687, 0x2819, 0x3ec1, 0x6137, 0x1013, 0x668b, 0xc57, 0x2d6c, 0xc43, 0x1a73, 0x1d82, 0x4e95, 0x4b53, 0x5a3, 0xd4c, 0x2b1a, 0x4404, 0x6cc8, 0x1c23, 0x132, 0x3de, 0x51e3, 0x8c7, 0x65a5, 0x236e, 0x16a2, 0x1f05, 0x1b36, 0x1640, 0x326b, 0x2cec, 0x6626, 0x6962, 0x3ad3, 0x3886, 0x2677, 0x6ac2, 0x532, 0x2484, 0x246b, 0x5a3d, 0x6ae8, 0x3b11, 0x1df0, 0x329b, 0x3a8f, 0x3027, 0x4d8d, 0x220b, 0x161a, 0x3f30, 0x8ba, 0x8c, 0x15eb, 0x2c04, 0x69d6, 0x30d, 0x1b5b, 0x3e57, 0x605a, 0x20db, 0x6bac, 0x6904, 0x5a78, 0x31fb, 0x3263, 0x4e58, 0x5c0c, 0x1d99, 0x5165, 0x5d32, 0x2bad, 0x407b, 0x3767, 0x5493, 0x2ab3, 0x3ebc, 0x57d1, 0x26a4, 0x6342, 0x5106, 0xcbb, 0xe02, 0x44c5, 0x665a, 0xb88, 0x5811, 0x4574, 0x413f, 0x6f7, 0x3123, 0x4d09, 0x5526, 0x3b79, 0x66ea, 0x533, 0x58d5, 0x4468, 0x2f17, 0x4c52, 0x2b9e, 0x3385, 0x13c8, 0x3425, 0xe43, 0x5334, 0x5b1c, 0xad9, 0x3787, 0x57ba, 0x3750, 0x2735, 0x3d37, 0x1533, 0x336c, 0x1e1c, 0x45be, 0x51a1, 0x5077, 0x489b, 0x315c, 0x3579, 0x11fa, 0x67d9, 0x4bf2, 0x3044, 0x5702, 0xe8b, 0x6c74, 0x4f54, 0x3f7, 0x429c, 0xe52, 0x3164, 0xa79, 0x47d5, 0x1ac7, 0x2147, 0x5e9, 0x1736, 0x2eb5, 0x2858, 0x3de6, 0x328d, 0x50c, 0x2130, 0x355d, 0x1f4c, 0x38c8, 0x5a9c, 0x85a, 0x4439, 0x1d19, 0x4a3b, 0x598f, 0xbc1, 0x3369, 0x2042, 0x1bc6, 0xfe3, 0x180a, 0x6b2c, 0x4bd, 0x1836, 0x28bc, 0x24a6, 0x2f8d, 0x3976, 0x7ac, 0x17cd, 0x4d42, 0x27a4, 0x371a, 0x3dfb, 0xe7]
o = ''
s = open('rev_77ca4701/HelpMe.encrypted','rb').read()
for i in range(0,len(s),4):
o += chr(table.index(struct.unpack('<l',s[i:i+4])[0]))
#decrypt 2
s = o
o = ''
for c in s:
b = rol(ord(c),2) ^ 0x21
b = ~b & 0xFF
o += chr(b)
open('HelpMe.zip','wb').write(o)