Skip to content

Instantly share code, notes, and snippets.

@taida957789
Last active October 22, 2018 18:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taida957789/f5b606fd1286e47eb18d3b9416f21094 to your computer and use it in GitHub Desktop.
Save taida957789/f5b606fd1286e47eb18d3b9416f21094 to your computer and use it in GitHub Desktop.
EOP.c
#include <stdint.h> // for uint32_t
#include <limits.h> // for CHAR_BIT
static inline uint32_t rotl32 (uint32_t n, unsigned int c)
{
const unsigned int mask = (CHAR_BIT*sizeof(n) - 1); // assumes width is a power of 2.
// assert ( (c<=mask) &&"rotate by type width or more");
c &= mask;
return (n<<c) | (n>>( (-c)&mask ));
}
static inline uint32_t rotr32 (uint32_t n, unsigned int c)
{
const unsigned int mask = (CHAR_BIT*sizeof(n) - 1);
// assert ( (c<=mask) &&"rotate by type width or more");
c &= mask;
return (n>>c) | (n<<( (-c)&mask ));
}
uint8_t get_byte(uint32_t v, int position)
{
return (v >> position * 8) & 0xFF;
}
void print_hex(char* buff, uint32_t size)
{
for (int i = 0; i < size; i ++) {
printf("%02x ", (uint8_t)(buff[i]&0xFF));
if ( i > 0 && i % 8 == 7)
puts("");
}
puts("");
}
char input[49];
char output[49];
uint8_t _key[] = {0x6e,0x4d,0x1a,0xc0,0x36,0x66,0xcb,0xa4,0xa1,0x5b,0xf,0x5b,0x26,0x69,0x26,0x2b,0x8f,0xcb,0x75,0xef,0x2a,0x22,0x37,0xa0,0x9a,0x61,0x69,0xba,0x32,0x89,0x79,0x60,0x59,0xa8,0x6e,0x2,0x93,0x58,0x31,0xf1,0xa6,0x33,0x59,0x8b,0x67,0xac,0x2b,0xe7,0x4,0x89,0xcc,0x1a,0xef,0xd1,0x48,0x2e,0xab,0xd5,0x21,0x3f,0x1f,0x5a,0x33,0x69,0xf0,0x68,0x83,0xbe,0xc3,0x84,0xf7,0xf1,0x90,0x49,0x20,0x18,0x68,0xa1,0xce,0x18,0x57,0x91,0x96,0x33,0x47,0xf1,0xeb,0x21,0x72,0xf8,0x7a,0xfa,0x6c,0xbe,0xe6,0xab,0x7e,0x61,0x4e,0x51,0xc2,0x3f,0x77,0xec,0x6a,0xc3,0x18,0xc6,0xa4,0xf7,0xce,0xf9,0x1,0xb3,0xdc,0x75,0x7a,0x8c,0xe1,0xae,0x69,0x26,0xf2,0x24,0x5f,0x35,0xdb,0x9a,0x23,0xe1,0x4e,0x77,0xa0,0x34,0xf4,0xc8,0xef,0x97,0x7e,0xf4,0xf7,0x7d,0x79,0x43,0x45,0x6a,0xe4,0xf6,0xd5,0x80,0xb7,0x5,0x40,0xbf,0xe1,0xe3,0x32,0x75,0xdd,0x54,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb,0xe7,0x56,0x56,0x17,0xfc,0x43,0x43,0x71,0x37,0xbb,0xbb,0x85,0xfe,0x8,0x8,0xd3,0x9,0xd4,0xd4,0xfb,0x2b,0xe2,0xe2,0x1e,0xad,0xa2,0xa2,0xb2,0x2a,0x73,0x73,0xf4,0xc9,0xb3,0xb3,0x3c,0x33,0x2d,0x2d,0xd0,0xe4,0x8c,0x8c,0x2,0xb6,0xb7,0xb7,0x59,0x15,0x8d,0x8d,0x8d,0xf4,0x6,0x6,0x5d,0x10,0x8a,0x8a,0x75,0x32,0xbc,0xbc,0xcb,0x17,0xc6,0xc6,0xc7,0x18,0xcf,0xcf,0x3e,0x85,0x9a,0x9a,0x9b,0x53,0xaa,0xaa,0x1f,0xf6,0x4d,0x4d,0x7e,0xd5,0xea,0xea,0x60,0x78,0x48,0x48,0x80,0xa0,0xe0,0xe0,0xce,0x49,0x2e,0x2e,0x24,0x2d,0x3f,0x3f,0xb4,0x99,0xc3,0xc3,0x95,0xea,0x14,0x14,0x94,0xb1,0xfb,0xfb,0x3f,0xde,0x75,0x75,0x1d,0x40,0xfa,0xfa,0x5,0x5e,0xe8,0xe8,0x4e,0xe9,0xce,0xce,0x47,0xb8,0x2f,0x2f,0x4f,0xb2,0x21,0x21,0x7,0xe8,0x5f,0x5f,0xb6,0x2f,0x74,0x74,0x39,0x6d,0xc5,0xc5,0x2d,0x7c,0xde,0xde,0x1b,0xf3,0x4a,0x4a,0x8c,0xaf,0xe9,0xe9,0x79,0x3d,0xb5,0xb5,0x44,0x55,0x77,0x77,0x8f,0x42,0xb1,0xb1,0x4,0x5,0x7,0x7,0x9f,0x56,0xad,0xad,0x86,0x13,0x50,0x50,0x9a,0x8,0x45,0x45,0x98,0xbe,0xf2,0xf2,0xbc,0x93,0xcd,0xcd,0x54,0x41,0x6b,0x6b,0xc3,0x1d,0xc8,0xc8,0x4d,0x4,0x96,0x96,0xae,0x31,0x66,0x66,0x83,0x4d,0xb8,0xb8,0x91,0xef,0x13,0x13,0x3d,0x68,0xc2,0xc2,0xbb,0x7b,0x92,0x92,0xca,0x4c,0x29,0x29,0xe4,0xdd,0xaf,0xaf,0xe,0xb9,0xbe,0xbe,0xa9,0xd9,0x39,0x39,0xd2,0x52,0x3b,0x3b,0xb9,0xcd,0x25,0x25,0xe3,0x35,0xf0,0xf0,0x64,0x7d,0x4f,0x4f,0x38,0x36,0x2a,0x2a,0x19,0x45,0xfd,0xfd,0x3a,0x80,0x9d,0x9d,0xac,0x87,0xd1,0xd1,0xd7,0xc,0xd3,0xd3,0xd4,0xe1,0x8b,0x8b,0x8b,0x47,0xb6,0xb6,0x7b,0x8b,0x2,0x2,0x13,0xf9,0x44,0x44,0x41,0xb,0x9f,0x9f,0x9,0x51,0xe1,0xe1,0x6c,0x77,0x41,0x41,0x50,0x44,0x6c,0x6c,0x2c,0x27,0x31,0x31,0x6b,0x9f,0x1e,0x1e,0x14,0x11,0x1b,0x1b,0x45,0xe,0x98,0x98,0xf5,0x92,0x5c,0x5c,0x34,0x39,0x23,0x23,0x7a,0xd0,0xed,0xed,0xee,0x61,0x16,0x16,0x90,0xb4,0xfc,0xfc,0xdc,0xeb,0x85,0x85,0xf3,0x21,0xec,0xec,0xab,0x6f,0x8e,0x8e,0xb1,0xc7,0x2b,0x2b,0xed,0x8c,0x4e,0x4e,0x77,0x84,0xb,0xb,0xc4,0xf5,0x97,0x97,0x3,0xed,0x58,0x58,0xde,0x5d,0x32,0x32,0xe1,0x83,0x47,0x47,0x89,0xf1,0x1,0x1,0x6d,0x2c,0xae,0xae,0x76,0xdf,0xe4,0xe4,0x48,0x5a,0x7e,0x7e,0x49,0x1,0x91,0x91,0xe7,0x30,0xf7,0xf7,0xc5,0xae,0x78,0x78,0xcc,0xff,0x99,0x99,0xd9,0xb5,0x6d,0x6d,0x1a,0xa8,0xa5,0xa5,0x55,0x1a,0x84,0x84,0xa8,0x82,0xd6,0xd6,0x6e,0xc1,0xf6,0xf6,0xaa,0x34,0x61,0x61,0x73,0x81,0xc,0xc,0x37,0xd4,0x7b,0x7b,0x53,0xa9,0x34,0x34,0xf1,0x97,0x5b,0x5b,0x96,0x7,0x4c,0x4c,0xdf,0x6,0xdd,0xdd,0x0,0x0,0x0,0x0,0x6f,0x9a,0x19,0x19,0x33,0xd1,0x7c,0x7c,0x32,0x8a,0x93,0x93,0x16,0xa7,0xac,0xac,0x81,0xfb,0xf,0xf,0x9c,0xbb,0xf5,0xf5,0xc1,0xab,0x7f,0x7f,0x5f,0xa6,0x3d,0x3d,0xe6,0x6b,0x18,0x18,0x30,0x3c,0x24,0x24,0xf8,0xc6,0xba,0xba,0xe9,0x89,0x49,0x49,0xbf,0x7e,0x95,0x95,0x58,0x4e,0x62,0x62,0xbd,0xc8,0x22,0x22,0x5b,0xa3,0x3a,0x3a,0xf0,0xcc,0xb4,0xb4,0x5e,0xfd,0xd2,0xd2,0x1,0x5b,0xef,0xef,0x22,0x9e,0x8f,0x8f,0xa4,0x8d,0xdf,0xdf,0x97,0x5c,0xa3,0xa3,0xa7,0x60,0x87,0x87,0x99,0xe5,0x1d,0x1d,0xb7,0x74,0x9b,0x9b,0xaf,0x6a,0x89,0x89,0x78,0x66,0x5a,0x5a,0x29,0x79,0xd9,0xd9,0xec,0xd7,0xa1,0xa1,0xea,0x64,0x11,0x11,0xe2,0x6e,0x1f,0x1f,0x62,0xce,0xff,0xff,0xc8,0xfa,0x9e,0x9e,0xe5,0x86,0x40,0x40,0x56,0xf7,0xdc,0xdc,0x4b,0xb7,0x26,0x26,0xf9,0x9d,0x55,0x55,0x74,0x69,0x53,0x53,0x1c,0x1b,0x15,0x15,0x61,0x23,0xa7,0xa7,0x7c,0x63,0x5d,0x5d,0xcf,0x12,0xc1,0xc1,0xc0,0xf0,0x90,0x90,0x4a,0xec,0xc9,0xc9,0xfd,0x98,0x52,0x52,0x65,0x26,0xa0,0xa0,0x35,0x62,0xcc,0xcc,0xb5,0xc2,0x2c,0x2c,0x2a,0x94,0x81,0x81,0xeb,0x3f,0xfe,0xfe,0x43,0xbd,0x28,0x28,0x20,0x28,0x38,0x38,0x67,0x90,0x17,0x17,0x8a,0x1c,0x59,0x59,0xf6,0x7f,0x4,0x4,0x42,0xe6,0xc7,0xc7,0xd,0x54,0xe6,0xe6,0x63,0x95,0x10,0x10,0x72,0xda,0xe3,0xe3,0xcd,0xa4,0x76,0x76,0xd6,0x57,0x3c,0x3c,0xa,0xbc,0xb9,0xb9,0x40,0x50,0x70,0x70,0xdb,0x3,0xda,0xda,0xa3,0x65,0x80,0x80,0xfe,0x75,0xa,0xa,0xad,0xdc,0x3e,0x3e,0xb3,0x71,0x9c,0x9c,0xf7,0x24,0xeb,0xeb,0xa0,0x88,0xd8,0xd8,0x28,0x22,0x36,0x36,0x7f,0x8e,0x5,0x5,0xdd,0xb0,0x6a,0x6a,0x68,0x72,0x46,0x46,0xa5,0xd6,0x30,0x30,0x92,0x2,0x4b,0x4b,0xd1,0xbf,0x63,0x63,0x52,0xf2,0xdb,0xdb,0x2e,0x91,0x86,0x86,0x57,0xac,0x33,0x33,0x9d,0xe0,0x1a,0x1a,0x46,0xe3,0xc0,0xc0,0xc9,0xa1,0x71,0x71,0x70,0x6c,0x54,0x54,0x2b,0xcf,0x6e,0x6e,0x66,0xcb,0xf8,0xf8,0xc2,0x46,0x27,0x27,0x26,0x9b,0x88,0x88,0xd8,0xee,0x82,0x82,0x36,0x8f,0x94,0x94,0x23,0xc5,0x60,0x60,0x5a,0xf8,0xd5,0xd5,0x25,0x76,0xd0,0xd0,0x82,0x16,0x57,0x57,0xc6,0x43,0x20,0x20,0x84,0xa5,0xe7,0xe7,0x6,0xb3,0xb0,0xb0,0x9e,0xd,0x42,0x42,0x4c,0x5f,0x79,0x79,0xba,0x20,0x7d,0x7d,0xe0,0xd8,0xa8,0xa8,0xb0,0x9c,0xc4,0xc4,0x93,0x59,0xa4,0xa4,0x27,0xc0,0x67,0x67,0x8,0xa,0xe,0xe,0x12,0xa2,0xab,0xab,0x3b,0xdb,0x72,0x72,0xfc,0xc3,0xbd,0xbd,0xb8,0x96,0xca,0xca,0xfa,0x70,0xd,0xd,0xef,0x3a,0xf9,0xf9,0xf,0xe2,0x51,0x51,0x6a,0xc4,0xf1,0xf1,0x2f,0xca,0x69,0x69,0x15,0x4a,0xf4,0xf4,0xda,0x58,0x35,0x35,0x10,0x14,0x1c,0x1c,0x88,0xaa,0xee,0xee,0xa1,0xd3,0x37,0x37,0xbe,0x25,0x7a,0x7a,0xf2,0x7a,0x3,0x3,0x21,0x73,0xd7,0xd7,0x5c,0x4b,0x65,0x65,0xc,0xf,0x9,0x9,0xff,0x2e,0xe5,0xe5,0x31,0x67,0xcb,0xcb,0xa6,0x3b,0x68,0x68,0xd5,0xba,0x64,0x64,0x7d,0x38,0xb2,0xb2,0x11,0x4f,0xf3,0xf3,0x87,0x48,0xbf,0xbf,0x51,0x1f,0x83,0x83,0x18,0x1e,0x12,0x12,0xe8,0xd2,0xa6,0xa6,0x8e,0x19,0x5e,0x5e,0x69,0x29,0xa9,0xa9,0xa2,0x3e,0x6f,0x6f,0x7,0x7,0x5,0x4,0x6c,0x6c,0x44,0x50,0xc1,0xc1,0x12,0xcf,0x28,0x28,0xbd,0x43,0xf6,0xf6,0xc1,0x6e,0x84,0x84,0x1a,0x55,0x3d,0x3d,0xa6,0x5f,0xbd,0xbd,0xc3,0xfc,0x9e,0x9e,0xfa,0xc8,0x48,0x48,0x78,0x60,0xd2,0xd2,0xfd,0x5e,0xd0,0xd0,0x76,0x25,0x5f,0x5f,0xe8,0x7,0x6,0x6,0xf4,0x8d,0xcc,0xcc,0x62,0x35,0xd7,0xd7,0x73,0x21,0x7a,0x7a,0x25,0xbe,0xba,0xba,0xc6,0xf8,0x87,0x87,0x60,0xa7,0x2e,0x2e,0x49,0xce,0x11,0x11,0x64,0xea,0x65,0x65,0x4b,0x5c,0x81,0x81,0x94,0x2a,0xb3,0xb3,0xc9,0xf4,0xbe,0xbe,0xb9,0xe,0x59,0x59,0x1c,0x8a,0x41,0x41,0x77,0x6c,0x2a,0x2a,0x36,0x38,0x90,0x90,0xf0,0xc0,0xe2,0xe2,0x2b,0xfb,0x18,0x18,0x6b,0xe6,0xa4,0xa4,0x59,0x93,0xa9,0xa9,0x29,0x69,0x1a,0x1a,0xe0,0x9d,0x93,0x93,0x8a,0x32,0x1c,0x1c,0x14,0x10,0x6b,0x6b,0x41,0x54,0xc,0xc,0x81,0x73,0x37,0x37,0xd3,0xa1,0x4e,0x4e,0x8c,0xed,0xb,0xb,0x84,0x77,0x5,0x5,0x8e,0x7f,0xf,0xf,0xfb,0x81,0x5d,0x5d,0x63,0x7c,0xd3,0xd3,0xc,0xd7,0x32,0x32,0x5d,0xde,0x96,0x96,0x4,0x4d,0xf4,0xf4,0x4a,0x15,0x1e,0x1e,0x9f,0x6b,0xad,0xad,0x56,0x9f,0xc8,0xc8,0x1d,0xc3,0xf5,0xf5,0xbb,0x9c,0xbf,0xbf,0x48,0x87,0x3a,0x3a,0xa3,0x5b,0x98,0x98,0xe,0x45,0x2d,0x2d,0x33,0x3c,0xb8,0xb8,0x4d,0x83,0xc2,0xc2,0x68,0x3d,0xa3,0xa3,0x5c,0x97,0x68,0x68,0x3b,0xa6,0xc6,0xc6,0x17,0xcb,0xee,0xee,0xaa,0x88,0xa6,0xa6,0xd2,0xe8,0xe1,0xe1,0x51,0x9,0xa8,0xa8,0xd8,0xe0,0xd8,0xd8,0x88,0xa0,0xd1,0xd1,0x87,0xac,0x4,0x4,0x7f,0xf6,0xe5,0xe5,0x2e,0xff,0xf1,0xf1,0xc4,0x6a,0xbc,0xbc,0x32,0x75,0xfd,0xfd,0x45,0x19,0x27,0x27,0x46,0xc2,0x3c,0x3c,0x57,0xd6,0x50,0x50,0x13,0x86,0x8b,0x8b,0xe1,0xd4,0x79,0x79,0x5f,0x4c,0xfb,0xfb,0xb1,0x94,0x76,0x76,0xa4,0xcd,0x21,0x21,0xb2,0x4f,0x35,0x35,0x58,0xda,0x19,0x19,0x9a,0x6f,0xb2,0xb2,0x38,0x7d,0x3f,0x3f,0x2d,0x24,0x1d,0x1d,0xe5,0x99,0x99,0x99,0xff,0xcc,0x42,0x42,0xd,0x9e,0xe,0xe,0xa,0x8,0x57,0x57,0x16,0x82,0x13,0x13,0xef,0x91,0xfc,0xfc,0xb4,0x90,0x4f,0x4f,0x7d,0x64,0xa1,0xa1,0xd7,0xec,0xb9,0xb9,0xbc,0xa,0x0,0x0,0x0,0x0,0xcb,0xcb,0x67,0x31,0x63,0x63,0xbf,0xd1,0x15,0x15,0x1b,0x1c,0x44,0x44,0xf9,0x13,0xca,0xca,0x96,0xb8,0x78,0x78,0xae,0xc5,0x6f,0x6f,0x3e,0xa2,0xe3,0xe3,0xda,0x72,0x54,0x54,0x6c,0x70,0x8f,0x8f,0x9e,0x22,0x9f,0x9f,0xb,0x41,0x3b,0x3b,0x52,0xd2,0x4d,0x4d,0xf6,0x1f,0x33,0x33,0xac,0x57,0xda,0xda,0x3,0xdb,0x34,0x34,0xa9,0x53,0xb6,0xb6,0x47,0x8b,0xff,0xff,0xce,0x62,0xb0,0xb0,0xb3,0x6,0x4a,0x4a,0xf3,0x1b,0x4c,0x4c,0x7,0x96,0xd,0xd,0x70,0xfa,0xa5,0xa5,0xa8,0x1a,0xa7,0xa7,0x23,0x61,0xae,0xae,0x2c,0x6d,0x2f,0x2f,0xb8,0x47,0x92,0x92,0x7b,0xbb,0x73,0x73,0x2a,0xb2,0xc4,0xc4,0x9c,0xb0,0x9a,0x9a,0x85,0x3e,0x83,0x83,0x1f,0x51,0x40,0x40,0x86,0xe5,0xb4,0xb4,0xcc,0xf0,0x14,0x14,0xea,0x95,0x6a,0x6a,0xb0,0xdd,0xe4,0xe4,0xdf,0x76,0x89,0x89,0x6a,0xaf,0x66,0x66,0x31,0xae,0xa,0xa,0x75,0xfe,0xc0,0xc0,0xe3,0x46,0x8c,0x8c,0xe4,0xd0,0x62,0x62,0x4e,0x58,0x60,0x60,0xc5,0x23,0x94,0x94,0x8f,0x36,0xf8,0xf8,0xcb,0x66,0x36,0x36,0x22,0x28,0x72,0x72,0xdb,0x3b,0x49,0x49,0x89,0xe9,0x8d,0x8d,0x15,0x59,0x7f,0x7f,0xab,0xc1,0xb5,0xb5,0x3d,0x79,0x17,0x17,0x90,0x67,0xd6,0xd6,0x82,0xa8,0x9d,0x9d,0x80,0x3a,0x52,0x52,0x98,0xfd,0x5c,0x5c,0x92,0xf5,0x97,0x97,0xf5,0xc4,0x8e,0x8e,0x6f,0xab,0xed,0xed,0xd0,0x7a,0x71,0x71,0xa1,0xc9,0x4b,0x4b,0x2,0x92,0xaa,0xaa,0x53,0x9b,0xe9,0xe9,0xaf,0x8c,0xea,0xea,0xd5,0x7e,0x56,0x56,0xe7,0xb,0x39,0x39,0xd9,0xa9,0xdd,0xdd,0x6,0xdf,0x10,0x10,0x95,0x63,0xc3,0xc3,0x99,0xb4,0x75,0x75,0xde,0x3f,0xf9,0xf9,0x3a,0xef,0x8a,0x8a,0x10,0x5d,0x88,0x88,0x9b,0x26,0xf7,0xf7,0x30,0xe7,0x61,0x61,0x34,0xaa,0x6e,0x6e,0xcf,0x2b,0x77,0x77,0x55,0x44,0x26,0x26,0xb7,0x4b,0x2,0x2,0x8b,0x7b,0xb7,0xb7,0xb6,0x2,0x7e,0x7e,0x5a,0x48,0x24,0x24,0x3c,0x30,0x1b,0x1b,0x11,0x14,0xdf,0xdf,0x8d,0xa4,0x80,0x80,0x65,0xa3,0xaf,0xaf,0xdd,0xe4,0xa2,0xa2,0xad,0x1e,0x86,0x86,0x91,0x2e,0x43,0x43,0xfc,0x17,0x91,0x91,0x1,0x49,0xcd,0xcd,0x93,0xbc,0xbb,0xbb,0x37,0x71,0x46,0x46,0x72,0x68,0x2b,0x2b,0xc7,0xb1,0xe0,0xe0,0xa0,0x80,0x9,0x9,0xf,0xc,0xac,0xac,0xa7,0x16,0x1,0x1,0xf1,0x89,0xa0,0xa0,0x26,0x65,0x85,0x85,0xeb,0xdc,0x3e,0x3e,0xdc,0xad,0x58,0x58,0xed,0x3,0x25,0x25,0xcd,0xb9,0xf2,0xf2,0xbe,0x98,0xb1,0xb1,0x42,0x8f,0xab,0xab,0xa2,0x12,0xdb,0xdb,0xf2,0x52,0x9b,0x9b,0x74,0xb7,0x23,0x23,0x39,0x34,0x5b,0x5b,0x97,0xf1,0x2c,0x2c,0xc2,0xb5,0xce,0xce,0xe9,0x4e,0xd5,0xd5,0xf8,0x5a,0x38,0x38,0x28,0x20,0x69,0x69,0xca,0x2f,0x30,0x30,0xd6,0xa5,0xc7,0xc7,0xe6,0x42,0x31,0x31,0x27,0x2c,0x67,0x67,0xc0,0x27,0xef,0xef,0x5b,0x1,0xe8,0xe8,0x5e,0x5,0x7c,0x7c,0xd1,0x33,0x20,0x20,0x43,0xc6,0x29,0x29,0x4c,0xca,0x70,0x70,0x50,0x40,0xf3,0xf3,0x4f,0x11,0xfe,0xfe,0x3f,0xeb,0x55,0x55,0x9d,0xf9,0xe7,0xe7,0xa5,0x84,0x16,0x16,0x61,0xee,0xdc,0xdc,0xf7,0x56,0x47,0x47,0x83,0xe1,0x95,0x95,0x7e,0xbf,0x8,0x8,0xfe,0x85,0xcf,0xcf,0x18,0xc7,0x3,0x3,0x7a,0xf2,0x64,0x64,0xba,0xd5,0xf0,0xf0,0x35,0xe3,0xde,0xde,0x7c,0x2d,0x12,0x12,0x1e,0x18,0x53,0x53,0x69,0x74,0xc9,0xc9,0xec,0x4a,0x82,0x82,0xee,0xd8,0x5e,0x5e,0x19,0x8e,0x7d,0x7d,0x20,0xba,0xd9,0xd9,0x79,0x29,0x45,0x45,0x8,0x9a,0xc5,0xc5,0x6d,0x39,0x6d,0x6d,0xb5,0xd9,0xfa,0xfa,0x40,0x1d,0x74,0x74,0x2f,0xb6,0x7b,0x7b,0xd4,0x37,0x5a,0x5a,0x66,0x78,0x1f,0x1f,0x6e,0xe2,0xec,0xec,0x21,0xf3,0xeb,0xeb,0x24,0xf7,0x22,0x22,0xc8,0xbd,0x9c,0x9c,0x71,0xb3,0xd4,0xd4,0x9,0xd3,0x51,0x51,0xe2,0xf,0xe6,0xe6,0x54,0xd,0xb9,0xbe,0xe,0xbe,0xc8,0x22,0xbd,0x22,0x4c,0x29,0xca,0x29,0xb1,0xfb,0x94,0xfb,0xf3,0x4a,0x1b,0x4a,0xd1,0x7c,0x33,0x7c,0xb4,0xfc,0x90,0xfc,0x95,0x10,0x63,0x10,0x16,0x57,0x82,0x57,0xa6,0x3d,0x5f,0x3d,0xf6,0x4d,0x1f,0x4d,0x32,0xbc,0x75,0xbc,0x31,0x66,0xae,0x66,0xc0,0x67,0x27,0x67,0xfc,0x43,0x17,0x43,0xd,0x42,0x9e,0x42,0xda,0xe3,0x72,0xe3,0xe7,0x56,0xb,0x56,0x94,0x81,0x2a,0x81,0xc,0xd3,0xd7,0xd3,0x1b,0x15,0x1c,0x15,0x8,0x45,0x9a,0x45,0x8e,0x5,0x7f,0x5,0x2d,0x3f,0x24,0x3f,0xfa,0x9e,0xc8,0x9e,0x5b,0xef,0x1,0xef,0xe0,0x1a,0x9d,0x1a,0xae,0x78,0xc5,0x78,0x2a,0x73,0xb2,0x73,0x48,0xbf,0x87,0xbf,0x12,0xc1,0xcf,0xc1,0x77,0x41,0x6c,0x41,0x19,0x5e,0x8e,0x5e,0x3c,0x24,0x30,0x24,0xbc,0xb9,0xa,0xb9,0xdf,0xe4,0x76,0xe4,0x7f,0x4,0xf6,0x4,0xb3,0xb0,0x6,0xb0,0x3e,0x6f,0xa2,0x6f,0xc5,0x60,0x23,0x60,0x7d,0x4f,0x64,0x4f,0xa5,0xe7,0x84,0xe7,0xe1,0x8b,0xd4,0x8b,0x8a,0x93,0x32,0x93,0xbd,0x28,0x43,0x28,0x76,0xd0,0x25,0xd0,0x4d,0xb8,0x83,0xb8,0x9d,0x55,0xf9,0x55,0x47,0xb6,0x8b,0xb6,0x1d,0xc8,0xc3,0xc8,0x9,0xd4,0xd3,0xd4,0xc7,0x2b,0xb1,0x2b,0x84,0xb,0x77,0xb,0x63,0x5d,0x7c,0x5d,0xec,0xc9,0x4a,0xc9,0x97,0x5b,0xf1,0x5b,0x9f,0x1e,0x6b,0x1e,0x9b,0x88,0x26,0x88,0x5e,0xe8,0x5,0xe8,0x62,0xcc,0x35,0xcc,0x50,0x70,0x40,0x70,0x87,0xd1,0xac,0xd1,0xe,0x98,0x45,0x98,0xc6,0xba,0xf8,0xba,0xf5,0x97,0xc4,0x97,0x4e,0x62,0x58,0x62,0xa1,0x71,0xc9,0x71,0x7a,0x3,0xf2,0x3,0xbf,0x63,0xd1,0x63,0x45,0xfd,0x19,0xfd,0x20,0x7d,0xba,0x7d,0x6a,0x89,0xaf,0x89,0x30,0xf7,0xe7,0xf7,0x3d,0xb5,0x79,0xb5,0x60,0x87,0xa7,0x87,0xb,0x9f,0x41,0x9f,0x52,0x3b,0xd2,0x3b,0x86,0x40,0xe5,0x40,0xd3,0x37,0xa1,0x37,0xaf,0xe9,0x8c,0xe9,0x6d,0xc5,0x39,0xc5,0x61,0x16,0xee,0x16,0x82,0xd6,0xa8,0xd6,0xd7,0xa1,0xec,0xa1,0xc2,0x2c,0xb5,0x2c,0xbb,0xf5,0x9c,0xf5,0xb0,0x6a,0xdd,0x6a,0x41,0x6b,0x54,0x6b,0xee,0x82,0xd8,0x82,0xb6,0xb7,0x2,0xb7,0xad,0xa2,0x1e,0xa2,0xe9,0xce,0x4e,0xce,0x70,0xd,0xfa,0xd,0x51,0xe1,0x9,0xe1,0x2c,0xae,0x6d,0xae,0xf7,0xdc,0x56,0xdc,0xd0,0xed,0x7a,0xed,0x89,0x49,0xe9,0x49,0x72,0x46,0x68,0x46,0xd8,0xa8,0xe0,0xa8,0x26,0xa0,0x65,0xa0,0x83,0x47,0xe1,0x47,0xfe,0x8,0x85,0x8,0xb7,0x26,0x4b,0x26,0xe8,0x5f,0x7,0x5f,0x49,0x2e,0xce,0x2e,0xf8,0xd5,0x5a,0xd5,0xf,0x9,0xc,0x9,0xd5,0xea,0x7e,0xea,0x5,0x7,0x4,0x7,0xfb,0xf,0x81,0xf,0xe5,0x1d,0x99,0x1d,0x28,0x38,0x20,0x38,0x2e,0xe5,0xff,0xe5,0xdc,0x3e,0xad,0x3e,0x44,0x6c,0x50,0x6c,0x38,0xb2,0x7d,0xb2,0x6f,0x8e,0xab,0x8e,0xf4,0x6,0x8d,0x6,0x54,0xe6,0xd,0xe6,0x5a,0x7e,0x48,0x7e,0xa7,0xac,0x16,0xac,0x34,0x61,0xaa,0x61,0x79,0xd9,0x29,0xd9,0xdb,0x72,0x3b,0x72,0xf0,0x90,0xc0,0x90,0x93,0xcd,0xbc,0xcd,0xc9,0xb3,0xf4,0xb3,0xcf,0x6e,0x2b,0x6e,0x6c,0x54,0x70,0x54,0xab,0x7f,0xc1,0x7f,0x85,0x9a,0x3e,0x9a,0xf2,0xdb,0x52,0xdb,0x42,0xb1,0x8f,0xb1,0xaa,0xee,0x88,0xee,0x69,0x53,0x74,0x53,0xb2,0x21,0x4f,0x21,0x67,0xcb,0x31,0xcb,0x74,0x9b,0xb7,0x9b,0x46,0x27,0xc2,0x27,0x5d,0x32,0xde,0x32,0xd4,0x7b,0x37,0x7b,0x71,0x9c,0xb3,0x9c,0x59,0xa4,0x93,0xa4,0xfd,0xd2,0x5e,0xd2,0xce,0xff,0x62,0xff,0xcd,0x25,0xb9,0x25,0xb5,0x6d,0xd9,0x6d,0x4a,0xf4,0x15,0xf4,0xd6,0x30,0xa5,0x30,0x6,0xdd,0xdf,0xdd,0x4b,0x65,0x5c,0x65,0x78,0x48,0x60,0x48,0x55,0x77,0x44,0x77,0x27,0x31,0x2c,0x31,0xe2,0x51,0xf,0x51,0x2b,0xe2,0xfb,0xe2,0x65,0x80,0xa3,0x80,0xa8,0xa5,0x1a,0xa5,0x2,0x4b,0x92,0x4b,0x11,0x1b,0x14,0x1b,0x9c,0xc4,0xb0,0xc4,0x2f,0x74,0xb6,0x74,0xbe,0xf2,0x98,0xf2,0xef,0x13,0x91,0x13,0x3a,0xf9,0xef,0xf9,0xd9,0x39,0xa9,0x39,0x57,0x3c,0xd6,0x3c,0xea,0x14,0x95,0x14,0x24,0xeb,0xf7,0xeb,0xa2,0xab,0x12,0xab,0xa,0xe,0x8,0xe,0x5f,0x79,0x4c,0x79,0xff,0x99,0xcc,0x99,0x1,0x91,0x49,0x91,0xe3,0xc0,0x46,0xc0,0x25,0x7a,0xbe,0x7a,0x99,0xc3,0xb4,0xc3,0x75,0xa,0xfe,0xa,0x8c,0x4e,0xed,0x4e,0x66,0x5a,0x78,0x5a,0x7c,0xde,0x2d,0xde,0xc3,0xbd,0xfc,0xbd,0x1f,0x83,0x51,0x83,0x98,0x52,0xfd,0x52,0x33,0x2d,0x3c,0x2d,0x8b,0x2,0x7b,0x2,0x22,0x36,0x28,0x36,0xf1,0x1,0x89,0x1,0xcb,0xf8,0x66,0xf8,0x0,0x0,0x0,0x0,0x37,0xbb,0x71,0xbb,0x7b,0x92,0xbb,0x92,0xde,0x75,0x3f,0x75,0x3b,0x68,0xa6,0x68,0x80,0x9d,0x3a,0x9d,0xcc,0xb4,0xf0,0xb4,0x4f,0xf3,0x11,0xf3,0x68,0xc2,0x3d,0xc2,0x14,0x1c,0x10,0x1c,0x81,0xc,0x73,0xc,0xb8,0x2f,0x47,0x2f,0x23,0xa7,0x61,0xa7,0x96,0xca,0xb8,0xca,0x91,0x86,0x2e,0x86,0x3f,0xfe,0xeb,0xfe,0x8f,0x94,0x36,0x94,0x6e,0x1f,0xe2,0x1f,0x92,0x5c,0xf5,0x5c,0x1c,0x59,0x8a,0x59,0x9a,0x19,0x6f,0x19,0xed,0x58,0x3,0x58,0x40,0xfa,0x1d,0xfa,0x7,0x4c,0x96,0x4c,0x88,0xd8,0xa0,0xd8,0x18,0xcf,0xc7,0xcf,0x8d,0xdf,0xa4,0xdf,0x29,0xa9,0x69,0xa9,0x3,0xda,0xdb,0xda,0x36,0x2a,0x38,0x2a,0xf9,0x44,0x13,0x44,0x17,0xc6,0xcb,0xc6,0xa4,0x76,0xcd,0x76,0x58,0x35,0xda,0x35,0xc4,0xf1,0x6a,0xf1,0x10,0x8a,0x5d,0x8a,0x4,0x96,0x4d,0x96,0x13,0x50,0x86,0x50,0xca,0x69,0x2f,0x69,0xa9,0x34,0x53,0x34,0x1a,0x84,0x55,0x84,0x1e,0x12,0x18,0x12,0x15,0x8d,0x59,0x8d,0xeb,0x85,0xdc,0x85,0x90,0x17,0x67,0x17,0x21,0xec,0xf3,0xec,0xe4,0x8c,0xd0,0x8c,0x5c,0xa3,0x97,0xa3,0xa3,0x3a,0x5b,0x3a,0x35,0xf0,0xe3,0xf0,0xe6,0xc7,0x42,0xc7,0xc1,0xf6,0x6e,0xf6,0x6b,0x18,0xe6,0x18,0x64,0x11,0xea,0x11,0x39,0x23,0x34,0x23,0xa0,0xe0,0x80,0xe0,0x7e,0x95,0xbf,0x95,0x9e,0x8f,0x22,0x8f,0xba,0x64,0xd5,0x64,0x53,0xaa,0x9b,0xaa,0xd2,0xa6,0xe8,0xa6,0x56,0xad,0x9f,0xad,0xdd,0xaf,0xe4,0xaf,0xac,0x33,0x57,0x33,0x73,0xd7,0x21,0xd7,0x43,0x20,0xc6,0x20,0xc1,0x6e,0xf6,0xc1,0x9,0xd3,0xd4,0x9,0xb0,0xdd,0x6a,0xb0,0x18,0xc7,0xcf,0x18,0xe1,0xd4,0x8b,0xe1,0xe4,0xd0,0x8c,0xe4,0x68,0x3d,0xc2,0x68,0xfd,0x5e,0xd2,0xfd,0xb1,0x94,0xfb,0xb1,0x7f,0xf6,0x4,0x7f,0xf0,0xc0,0x90,0xf0,0xd9,0xa9,0x39,0xd9,0x5d,0xde,0x32,0x5d,0x2b,0xfb,0xe2,0x2b,0x17,0xcb,0xc6,0x17,0x53,0x9b,0xaa,0x53,0x1f,0x51,0x83,0x1f,0x0,0x0,0x0,0x0,0xc9,0xf4,0xb3,0xc9,0x84,0x77,0xb,0x84,0x2d,0x24,0x3f,0x2d,0x4c,0xca,0x29,0x4c,0xc8,0xbd,0x22,0xc8,0x73,0x21,0xd7,0x73,0x97,0xf1,0x5b,0x97,0x94,0x2a,0x81,0x94,0xd8,0xe0,0xa8,0xd8,0x4d,0x83,0xb8,0x4d,0xbb,0x9c,0xf5,0xbb,0x19,0x8e,0x5e,0x19,0xf6,0x1f,0x4d,0xf6,0x20,0xba,0x7d,0x20,0x83,0xe1,0x47,0x83,0x40,0x1d,0xfa,0x40,0xf5,0xc4,0x97,0xf5,0xb7,0x4b,0x26,0xb7,0x62,0x35,0xcc,0x62,0x8d,0xa4,0xdf,0x8d,0xd1,0x33,0x7c,0xd1,0x5b,0x1,0xef,0x5b,0x87,0xac,0xd1,0x87,0x88,0xa0,0xd8,0x88,0x6f,0xab,0x8e,0x6f,0x23,0x61,0xa7,0x23,0xae,0xc5,0x78,0xae,0xd2,0xe8,0xa6,0xd2,0x1c,0x8a,0x59,0x1c,0xc5,0x23,0x60,0xc5,0x1e,0x18,0x12,0x1e,0x72,0x68,0x46,0x72,0x2c,0x6d,0xae,0x2c,0x11,0x14,0x1b,0x11,0xdc,0xad,0x3e,0xdc,0xf8,0x5a,0xd5,0xf8,0x75,0xfe,0xa,0x75,0x51,0x9,0xe1,0x51,0xd3,0xa1,0x37,0xd3,0x6a,0xaf,0x89,0x6a,0x42,0x8f,0xb1,0x42,0x4,0x4d,0x96,0x4,0x8c,0xed,0x4e,0x8c,0xc3,0xfc,0xbd,0xc3,0xda,0x72,0xe3,0xda,0x3a,0xef,0xf9,0x3a,0x37,0x71,0xbb,0x37,0x8a,0x32,0x93,0x8a,0xfe,0x85,0x8,0xfe,0xc2,0xb5,0x2c,0xc2,0x15,0x59,0x8d,0x15,0x30,0xe7,0xf7,0x30,0xcb,0x66,0xf8,0xcb,0x74,0xb7,0x9b,0x74,0x9e,0x22,0x8f,0x9e,0x66,0x78,0x5a,0x66,0x39,0x34,0x23,0x39,0x1b,0x1c,0x15,0x1b,0xec,0x4a,0xc9,0xec,0x29,0x69,0xa9,0x29,0xf2,0x52,0xdb,0xf2,0x22,0x28,0x36,0x22,0x31,0xae,0x66,0x31,0xf4,0x8d,0x6,0xf4,0x85,0x3e,0x9a,0x85,0x47,0x8b,0xb6,0x47,0x7e,0xbf,0x95,0x7e,0x4f,0x11,0xf3,0x4f,0xed,0x3,0x58,0xed,0xe5,0x99,0x1d,0xe5,0x45,0x19,0xfd,0x45,0x92,0xf5,0x5c,0x92,0xe6,0x42,0xc7,0xe6,0x34,0xaa,0x61,0x34,0x14,0x10,0x1c,0x14,0x35,0xe3,0xf0,0x35,0xaf,0x8c,0xe9,0xaf,0x8,0x9a,0x45,0x8,0x27,0x2c,0x31,0x27,0x5,0x4,0x7,0x5,0x2e,0xff,0xe5,0x2e,0xef,0x91,0x13,0xef,0x77,0x6c,0x41,0x77,0xa8,0x1a,0xa5,0xa8,0xd4,0x37,0x7b,0xd4,0xd,0x9e,0x42,0xd,0xac,0x57,0x33,0xac,0xdb,0x3b,0x72,0xdb,0xbd,0x43,0x28,0xbd,0x80,0x3a,0x9d,0x80,0x65,0xa3,0x80,0x65,0xe,0x45,0x98,0xe,0x81,0x73,0xc,0x81,0xb8,0x47,0x2f,0xb8,0x7c,0x2d,0xde,0x7c,0xdd,0xe4,0xaf,0xdd,0x79,0x29,0xd9,0x79,0xfc,0x17,0x43,0xfc,0x86,0xe5,0x40,0x86,0x64,0xea,0x11,0x64,0x8b,0x7b,0x2,0x8b,0x8f,0x36,0x94,0x8f,0xe2,0xf,0x51,0xe2,0x6b,0xe6,0x18,0x6b,0x2a,0xb2,0x73,0x2a,0x12,0xcf,0xc1,0x12,0xa0,0x80,0xe0,0xa0,0xdf,0x76,0xe4,0xdf,0x5f,0x4c,0x79,0x5f,0x99,0xb4,0xc3,0x99,0xa5,0x84,0xe7,0xa5,0x49,0xce,0x2e,0x49,0xf9,0x13,0x44,0xf9,0xd7,0xec,0xa1,0xd7,0xe7,0xb,0x56,0xe7,0xa4,0xcd,0x76,0xa4,0x63,0x7c,0x5d,0x63,0x25,0xbe,0x7a,0x25,0xf3,0x1b,0x4a,0xf3,0x67,0x31,0xcb,0x67,0xee,0xd8,0x82,0xee,0xa6,0x5f,0x3d,0xa6,0xc7,0xb1,0x2b,0xc7,0xc0,0x27,0x67,0xc0,0x7,0x96,0x4c,0x7,0x6e,0xe2,0x1f,0x6e,0xaa,0x88,0xee,0xaa,0xcd,0xb9,0x25,0xcd,0x61,0xee,0x16,0x61,0xc,0xd7,0xd3,0xc,0xb5,0xd9,0x6d,0xb5,0x54,0xd,0xe6,0x54,0x1d,0xc3,0xc8,0x1d,0x93,0xbc,0xcd,0x93,0x43,0xc6,0x20,0x43,0xce,0x62,0xff,0xce,0x71,0xb3,0x9c,0x71,0x57,0xd6,0x3c,0x57,0x4b,0x5c,0x65,0x4b,0xb6,0x2,0xb7,0xb6,0x95,0x63,0x10,0x95,0x60,0xa7,0x87,0x60,0x58,0xda,0x35,0x58,0x82,0xa8,0xd6,0x82,0xea,0x95,0x14,0xea,0x1a,0x55,0x84,0x1a,0xfb,0x81,0xf,0xfb,0x56,0x9f,0xad,0x56,0xe0,0x9d,0x1a,0xe0,0x3e,0xa2,0x6f,0x3e,0x6,0xdf,0xdd,0x6,0x89,0xe9,0x49,0x89,0x24,0xf7,0xeb,0x24,0x7a,0xf2,0x3,0x7a,0x41,0x54,0x6b,0x41,0xe3,0x46,0xc0,0xe3,0x91,0x2e,0x86,0x91,0x28,0x20,0x38,0x28,0x9d,0xf9,0x55,0x9d,0xd5,0x7e,0xea,0xd5,0x46,0xc2,0x27,0x46,0x6c,0x70,0x54,0x6c,0x21,0xf3,0xec,0x21,0x50,0x40,0x70,0x50,0x5a,0x48,0x7e,0x5a,0xde,0x3f,0x75,0xde,0x26,0x65,0xa0,0x26,0x48,0x87,0xbf,0x48,0xb2,0x4f,0x21,0xb2,0xd0,0x7a,0xed,0xd0,0x36,0x38,0x2a,0x36,0xab,0xc1,0x7f,0xab,0xbf,0xd1,0x63,0xbf,0xa9,0x53,0x34,0xa9,0x5e,0x5,0xe8,0x5e,0x32,0x75,0xbc,0x32,0x1,0x49,0x91,0x1,0x3f,0xeb,0xfe,0x3f,0x55,0x44,0x77,0x55,0x38,0x7d,0xb2,0x38,0xc6,0xf8,0xba,0xc6,0xff,0xcc,0x99,0xff,0xad,0x1e,0xa2,0xad,0x5c,0x97,0xa3,0x5c,0x2,0x92,0x4b,0x2,0x76,0x25,0xd0,0x76,0xa2,0x12,0xab,0xa2,0xe8,0x7,0x5f,0xe8,0x3b,0xa6,0x68,0x3b,0xb4,0x90,0xfc,0xb4,0xf1,0x89,0x1,0xf1,0xa,0x8,0xe,0xa,0xcf,0x2b,0x6e,0xcf,0x70,0xfa,0xd,0x70,0xd6,0xa5,0x30,0xd6,0x7d,0x64,0x4f,0x7d,0xb,0x41,0x9f,0xb,0x59,0x93,0xa4,0x59,0xeb,0xdc,0x85,0xeb,0x3,0xdb,0xda,0x3,0x3d,0x79,0xb5,0x3d,0x44,0x50,0x6c,0x44,0x4a,0x15,0xf4,0x4a,0xf7,0x56,0xdc,0xf7,0x6d,0x39,0xc5,0x6d,0x7b,0xbb,0x92,0x7b,0x52,0xd2,0x3b,0x52,0x9f,0x6b,0x1e,0x9f,0x8e,0x7f,0x5,0x8e,0x98,0xfd,0x52,0x98,0x69,0x74,0x53,0x69,0xbc,0xa,0xb9,0xbc,0x33,0x3c,0x2d,0x33,0xba,0xd5,0x64,0xba,0x78,0x60,0x48,0x78,0xb9,0xe,0xbe,0xb9,0xa3,0x5b,0x3a,0xa3,0x3c,0x30,0x24,0x3c,0xf,0xc,0x9,0xf,0x96,0xb8,0xca,0x96,0xa1,0xc9,0x71,0xa1,0xbe,0x98,0xf2,0xbe,0xca,0x2f,0x69,0xca,0x2f,0xb6,0x74,0x2f,0x90,0x67,0x17,0x90,0xc4,0x6a,0xf1,0xc4,0xcc,0xf0,0xb4,0xcc,0xfa,0xc8,0x9e,0xfa,0x10,0x5d,0x8a,0x10,0x9c,0xb0,0xc4,0x9c,0xe9,0x4e,0xce,0xe9,0x9b,0x26,0x88,0x9b,0x9a,0x6f,0x19,0x9a,0x13,0x86,0x50,0x13,0x4e,0x58,0x62,0x4e,0xa7,0x16,0xac,0xa7,0x16,0x82,0x57,0x16,0xb3,0x6,0xb0,0xb3};
int main()
{
uint8_t * hash = (uint8_t*)malloc(49);
memcpy(hash, "\x4f\x6f\xa7\x87\xe9\x51\x87\x64\x38\x2a\x46\xe5\x4f\x21\x9e\x1c\xcd\x65\xe1\x9a\x4f\xcf\xde\x52\x09\xbf\x53\xc4\xb0\x95\x75\x31\xac\x2f\xf4\x97\x1d\xa5\x9a\x02\xa8\xff\xae\x2e\xb9\x70\xcc\x02\x00", 49);
memset(output, 0, 49);
scanf("%49s", &input);
//memcpy(input, hash, 49);
if(strlen(input) < 48) {
puts("No");
return 0;
}
char ptr_0[16];
char * ptr_8 = &ptr_0[8];
char buff[16];
memset(buff, 0, 16);
char* ptr_out_0 = buff;
int h1, h2, h3, h4, h5, h6;
uint32_t* key = (uint32_t*)&_key[0];
for(int i = 0 ; i < 48; i+=16)
{
memcpy(ptr_0, input + i, 16);
for(int j = 0 ; j < 16; j++){
ptr_0[j] ^= buff[j];
}
h1 = *(uint32_t*)&ptr_0[0];
h2 = *(uint32_t*)&ptr_0[4];
h3 = *(uint32_t*)&ptr_8[0];
h4 = *(uint32_t*)&ptr_8[4];
h1 ^= key[0];
h2 ^= key[1];
h3 ^= key[2];
h4 ^= key[3];
h5 = key[ (get_byte(h1, 0) + 0x40) ] ^ key[ (get_byte(h1, 1) + 0x140) ] ^ key[ (get_byte(h1, 2) + 0x240) ] ^ key[ (get_byte(h1, 3) + 0x340) ];
h6 = key[ (get_byte(h2, 3) + 0x40) ] ^ key[ (get_byte(h2, 0) + 0x140) ] ^ key[ (get_byte(h2, 1) + 0x240) ] ^ key[ (get_byte(h2, 2) + 0x340) ];
h3 ^= key[8] + h6 + h5;
h3 = rotr32(h3, 1);
h4 = rotl32(h4, 1);
h4 ^= key[9] + h5 + 2 * h6;
h5 = key[ (get_byte(h3, 0) + 0x40) ] ^ key[ (get_byte(h3, 1) + 0x140) ] ^ key[ (get_byte(h3, 2) + 0x240) ] ^ key[ (get_byte(h3, 3) + 0x340) ];
h6 = key[ (get_byte(h4, 3) + 0x40) ] ^ key[ (get_byte(h4, 0) + 0x140) ] ^ key[ (get_byte(h4, 1) + 0x240) ] ^ key[ (get_byte(h4, 2) + 0x340) ];
h1 ^= key[10] + h6 + h5;
h1 = rotr32(h1, 1);
h2 = rotl32(h2, 1);
h2 ^= key[11] + h5 + 2 * h6;
//
h5 = key[ (get_byte(h1, 0) + 0x40) ] ^ key[ (get_byte(h1, 1) + 0x140) ] ^ key[ (get_byte(h1, 2) + 0x240) ] ^ key[ (get_byte(h1, 3) + 0x340) ];
h6 = key[ (get_byte(h2, 3) + 0x40) ] ^ key[ (get_byte(h2, 0) + 0x140) ] ^ key[ (get_byte(h2, 1) + 0x240) ] ^ key[ (get_byte(h2, 2) + 0x340) ];
h3 ^= key[12] + h6 + h5;
h3 = rotr32(h3, 1);
h4 = rotl32(h4, 1);
h4 ^= key[13] + h5 + 2 * h6;
h5 = key[ (get_byte(h3, 0) + 0x40) ] ^ key[ (get_byte(h3, 1) + 0x140) ] ^ key[ (get_byte(h3, 2) + 0x240) ] ^ key[ (get_byte(h3, 3) + 0x340) ];
h6 = key[ (get_byte(h4, 3) + 0x40) ] ^ key[ (get_byte(h4, 0) + 0x140) ] ^ key[ (get_byte(h4, 1) + 0x240) ] ^ key[ (get_byte(h4, 2) + 0x340) ];
h1 ^= key[14] + h6 + h5;
h1 = rotr32(h1, 1);
h2 = rotl32(h2, 1);
h2 ^= key[15] + h5 + 2 * h6;
//
h5 = key[ (get_byte(h1, 0) + 0x40) ] ^ key[ (get_byte(h1, 1) + 0x140) ] ^ key[ (get_byte(h1, 2) + 0x240) ] ^ key[ (get_byte(h1, 3) + 0x340) ];
h6 = key[ (get_byte(h2, 3) + 0x40) ] ^ key[ (get_byte(h2, 0) + 0x140) ] ^ key[ (get_byte(h2, 1) + 0x240) ] ^ key[ (get_byte(h2, 2) + 0x340) ];
h3 ^= key[16] + h6 + h5;
h3 = rotr32(h3, 1);
h4 = rotl32(h4, 1);
h4 ^= key[17] + h5 + 2 * h6;
h5 = key[ (get_byte(h3, 0) + 0x40) ] ^ key[ (get_byte(h3, 1) + 0x140) ] ^ key[ (get_byte(h3, 2) + 0x240) ] ^ key[ (get_byte(h3, 3) + 0x340) ];
h6 = key[ (get_byte(h4, 3) + 0x40) ] ^ key[ (get_byte(h4, 0) + 0x140) ] ^ key[ (get_byte(h4, 1) + 0x240) ] ^ key[ (get_byte(h4, 2) + 0x340) ];
h1 ^= key[18] + h6 + h5;
h1 = rotr32(h1, 1);
h2 = rotl32(h2, 1);
h2 ^= key[19] + h5 + 2 * h6;
//
h5 = key[ (get_byte(h1, 0) + 0x40) ] ^ key[ (get_byte(h1, 1) + 0x140) ] ^ key[ (get_byte(h1, 2) + 0x240) ] ^ key[ (get_byte(h1, 3) + 0x340) ];
h6 = key[ (get_byte(h2, 3) + 0x40) ] ^ key[ (get_byte(h2, 0) + 0x140) ] ^ key[ (get_byte(h2, 1) + 0x240) ] ^ key[ (get_byte(h2, 2) + 0x340) ];
h3 ^= key[20] + h6 + h5;
h3 = rotr32(h3, 1);
h4 = rotl32(h4, 1);
h4 ^= key[21] + h5 + 2 * h6;
h5 = key[ (get_byte(h3, 0) + 0x40) ] ^ key[ (get_byte(h3, 1) + 0x140) ] ^ key[ (get_byte(h3, 2) + 0x240) ] ^ key[ (get_byte(h3, 3) + 0x340) ];
h6 = key[ (get_byte(h4, 3) + 0x40) ] ^ key[ (get_byte(h4, 0) + 0x140) ] ^ key[ (get_byte(h4, 1) + 0x240) ] ^ key[ (get_byte(h4, 2) + 0x340) ];
h1 ^= key[22] + h6 + h5;
h1 = rotr32(h1, 1);
h2 = rotl32(h2, 1);
h2 ^= key[23] + h5 + 2 * h6;
//
h5 = key[ (get_byte(h1, 0) + 0x40) ] ^ key[ (get_byte(h1, 1) + 0x140) ] ^ key[ (get_byte(h1, 2) + 0x240) ] ^ key[ (get_byte(h1, 3) + 0x340) ];
h6 = key[ (get_byte(h2, 3) + 0x40) ] ^ key[ (get_byte(h2, 0) + 0x140) ] ^ key[ (get_byte(h2, 1) + 0x240) ] ^ key[ (get_byte(h2, 2) + 0x340) ];
h3 ^= key[24] + h6 + h5;
h3 = rotr32(h3, 1);
h4 = rotl32(h4, 1);
h4 ^= key[25] + h5 + 2 * h6;
h5 = key[ (get_byte(h3, 0) + 0x40) ] ^ key[ (get_byte(h3, 1) + 0x140) ] ^ key[ (get_byte(h3, 2) + 0x240) ] ^ key[ (get_byte(h3, 3) + 0x340) ];
h6 = key[ (get_byte(h4, 3) + 0x40) ] ^ key[ (get_byte(h4, 0) + 0x140) ] ^ key[ (get_byte(h4, 1) + 0x240) ] ^ key[ (get_byte(h4, 2) + 0x340) ];
h1 ^= key[26] + h6 + h5;
h1 = rotr32(h1, 1);
h2 = rotl32(h2, 1);
h2 ^= key[27] + h5 + 2 * h6;
//
h5 = key[ (get_byte(h1, 0) + 0x40) ] ^ key[ (get_byte(h1, 1) + 0x140) ] ^ key[ (get_byte(h1, 2) + 0x240) ] ^ key[ (get_byte(h1, 3) + 0x340) ];
h6 = key[ (get_byte(h2, 3) + 0x40) ] ^ key[ (get_byte(h2, 0) + 0x140) ] ^ key[ (get_byte(h2, 1) + 0x240) ] ^ key[ (get_byte(h2, 2) + 0x340) ];
h3 ^= key[28] + h6 + h5;
h3 = rotr32(h3, 1);
h4 = rotl32(h4, 1);
h4 ^= key[29] + h5 + 2 * h6;
h5 = key[ (get_byte(h3, 0) + 0x40) ] ^ key[ (get_byte(h3, 1) + 0x140) ] ^ key[ (get_byte(h3, 2) + 0x240) ] ^ key[ (get_byte(h3, 3) + 0x340) ];
h6 = key[ (get_byte(h4, 3) + 0x40) ] ^ key[ (get_byte(h4, 0) + 0x140) ] ^ key[ (get_byte(h4, 1) + 0x240) ] ^ key[ (get_byte(h4, 2) + 0x340) ];
h1 ^= key[30] + h6 + h5;
h1 = rotr32(h1, 1);
h2 = rotl32(h2, 1);
h2 ^= key[31] + h5 + 2 * h6;
//
h5 = key[ (get_byte(h1, 0) + 0x40) ] ^ key[ (get_byte(h1, 1) + 0x140) ] ^ key[ (get_byte(h1, 2) + 0x240) ] ^ key[ (get_byte(h1, 3) + 0x340) ];
h6 = key[ (get_byte(h2, 3) + 0x40) ] ^ key[ (get_byte(h2, 0) + 0x140) ] ^ key[ (get_byte(h2, 1) + 0x240) ] ^ key[ (get_byte(h2, 2) + 0x340) ];
h3 ^= key[32] + h6 + h5;
h3 = rotr32(h3, 1);
h4 = rotl32(h4, 1);
h4 ^= key[33] + h5 + 2 * h6;
h5 = key[ (get_byte(h3, 0) + 0x40) ] ^ key[ (get_byte(h3, 1) + 0x140) ] ^ key[ (get_byte(h3, 2) + 0x240) ] ^ key[ (get_byte(h3, 3) + 0x340) ];
h6 = key[ (get_byte(h4, 3) + 0x40) ] ^ key[ (get_byte(h4, 0) + 0x140) ] ^ key[ (get_byte(h4, 1) + 0x240) ] ^ key[ (get_byte(h4, 2) + 0x340) ];
h1 ^= key[34] + h6 + h5;
h1 = rotr32(h1, 1);
h2 = rotl32(h2, 1);
h2 ^= key[35] + h5 + 2 * h6;
//
h5 = key[ (get_byte(h1, 0) + 0x40) ] ^ key[ (get_byte(h1, 1) + 0x140) ] ^ key[ (get_byte(h1, 2) + 0x240) ] ^ key[ (get_byte(h1, 3) + 0x340) ];
h6 = key[ (get_byte(h2, 3) + 0x40) ] ^ key[ (get_byte(h2, 0) + 0x140) ] ^ key[ (get_byte(h2, 1) + 0x240) ] ^ key[ (get_byte(h2, 2) + 0x340) ];
h3 ^= key[36] + h6 + h5;
h3 = rotr32(h3, 1);
h4 = rotl32(h4, 1);
h4 ^= key[37] + h5 + 2 * h6;
h5 = key[ (get_byte(h3, 0) + 0x40) ] ^ key[ (get_byte(h3, 1) + 0x140) ] ^ key[ (get_byte(h3, 2) + 0x240) ] ^ key[ (get_byte(h3, 3) + 0x340) ];
h6 = key[ (get_byte(h4, 3) + 0x40) ] ^ key[ (get_byte(h4, 0) + 0x140) ] ^ key[ (get_byte(h4, 1) + 0x240) ] ^ key[ (get_byte(h4, 2) + 0x340) ];
h1 ^= key[38] + h6 + h5;
h1 = rotr32(h1, 1);
h2 = rotl32(h2, 1);
h2 ^= key[39] + h5 + 2 * h6;
h3 ^= key[4];
h4 ^= key[5];
h1 ^= key[6];
h2 ^= key[7];
memcpy(ptr_out_0, &h3, 4);
memcpy(ptr_out_0 + 4, &h4, 4);
memcpy(ptr_out_0 + 8, &h1, 4);
memcpy(ptr_out_0 + 12, &h2, 4);
memcpy(output + i, ptr_out_0, 16);
}
puts("Out: ");
puts(output);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment