#include #include #include "gtest/gtest.h" extern "C" { #include "tinycrypt/sha2.h" } static uint8_t SEED[] = {0x5c,0x33,0x7d,0xe5,0xca,0xf3,0x5d,0x18,0xed,0x90,0xb5,0xcd,0xdf,0xce,0x00,0x1c,0xa1,0xb8,0xee,0x86,0x02,0xf3,0x67,0xe7,0xc2,0x4c,0xcc,0xa6,0xf8,0x93,0x80,0x2f,0xb1,0xac,0xa7,0xa3,0xda,0xe3,0x2d,0xcd,0x60,0x80,0x0a,0x59,0x95,0x9b,0xc5,0x40,0xd6,0x32,0x37,0x87,0x6b,0x79,0x92,0x29,0xae,0x71,0xa2,0x52,0x6f,0xbc,0x52,0xcd,}; static uint8_t ROUND0[] = {0xad,0xa6,0x9a,0xdd,0x00,0x71,0xb7,0x94,0x46,0x3c,0x88,0x06,0xa1,0x77,0x32,0x67,0x35,0xfa,0x62,0x4b,0x68,0xab,0x7b,0xca,0xb2,0x38,0x8b,0x92,0x76,0xc0,0x36,0xe4,0xea,0xaf,0xf8,0x73,0x33,0xe8,0x3c,0x81,0xc0,0xbc,0xa0,0x35,0x9d,0x4a,0xee,0xbc,0xbc,0xfd,0x31,0x4c,0x06,0x30,0xe0,0xc2,0xaf,0x68,0xc1,0xfb,0x19,0xcc,0x47,0x0e,}; static uint8_t ROUND1[] = {0xef,0x21,0x9b,0x37,0xc2,0x4a,0xe5,0x07,0xa2,0xb2,0xb2,0x6d,0x1a,0xdd,0x51,0xb3,0x1f,0xb5,0x32,0x7e,0xb8,0xc3,0xb1,0x9b,0x88,0x2f,0xe3,0x80,0x49,0x43,0x3d,0xbe,0xcc,0xd6,0x3b,0x3d,0x5b,0x99,0xba,0x23,0x98,0x92,0x0b,0xce,0xfb,0x8a,0xca,0x98,0xcd,0x28,0xa1,0xee,0x5d,0x2a,0xaf,0x13,0x9c,0xe5,0x8a,0x15,0xd7,0x1b,0x06,0xb4,}; static uint8_t ROUND2[] = {0xc3,0xd5,0x08,0x7a,0x62,0xdb,0x0e,0x5c,0x6f,0x57,0x55,0xc4,0x17,0xf6,0x90,0x37,0x30,0x8c,0xbc,0xe0,0xe5,0x45,0x19,0xea,0x5b,0xe8,0x17,0x14,0x96,0xcc,0x6d,0x18,0x02,0x3b,0xa1,0x57,0x68,0x15,0x3c,0xfd,0x74,0xc7,0xe7,0xdc,0x10,0x32,0x27,0xe9,0xee,0xd4,0xb0,0xf8,0x22,0x33,0x36,0x2b,0x2a,0x7b,0x1a,0x2c,0xbc,0xda,0x9d,0xaf,}; static uint8_t ROUND3[] = {0xbb,0x3a,0x58,0xf7,0x11,0x48,0x11,0x6e,0x37,0x75,0x05,0x46,0x1d,0x65,0xd6,0xc8,0x99,0x06,0x48,0x1f,0xed,0xfb,0xcf,0xe4,0x81,0xb7,0xaa,0x8c,0xeb,0x97,0x7d,0x25,0x2b,0x3f,0xe2,0x1b,0xff,0xf6,0xe7,0xfb,0xf7,0x57,0x5c,0xee,0xcf,0x59,0x36,0xbd,0x63,0x5e,0x1c,0xf5,0x26,0x98,0xc3,0x6e,0xf6,0x90,0x8d,0xdb,0xd5,0xb6,0xae,0x05,}; static uint8_t ROUND4[] = {0xb6,0x8f,0x0c,0xd2,0xd6,0x35,0x66,0xb3,0x93,0x4a,0x50,0x66,0x6d,0xec,0x6d,0x62,0xca,0x1d,0xb9,0x8e,0x49,0xd7,0x73,0x30,0x84,0xc1,0xf8,0x6d,0x91,0xa8,0xa0,0x8c,0x75,0x6f,0xa7,0xec,0xe8,0x15,0xe2,0x09,0x30,0xdd,0x7c,0xb6,0x63,0x51,0xba,0xd8,0xc0,0x87,0xc2,0xf9,0x4e,0x87,0x57,0xcb,0x98,0xe7,0xf4,0xb8,0x6b,0x21,0xa8,0xa8,}; static uint8_t ROUND5[] = {0x93,0x7d,0x78,0x56,0xa8,0x2a,0x84,0xc1,0x63,0xc7,0x94,0x17,0xd0,0x54,0x0c,0x47,0xda,0xaf,0x9f,0xfe,0x66,0x2c,0x84,0x37,0x37,0xdb,0xbc,0xbe,0x5f,0x86,0x5b,0xf6,0xf4,0x7a,0x9d,0x2b,0xd1,0x01,0x29,0xa4,0xf4,0x98,0x07,0x30,0x94,0x65,0x3c,0x32,0x4a,0x25,0x19,0xa1,0xc7,0x1a,0xc1,0x27,0x9b,0x16,0x23,0xff,0x7d,0x24,0x64,0x7a,}; static uint8_t ROUND6[] = {0xf8,0xfb,0xc0,0x58,0xc2,0xb9,0xf8,0x41,0x31,0xc9,0xde,0xcf,0xa5,0x43,0xa3,0x5a,0xde,0x41,0x58,0x1f,0x67,0x03,0x98,0xef,0xd6,0x1b,0x3a,0xbf,0xce,0xd9,0xc1,0xcf,0xcb,0x53,0x24,0xf2,0x37,0x04,0x87,0xf9,0xc5,0x9a,0x65,0xbc,0x66,0x8e,0xa5,0x96,0xc8,0xd2,0x2c,0xe8,0xa3,0x30,0x14,0xdf,0xad,0x28,0x35,0x7f,0xa7,0xd0,0x5f,0x04,}; static uint8_t ROUND7[] = {0x4a,0xb0,0xc9,0x48,0x4f,0xf5,0xc3,0x0f,0xa6,0x4a,0xe6,0xe8,0x15,0x10,0xc5,0xfe,0xa5,0x66,0xea,0xfb,0x88,0xf1,0x75,0xf8,0xbc,0x19,0x10,0x9f,0x40,0xfe,0x80,0x01,0x4c,0x8b,0x77,0xff,0xf1,0x0b,0x87,0x50,0x77,0x84,0x29,0xbf,0x3c,0x54,0x97,0xe4,0xcb,0x92,0xd9,0xb3,0x00,0x14,0xf4,0xcb,0x97,0x5d,0xff,0x2a,0x45,0x24,0x4c,0x28,}; static uint8_t ROUND8[] = {0x68,0x51,0x79,0x39,0x75,0x54,0xd2,0x76,0x51,0x3d,0x63,0x02,0x34,0xa0,0x34,0x19,0x80,0x8c,0x69,0x8a,0xbf,0x26,0x00,0xd7,0x49,0x0a,0xab,0xb8,0xe4,0x55,0xc6,0xab,0x6e,0xa4,0x12,0xc7,0x72,0x9d,0xc1,0x40,0xa7,0x9d,0xff,0x66,0x53,0x3c,0x69,0x46,0xcb,0xe9,0x0f,0x9d,0xa9,0xed,0x16,0xe2,0xe6,0x29,0xdb,0x16,0x51,0xbe,0xa8,0x70,}; static uint8_t ROUND9[] = {0x33,0x5e,0x6e,0x94,0x1a,0xb7,0xda,0xdf,0xec,0xdb,0x74,0xea,0x6c,0xb4,0xe8,0x58,0x4b,0x6e,0x34,0x08,0x84,0x1a,0x33,0xa6,0xcf,0x7f,0xd6,0xa6,0x32,0x94,0xb1,0x93,0x0a,0x60,0x98,0x32,0x40,0x31,0x16,0x72,0xac,0xac,0x38,0x40,0xa9,0x0e,0x64,0xcc,0x36,0x6c,0xe7,0x50,0x81,0xb2,0x25,0x26,0x27,0xe9,0xc3,0x11,0x97,0xeb,0xad,0x03,}; static uint8_t ROUND10[] = {0xe3,0x21,0x7f,0x6a,0xf6,0xe2,0x79,0xe9,0x44,0x5d,0xc3,0x73,0x8c,0xbf,0x9b,0xa0,0xe9,0xed,0xba,0x04,0x55,0x84,0x4a,0x73,0x64,0x81,0x39,0x77,0x7a,0xfd,0xea,0x2c,0x4d,0x80,0x32,0xe2,0x14,0xf5,0x41,0xbf,0x92,0x67,0x5f,0xb2,0x3f,0x24,0xdf,0x8e,0x4f,0xe9,0x8e,0x00,0x03,0xaa,0xdf,0xb6,0xd8,0xf9,0xcc,0x2c,0xd7,0x99,0xbb,0xf7,}; static uint8_t ROUND11[] = {0xee,0x2f,0xdf,0xb3,0xae,0x63,0x06,0x13,0xb7,0xd8,0x90,0x97,0x7c,0xf2,0x51,0x5d,0xea,0xc2,0x72,0xa3,0x7f,0x27,0xe4,0xa0,0x19,0x61,0xec,0xf1,0x03,0xd4,0xff,0x5b,0x45,0xcc,0x8a,0xef,0x53,0xb6,0x35,0xdd,0x75,0xaa,0x51,0xaa,0xbf,0x71,0xc0,0x64,0x25,0x55,0xcc,0xd3,0x28,0x1e,0x03,0x88,0xf8,0xca,0x09,0xd8,0x32,0x58,0xcf,0x30,}; static uint8_t ROUND12[] = {0x6a,0x30,0xd9,0x7c,0xc9,0x8a,0xf6,0xa2,0x5b,0x67,0x3d,0xce,0x7a,0xea,0xb8,0xd7,0x62,0xbf,0x2e,0x55,0xea,0x0c,0x6d,0xc8,0x99,0x17,0x92,0x81,0xf8,0x4d,0xd0,0x2a,0x28,0x96,0xf7,0x7e,0x9c,0x10,0x6b,0x47,0x2f,0x55,0xf7,0xad,0xbe,0xf7,0xb1,0x15,0x7b,0xe5,0x67,0xee,0x12,0x36,0xeb,0xda,0xc2,0xa3,0xc5,0xd8,0xcb,0x13,0x3e,0xb5,}; static uint8_t ROUND13[] = {0xac,0x11,0x76,0xab,0xdc,0x5f,0x71,0x17,0x01,0x83,0xd9,0x2a,0xe5,0x58,0x56,0x22,0x1b,0x0d,0x95,0x59,0x0a,0xf1,0x1d,0x9d,0x72,0xba,0x60,0x5e,0xc0,0x26,0xbb,0xec,0x52,0xd6,0x97,0x4b,0xc4,0x3a,0x1e,0xfb,0x12,0x5f,0xf2,0xb1,0x61,0xfb,0xdc,0x61,0x6f,0xda,0x00,0xf0,0x41,0x93,0xa0,0xbc,0x26,0xaa,0xcd,0xfa,0x05,0x2a,0x57,0x41,}; static uint8_t ROUND14[] = {0x59,0xfa,0x90,0x94,0x80,0x62,0x0e,0xcc,0x08,0xd3,0x45,0x31,0xa6,0xda,0x1b,0x55,0x15,0x8b,0x74,0xfc,0x93,0xdd,0xf6,0x8e,0x1d,0x24,0x26,0x15,0xb6,0xf3,0x84,0x3a,0x79,0x52,0xe6,0x3e,0x79,0x8c,0x64,0x45,0xcd,0xe1,0xb0,0x7e,0x0b,0xe0,0x9d,0x0d,0x71,0x1c,0xb7,0xb4,0x2a,0x0e,0x77,0x60,0xa5,0x93,0xb0,0x8a,0xcf,0xce,0xb6,0x3d,}; static uint8_t ROUND15[] = {0x9e,0xb2,0x53,0x31,0x9e,0xfa,0x61,0xb8,0x64,0xf2,0x7b,0xd3,0x34,0xd7,0xdd,0x78,0xb3,0x8d,0x32,0x65,0xfb,0x54,0x4e,0x0c,0x8e,0xde,0xe9,0x50,0xa5,0x47,0xe1,0xd8,0xdb,0x92,0x1a,0x28,0x57,0x74,0xab,0x94,0xd6,0x6b,0xea,0xe9,0x33,0x29,0x8d,0x20,0xf2,0xa5,0xaa,0x87,0xc6,0x2f,0xe1,0xe3,0x83,0xcc,0x3b,0x18,0xe7,0xaf,0x18,0xac,}; static uint8_t ROUND16[] = {0x81,0x73,0x53,0x24,0x00,0x56,0x71,0xf7,0xbd,0xad,0x9e,0x68,0x5e,0xe8,0x25,0x7f,0x5e,0x06,0x22,0xb9,0xfc,0xb5,0xd3,0x8d,0xbd,0xfb,0x2d,0xf2,0x72,0x58,0xc3,0xe1,0xd4,0x6d,0x76,0xe2,0x4c,0x0c,0x92,0xc7,0x44,0xe1,0xb5,0x0a,0x2b,0x4b,0x0d,0x31,0x52,0x5b,0x3a,0xf8,0x3c,0xc8,0x0a,0x75,0x72,0x2d,0x92,0x1b,0xde,0xef,0x59,0xc4,}; static uint8_t ROUND17[] = {0x17,0x49,0x8c,0xdf,0xf4,0x32,0x3b,0xb8,0x02,0x1e,0x44,0xec,0xa6,0x55,0x9e,0x05,0xd8,0xff,0x9a,0x0e,0xf2,0xee,0x9d,0x4b,0xa0,0xac,0x6e,0x73,0xf8,0x39,0x72,0xa0,0xdf,0xbb,0x6d,0x47,0x72,0x8f,0xa7,0x03,0x11,0xd7,0xc8,0x2e,0x15,0x49,0x66,0xe1,0xb7,0x67,0x82,0x63,0xb0,0xf6,0x51,0x33,0xe9,0x11,0x69,0x69,0x19,0x3d,0x42,0x9b,}; static uint8_t ROUND18[] = {0x22,0x8c,0x45,0x74,0xd7,0xc4,0x5e,0xb9,0xba,0x92,0x40,0x72,0x21,0x33,0xfc,0xe7,0x4a,0xbe,0x00,0xc7,0x32,0x8a,0xb3,0x0b,0x4b,0xde,0x37,0x3d,0xc7,0x9a,0xfd,0xd6,0xe0,0x56,0x9d,0x36,0x26,0x8c,0xd5,0xea,0xa2,0xf2,0x72,0x05,0xfc,0x00,0x51,0x25,0x77,0xbc,0xbb,0x66,0x99,0xe1,0xd6,0x6e,0xd8,0x5e,0xaf,0xab,0xa7,0x54,0x8a,0xfb,}; static uint8_t ROUND19[] = {0x3d,0x40,0xcc,0xd9,0xcc,0x44,0x5b,0xbe,0xcc,0xa9,0x22,0x7c,0x67,0xfe,0x45,0x5d,0x89,0xe0,0xb7,0xc1,0xc8,0x58,0xd3,0x2f,0x30,0xe2,0xb5,0x44,0xca,0x9a,0x5a,0x60,0x65,0x35,0xae,0xa2,0xe5,0x9f,0xec,0x6e,0xc4,0xd1,0xba,0x89,0x8c,0xc4,0x33,0x8c,0x6e,0xad,0xef,0x9c,0x08,0x84,0xbc,0xf5,0x6a,0xca,0x2f,0x48,0x1a,0x2d,0x7d,0x3e,}; static uint8_t ROUND20[] = {0xe1,0xe5,0x77,0xae,0xac,0x92,0xe3,0xa2,0xb7,0xf8,0xa2,0x62,0xbf,0x2a,0xc9,0xc0,0x37,0xd2,0x27,0x4c,0xa6,0x61,0x8f,0xbe,0x4c,0xc2,0x1d,0xb7,0xc6,0x99,0xe9,0x94,0x6b,0x66,0x71,0xae,0x45,0xea,0x43,0x3a,0x1e,0x39,0x2a,0x5b,0xc9,0xee,0xc9,0x6f,0xd6,0x41,0xba,0x8f,0x4a,0x04,0x7f,0x02,0x2a,0x04,0xa3,0x37,0x22,0x70,0x04,0xdf,}; static uint8_t ROUND21[] = {0x5e,0x44,0x24,0xc0,0xbc,0xb2,0xf0,0xf7,0xa2,0x42,0x88,0x21,0xa9,0xd5,0x84,0x0a,0x82,0x40,0x1f,0x44,0x40,0xae,0x6b,0xed,0x25,0xc5,0x3c,0xd9,0xe7,0x1c,0xf9,0xd3,0x99,0x04,0xd6,0xa3,0x75,0xbd,0x72,0x1f,0x43,0x32,0xab,0x02,0x02,0x52,0x9c,0x91,0xfe,0xb9,0xc0,0x94,0xc3,0xe6,0xd3,0x4c,0xa4,0xf6,0x66,0x49,0xee,0x6f,0xa2,0x12,}; static uint8_t ROUND22[] = {0x56,0xb1,0x99,0xd6,0x3c,0xa3,0x71,0x89,0xd5,0xca,0x0d,0x40,0x00,0x6a,0xc7,0xbc,0xb9,0xf3,0x9c,0xbd,0xc0,0x0e,0xf7,0xb8,0xa5,0x69,0x7c,0xaa,0x7d,0x81,0xd0,0x5b,0x64,0x5a,0x14,0x69,0x95,0xb1,0x15,0x1d,0x01,0x95,0x8f,0x15,0x89,0x33,0x7e,0x14,0xaf,0xc6,0xe7,0xdd,0x10,0xa8,0x15,0x17,0x0e,0x52,0x7a,0x39,0x8e,0x6c,0xe8,0xc3,}; static uint8_t ROUND23[] = {0xd2,0xd4,0x98,0xff,0x93,0xfb,0x03,0x01,0x3a,0x64,0xf2,0x95,0xb5,0xbc,0x68,0xe5,0x7d,0x2f,0xb5,0x60,0x0d,0xa5,0x78,0xaa,0x01,0x1d,0x43,0xff,0x43,0x2e,0xae,0x3e,0x0c,0x80,0x0f,0x9e,0x2a,0x53,0x15,0x5e,0x56,0xfd,0xbf,0x5e,0x06,0x8f,0xe2,0xb4,0xbe,0xb3,0xe4,0x2b,0x25,0x85,0x53,0x1b,0x8b,0x16,0xc4,0xd8,0xca,0x33,0x56,0xc6,}; static uint8_t ROUND24[] = {0x3d,0x38,0x75,0x48,0x99,0x03,0x71,0x0f,0x17,0xcf,0x42,0x47,0xb5,0x84,0x2a,0xce,0x6f,0x01,0x7b,0x1a,0x3b,0x99,0xe9,0xee,0x5f,0xbc,0x04,0xfc,0x78,0x98,0xe7,0x8b,0x12,0x69,0x38,0x79,0x87,0x80,0x28,0xca,0x40,0xc6,0x3c,0xd0,0xf6,0x92,0x5f,0xb7,0xd0,0xca,0x04,0x12,0xe4,0xf0,0x66,0x19,0xe3,0xac,0xe2,0x23,0x69,0x0f,0x03,0xb8,}; static uint8_t ROUND25[] = {0xa0,0x13,0xe2,0x1c,0xd1,0x23,0x44,0x83,0xc9,0x5c,0x2e,0xa2,0x75,0x7b,0xe9,0x49,0xbc,0x79,0x40,0x1b,0xa3,0x9b,0x09,0xc3,0x16,0xa1,0x61,0x2d,0x59,0x46,0x42,0xbe,0x65,0xca,0x10,0x6e,0x12,0x69,0x5a,0xc3,0x80,0x8c,0x57,0xc6,0xf2,0x98,0x0e,0x89,0x5f,0xd1,0xfe,0x18,0x89,0x46,0x56,0x2a,0xfc,0x23,0x84,0x14,0xe1,0xe4,0x36,0x49,}; static uint8_t ROUND26[] = {0xc5,0xf6,0x36,0x7d,0x71,0x95,0x48,0x9e,0x16,0x24,0x2f,0x91,0x2f,0xbe,0x0d,0x80,0x02,0xe9,0x47,0xde,0x3a,0x7e,0x9c,0x53,0xf7,0x7b,0x1e,0x5e,0x90,0xe0,0x5b,0xd7,0xca,0x39,0x5e,0x78,0x7e,0x34,0xcb,0x5f,0x50,0x0c,0x02,0xda,0x59,0xc9,0xd8,0x3d,0xe3,0x56,0x01,0xde,0x7a,0xe8,0x0d,0xae,0x74,0xa0,0xd6,0xb4,0xa2,0x92,0xd4,0x3b,}; static uint8_t ROUND27[] = {0x7c,0x28,0xc4,0x4c,0x6a,0xab,0xa8,0x3c,0x12,0x2f,0x24,0xd6,0x82,0x73,0xe2,0x8a,0x5a,0xfd,0x65,0xb4,0x07,0x1d,0x02,0xb7,0xea,0x33,0x00,0x47,0x8d,0x51,0x18,0x97,0x1e,0x13,0x56,0xae,0x57,0xcb,0xc7,0x0d,0x2a,0x17,0x7e,0xa4,0x64,0xa1,0xc2,0xc5,0x0d,0x42,0x97,0xb9,0x33,0xe7,0x89,0xc6,0x3b,0x14,0x81,0x79,0x7a,0xe8,0xf0,0x8c,}; static uint8_t ROUND28[] = {0xaf,0x7c,0xb4,0x2b,0x1c,0x70,0xa8,0x5a,0xc1,0xae,0x1c,0x29,0x91,0xb2,0x5b,0x65,0x7c,0x19,0xf4,0xfc,0xf8,0x3a,0xf7,0xf7,0xdc,0x0a,0xe1,0x02,0x8c,0x14,0x52,0xa6,0xa1,0x7d,0xc9,0x89,0x29,0x63,0x4f,0xe6,0xed,0x38,0x55,0xb7,0x0b,0x96,0xbc,0x2c,0xaa,0x93,0xd8,0x20,0x37,0xb9,0x4e,0xbe,0xdd,0xc7,0x7e,0x4c,0x1a,0x7c,0xc5,0x63,}; static uint8_t ROUND29[] = {0xbd,0x56,0xad,0x4c,0x0c,0xbd,0x16,0x27,0x06,0x05,0x3d,0xa9,0x29,0xd6,0x67,0x25,0x3a,0xad,0xcf,0x41,0x7a,0xff,0xb4,0x83,0xff,0xf4,0xf2,0x69,0x9b,0xf4,0x06,0xd1,0x28,0xcf,0xdf,0x51,0x96,0xdf,0xbb,0x05,0xbb,0x89,0xcc,0xbf,0x04,0xc5,0x14,0x7b,0xd2,0xeb,0xb3,0x15,0x6b,0x0b,0xc1,0x76,0x8c,0xa6,0xfa,0xa1,0x71,0xc9,0x1c,0x01,}; static uint8_t ROUND30[] = {0x00,0x4d,0x7b,0x0f,0xff,0x9b,0xcd,0xdf,0x4b,0x39,0x13,0xae,0x19,0x0a,0x76,0x72,0x87,0x05,0xa3,0xd2,0x38,0x74,0xd9,0x2a,0x8b,0x7f,0xf2,0x46,0xc8,0xfc,0xad,0x46,0x62,0x3c,0xb0,0x47,0x23,0xc8,0xad,0xed,0x0c,0xba,0x49,0x68,0xd1,0xa8,0xcc,0x13,0x75,0xb9,0x90,0x05,0x78,0x6c,0x1b,0xcb,0x7a,0xe4,0xbf,0x13,0x32,0x5c,0x3a,0xe0,}; static uint8_t ROUND31[] = {0x82,0x99,0xa5,0xbf,0x5e,0xd6,0x4f,0x52,0x5c,0x4e,0xeb,0xbe,0xca,0x96,0x9f,0xc1,0xb9,0x1a,0x81,0xad,0xb5,0x8c,0x58,0x4b,0xdd,0x2d,0x76,0x76,0x38,0x6a,0x31,0xfa,0x54,0x66,0x43,0xa3,0xcf,0x50,0x50,0x07,0x58,0x4f,0x02,0xfb,0x71,0x2d,0x70,0x8c,0xab,0x64,0x5b,0xf0,0x78,0xa1,0xb9,0x33,0x9f,0x5a,0x76,0xae,0xe9,0x85,0xd0,0x17,}; static uint8_t ROUND32[] = {0xce,0x71,0x00,0xf3,0x45,0x5d,0xb1,0xa9,0x77,0x6a,0x9f,0x40,0xd5,0x62,0xea,0x99,0x8a,0xfc,0xa1,0xf9,0xfe,0xe7,0xe0,0xd8,0x1c,0x8d,0xb3,0x4c,0xf6,0x8a,0xd2,0x3a,0x8b,0xfa,0x6f,0xc0,0x47,0x74,0x70,0x3e,0x1e,0x56,0xd5,0x19,0x6b,0x66,0x96,0x61,0x58,0xfc,0xf2,0xa8,0x33,0x5a,0x58,0xc6,0xba,0x7b,0xa1,0xaf,0x75,0x6b,0xa1,0xdc,}; static uint8_t ROUND33[] = {0x90,0xaa,0xab,0xcb,0x65,0x5e,0xe9,0x21,0xb8,0x35,0x02,0x29,0xef,0xe6,0x06,0x4a,0x60,0x05,0x1c,0xf0,0xca,0xc8,0x58,0xfa,0x3d,0x43,0xaf,0xd5,0xb9,0x7c,0xc8,0x23,0x01,0xbd,0x1b,0x8c,0xc1,0xf8,0x74,0x02,0x2e,0x5a,0xf9,0x48,0x18,0x56,0x38,0x78,0x3a,0x13,0xca,0x1b,0xbd,0x50,0x49,0xac,0xe7,0xfb,0xf4,0xf6,0xd9,0x0c,0x20,0x1f,}; static uint8_t ROUND34[] = {0x3c,0xf0,0xa2,0x5b,0x33,0xde,0xd3,0xe0,0x80,0x6d,0xfe,0x60,0x3b,0x99,0x87,0xf1,0xd6,0xf2,0xb3,0xfd,0xcb,0x1e,0xc7,0xf8,0x56,0x68,0x28,0xc0,0x0e,0x17,0xe8,0xf5,0x9e,0x38,0xb3,0xbc,0xa3,0x02,0x39,0x6c,0x75,0x25,0xca,0x19,0x4e,0x6c,0xc8,0x50,0x13,0x69,0x05,0x9e,0x2e,0x34,0xae,0x21,0xe3,0x14,0x12,0x15,0x87,0x68,0x47,0xc4,}; static uint8_t ROUND35[] = {0xbd,0xc5,0x26,0x6a,0xee,0x33,0x9a,0x1f,0xf1,0x3f,0xcf,0x52,0x29,0x77,0x3c,0xd3,0xd1,0x4b,0x47,0x10,0x1e,0x83,0x07,0x69,0x27,0xc1,0x60,0xbb,0x71,0xbf,0x74,0x45,0x59,0x05,0x25,0xa2,0x01,0x2d,0x52,0xaf,0x00,0x8e,0x11,0x8e,0x16,0xdf,0x1b,0x6b,0xfc,0xaf,0x8f,0x22,0xb4,0xe4,0x5f,0x9e,0x74,0x9f,0x3c,0x20,0x62,0x5a,0x2b,0xc8,}; static uint8_t ROUND36[] = {0xef,0x8d,0x2b,0xa8,0x85,0x38,0x1a,0xb9,0x77,0x56,0xd5,0x9d,0xbb,0xbf,0x53,0xa1,0xea,0x35,0xd1,0x52,0xb2,0xd8,0xf8,0x2c,0x35,0x18,0x43,0x0a,0xa3,0x4e,0x70,0x83,0x59,0x19,0x4e,0xa4,0x39,0x50,0xd0,0x32,0xe1,0x51,0xf5,0x76,0xd3,0x43,0xa5,0xc3,0xcf,0xe6,0xb7,0x1d,0x4e,0xd0,0xea,0xd9,0xd3,0xa1,0x07,0x40,0x25,0x89,0xba,0xd0,}; static uint8_t ROUND37[] = {0x19,0x4e,0xa5,0x32,0x4c,0x41,0x79,0x99,0x8d,0xd7,0x05,0x77,0x55,0xf2,0x55,0xfd,0xea,0x04,0xda,0xdf,0x53,0x3f,0x78,0x51,0xe3,0xe9,0x71,0x8b,0x61,0x09,0x48,0xe3,0x2f,0xd2,0x83,0x23,0x07,0x7d,0x94,0x21,0x14,0x2a,0xc8,0x08,0x97,0x8a,0xdf,0xa3,0x25,0xb6,0x68,0xc8,0x59,0x9a,0x2e,0x01,0xc7,0x57,0xa5,0xa1,0x4e,0xd2,0xdd,0x37,}; static uint8_t ROUND38[] = {0x10,0x69,0x84,0xd2,0xf0,0x08,0x7e,0x62,0x1d,0xae,0x76,0x05,0x52,0xbc,0x62,0x79,0x07,0x22,0x67,0x88,0x3c,0x20,0x40,0x79,0x48,0x1a,0xf6,0x03,0x43,0x54,0xf1,0xa2,0xb7,0x7c,0x17,0xe6,0xc0,0x39,0xa1,0x06,0x3e,0x47,0x93,0x42,0xaa,0x3c,0xcd,0x90,0x33,0x0d,0xd3,0xfb,0x5a,0x7d,0x5e,0x97,0x66,0x19,0x49,0x7e,0x2d,0x33,0x26,0xcd,}; static uint8_t ROUND39[] = {0xa1,0x34,0x72,0x16,0xf1,0xa6,0xdb,0x47,0xb9,0x0c,0x4d,0xed,0x3c,0x5c,0x75,0x44,0x0f,0x54,0xc2,0x2c,0x87,0xd5,0x38,0x31,0x4d,0x13,0x40,0xf8,0x6f,0x88,0xac,0xba,0x01,0x37,0x8a,0xcb,0x93,0x3d,0xda,0xd0,0xad,0xc6,0xb7,0x5d,0x55,0xbf,0xb7,0xe8,0xef,0xc9,0xc4,0xa5,0x31,0xb2,0xa4,0x10,0x61,0x0b,0x75,0x15,0xb6,0xda,0xc6,0x6a,}; static uint8_t ROUND40[] = {0xb7,0x6e,0x4d,0xb1,0x47,0xe0,0xea,0xa4,0xf0,0x48,0x80,0x65,0x40,0x88,0xb9,0xd0,0xfc,0xe5,0x18,0xc8,0xc3,0x77,0xd9,0x2c,0x84,0x63,0x45,0x60,0x4d,0xc6,0xb2,0xb1,0x8d,0x37,0x7f,0xdb,0x8e,0x30,0xf0,0x6d,0x9b,0xcf,0xe6,0xd7,0xda,0xcc,0x07,0xd6,0xad,0xff,0x73,0xd9,0x8d,0x49,0xf8,0xf1,0x32,0xb8,0x0f,0x30,0x84,0x39,0x08,0x30,}; static uint8_t ROUND41[] = {0xac,0xd4,0xe5,0x27,0x76,0x3d,0xfd,0x45,0x13,0xf0,0xde,0xf0,0xb1,0xed,0xf8,0xea,0x12,0xdc,0x78,0xd3,0x36,0xb7,0xb7,0x96,0xf3,0xdc,0xc3,0x2e,0x10,0x68,0x72,0x54,0x43,0xa2,0xf5,0x5a,0xb4,0xf6,0x66,0xb2,0x7d,0x6b,0xf2,0xab,0x39,0x66,0x9c,0x98,0x29,0x3f,0x0a,0x91,0x08,0x05,0x1f,0xd3,0x14,0x4d,0x31,0xa1,0xed,0x17,0x1d,0xdd,}; static uint8_t ROUND42[] = {0x10,0x12,0x8c,0x15,0x49,0x4b,0xc8,0x7a,0x87,0x37,0x4f,0x67,0x6e,0xf9,0xfe,0x2d,0xf2,0x0b,0x36,0xff,0xcc,0xa4,0x1a,0x80,0xbd,0x40,0xb2,0x16,0x63,0x7b,0x3d,0xe7,0x10,0xef,0xd0,0x70,0xe2,0x77,0x82,0x78,0x20,0xa7,0xbb,0xa3,0xcc,0xeb,0x7b,0x21,0xf8,0xfe,0x7f,0x97,0x75,0xd6,0xc4,0xdf,0x4d,0x3d,0xa5,0x34,0x94,0x34,0xec,0x49,}; static uint8_t ROUND43[] = {0x26,0x32,0xdd,0x5c,0x18,0x8c,0x6e,0xd3,0xa4,0x61,0x04,0x05,0xfd,0xda,0x70,0x4a,0xdd,0x75,0x2f,0x54,0x24,0xd9,0xde,0x65,0xa5,0x14,0x00,0xfe,0x47,0x8e,0x26,0xcd,0x04,0x12,0xe5,0xf9,0x1c,0xa4,0xb7,0x44,0xc3,0x4f,0x49,0x54,0xf4,0x0a,0x3a,0x42,0x54,0x43,0x1d,0x21,0x95,0x46,0x23,0x20,0x8b,0x52,0x7b,0x7b,0x4d,0xaa,0x68,0x7e,}; static uint8_t ROUND44[] = {0x45,0x70,0x7f,0x5b,0x6f,0xc5,0xcc,0xd1,0xf7,0x8d,0x77,0xf1,0x77,0xd1,0x0f,0xb8,0xb4,0x62,0xc7,0x4c,0xc8,0x21,0x51,0x8c,0xd5,0xcf,0xa4,0xb5,0xd6,0xb4,0x0b,0x41,0x80,0x44,0x90,0x06,0x93,0xc3,0x7a,0xbb,0xb8,0x23,0x67,0xd3,0x40,0xfe,0xc6,0x7f,0x80,0x0d,0x74,0x07,0x29,0x35,0xda,0x17,0x06,0xb4,0xd9,0x0a,0xe2,0x60,0x99,0xc7,}; static uint8_t ROUND45[] = {0x56,0xc3,0x7f,0x31,0x22,0x0b,0x5b,0x30,0x40,0x37,0x3d,0x91,0xb2,0xc5,0xe4,0x2f,0xe9,0xe6,0x01,0xa1,0x2f,0x7f,0x8d,0xc4,0x53,0x44,0x59,0xbf,0x28,0xe4,0x84,0xb8,0x71,0x3d,0xb2,0x43,0xc5,0x78,0x2c,0x03,0x1e,0x67,0x40,0x03,0xa3,0xc1,0x4c,0x42,0xfd,0x15,0x2e,0x71,0x88,0x78,0x90,0x65,0xe8,0x27,0x95,0xe1,0x0f,0x87,0xd5,0x4b,}; static uint8_t ROUND46[] = {0x5d,0xa9,0x4c,0x89,0x9d,0x48,0xbd,0x82,0x99,0xfe,0xe3,0xd8,0x16,0x62,0xf8,0xd6,0xc5,0xf8,0xf8,0xbc,0x54,0xd1,0x8c,0xb0,0x36,0x8b,0x13,0xce,0xba,0xee,0x7a,0xd7,0x1e,0x74,0xea,0x80,0xf3,0x49,0x74,0xad,0x16,0x6f,0x04,0xf9,0xa0,0x60,0x28,0x09,0x16,0x6f,0xe4,0x08,0x5a,0x47,0x5a,0x8c,0xa8,0x6c,0xad,0xe1,0x2b,0x67,0x54,0xc4,}; static uint8_t ROUND47[] = {0x06,0x64,0x36,0x3f,0x97,0xba,0x91,0x07,0x60,0xb0,0x92,0x2e,0x31,0xca,0x88,0x0c,0xa9,0x74,0x69,0x50,0x6c,0xb0,0x07,0xe3,0x10,0x8c,0x36,0xc3,0xce,0x3c,0xe1,0x80,0x1f,0xb4,0x19,0x76,0x09,0x47,0x93,0x39,0xe8,0x82,0x06,0x32,0xb6,0xa3,0x8b,0xff,0xff,0xee,0x05,0xa9,0xad,0xc1,0x1c,0xc5,0x44,0xb9,0xaa,0x6f,0x5b,0x95,0xcc,0x6f,}; static uint8_t ROUND48[] = {0x73,0x2c,0x41,0xa1,0xed,0xaa,0x72,0x7c,0x04,0xf6,0x27,0xff,0x15,0x8a,0xaf,0xf6,0x7c,0x18,0xef,0xd6,0x67,0x21,0x61,0x32,0xb9,0x9a,0xb8,0x4d,0x10,0x89,0x96,0xa1,0x0b,0xb0,0x08,0xb5,0xd8,0x03,0xb2,0x2e,0xd1,0xaa,0x78,0xbb,0x0d,0x10,0xf8,0xa7,0x62,0xfd,0x34,0x77,0x7d,0x7d,0xcc,0xce,0x8e,0x84,0x82,0x7b,0xa8,0x8d,0x41,0x93,}; static uint8_t ROUND49[] = {0xfc,0x9c,0x21,0xd6,0x7e,0x39,0x3a,0x2b,0x05,0xa2,0x3a,0x17,0xd8,0xdb,0x63,0x0c,0xba,0xeb,0xaa,0x3d,0xef,0x21,0x11,0x81,0x74,0x9f,0x1b,0xca,0xd1,0x81,0x56,0x06,0x27,0xfb,0x60,0xee,0x20,0xfa,0xe2,0xe5,0x98,0x0c,0xbf,0x50,0xfc,0xe0,0xa1,0x9d,0xce,0x80,0x7e,0x7f,0xb7,0x5c,0x4d,0xa0,0xef,0x00,0x8b,0xc7,0x5d,0x41,0x3a,0x65,}; static uint8_t ROUND50[] = {0x04,0x53,0xb7,0x65,0xaf,0xc1,0xed,0xff,0xa5,0x95,0xef,0xe3,0x45,0x17,0x7f,0x58,0x05,0xed,0x3a,0xbc,0x12,0x97,0xce,0xab,0x75,0x7a,0xe7,0x16,0x17,0x23,0xa6,0x14,0x4c,0xb5,0x43,0x29,0x9f,0x41,0x80,0x49,0x27,0x6d,0x16,0xb7,0x89,0x66,0x62,0x63,0x16,0x34,0xfa,0xb9,0x54,0x91,0x27,0xc1,0x0f,0x27,0x50,0x5b,0x7d,0xee,0x86,0x65,}; static uint8_t ROUND51[] = {0x38,0x53,0xf3,0xbf,0x02,0x4e,0x06,0x68,0xe8,0xd1,0xea,0x53,0x73,0x3a,0x97,0x53,0x7f,0x97,0xd9,0x30,0x7c,0x5f,0x3a,0x19,0x86,0x4a,0xb4,0xee,0xb1,0x65,0x47,0x10,0x69,0x3b,0xb9,0x61,0xa3,0x44,0xde,0xc8,0xa7,0x58,0xf5,0xe6,0x4b,0x26,0xfc,0xb6,0xdd,0x42,0x34,0x19,0xc4,0xa1,0x14,0xfa,0x74,0x92,0x11,0xa9,0xde,0x06,0xc2,0x81,}; static uint8_t ROUND52[] = {0x24,0x01,0x37,0xf0,0xdd,0x57,0xbe,0xb3,0xf7,0xfc,0x28,0x3b,0xb3,0xea,0xd4,0x23,0xc6,0x78,0x83,0xfd,0x46,0xf4,0xe2,0x74,0x71,0xd7,0xbe,0x57,0xad,0x46,0x9a,0x49,0xba,0xd0,0x3a,0x36,0x58,0x41,0x8b,0xd5,0x56,0x14,0x67,0x8f,0x3a,0x46,0x3b,0xce,0xff,0x85,0x29,0x13,0x14,0xb9,0x0e,0xf4,0x3c,0xcb,0xcb,0x02,0x8f,0x0a,0x7a,0x07,}; static uint8_t ROUND53[] = {0xf9,0x05,0x0a,0x52,0x71,0xed,0xbe,0x4c,0xfd,0xb9,0x52,0x0e,0xc0,0x5b,0xbd,0xc3,0xcb,0xcb,0x9b,0xce,0x36,0xfd,0x21,0x23,0x38,0xd3,0xe7,0x02,0x8a,0x39,0xb9,0xab,0x30,0x79,0x3e,0x56,0x1d,0x75,0xa2,0xe4,0x24,0x19,0x32,0x64,0xc7,0xf0,0x77,0x5e,0x65,0x59,0x9e,0xf0,0xc9,0x4e,0x0a,0xd2,0x4d,0xbf,0xe1,0x82,0x52,0x36,0x42,0x67,}; static uint8_t ROUND54[] = {0x47,0xca,0xa7,0xa5,0x86,0x2f,0xad,0x83,0x7a,0xaa,0x40,0x9a,0x4a,0x9d,0xf2,0x57,0x5e,0x64,0x55,0x28,0xc3,0x51,0x59,0x11,0x59,0x11,0xb7,0xc4,0xe2,0xf0,0x8a,0xe4,0x9d,0x68,0xde,0x97,0x24,0x9b,0x31,0xb8,0x3c,0xe2,0xc1,0x63,0xf6,0x49,0xca,0xd4,0x55,0x9d,0xc6,0xe6,0xa7,0x19,0x1f,0x29,0x22,0xd7,0x9a,0x5f,0xd6,0xaf,0x16,0x7b,}; static uint8_t ROUND55[] = {0x13,0xf5,0x82,0x5c,0x41,0xfa,0x49,0xed,0xf6,0x10,0x4e,0x3e,0x35,0xc9,0xc2,0x24,0xeb,0xa9,0x3e,0x37,0x37,0x4f,0x73,0x00,0x04,0xc3,0x9c,0x54,0xe7,0x39,0x1e,0x4a,0x84,0x7f,0xd6,0x18,0x65,0x23,0x5a,0x3f,0xe3,0x22,0x24,0xc9,0x6f,0xbe,0x86,0xf7,0xe1,0x4c,0x3d,0x5d,0xf4,0x96,0xe8,0x3e,0xc9,0x89,0xa7,0x1b,0x4f,0x29,0x3a,0x44,}; static uint8_t ROUND56[] = {0xe5,0xb5,0x5e,0x05,0xef,0xe1,0xca,0x6b,0x9a,0x96,0xa5,0x7e,0x3a,0x15,0x23,0xd6,0x10,0xd7,0x0f,0x83,0x7e,0x93,0xb3,0x1f,0xa9,0x8c,0x27,0x36,0xd3,0xe1,0x14,0xd2,0x38,0xd4,0x6e,0xc6,0xb6,0xe3,0xd1,0x9e,0x77,0x4b,0x25,0x3f,0x6b,0x0c,0x7a,0x2e,0xbe,0x69,0xb7,0xe6,0x0f,0xc0,0x87,0x44,0x44,0x80,0x6b,0x2a,0x22,0x78,0xdf,0x45,}; static uint8_t ROUND57[] = {0xf1,0x4a,0x58,0x6a,0xc3,0x0f,0x0a,0xf2,0x55,0xf5,0x97,0xa9,0xae,0xf9,0xab,0xba,0x5e,0x99,0xc0,0x4d,0x17,0xb0,0x1f,0x24,0x42,0x7c,0x4e,0xe2,0xc1,0x96,0xb5,0x2a,0xcb,0x1c,0xee,0xfc,0x9b,0x15,0xcb,0x82,0x2b,0x3e,0xcf,0xfd,0xc2,0xf7,0xc4,0x9e,0x11,0xd3,0xfc,0x07,0x69,0xac,0xee,0x33,0x36,0x15,0x37,0xd3,0x79,0xc6,0x2e,0x0c,}; static uint8_t ROUND58[] = {0x7e,0x2d,0x33,0x98,0x80,0x71,0x95,0xc4,0x8e,0x6e,0xc5,0x2d,0x20,0x71,0x0b,0xbf,0x8b,0x21,0xea,0x8d,0xe4,0xd1,0xab,0xc1,0x97,0x89,0x7c,0xcc,0x58,0xae,0xff,0x40,0x25,0x9e,0xdc,0x67,0x27,0x0c,0xda,0xe0,0xed,0xcc,0x68,0x6c,0x0d,0x0d,0xcc,0xc5,0x76,0x0c,0x14,0x95,0xab,0x1c,0xf4,0x84,0x82,0xdc,0x20,0x00,0xae,0x2d,0x42,0xad,}; static uint8_t ROUND59[] = {0x2f,0x3d,0x5c,0x5f,0x99,0x0b,0xf6,0x15,0xd5,0xe8,0xb3,0x96,0xcc,0xbd,0x03,0x37,0xda,0x39,0xfa,0xd0,0x9b,0x05,0x9f,0x95,0x5a,0x43,0x1d,0xb7,0x6a,0x9d,0xc7,0x20,0xdf,0xfc,0x4e,0x02,0xc0,0xbe,0x39,0x7c,0x7e,0x04,0x63,0x79,0x9c,0xd7,0x5f,0xd6,0xab,0x7c,0x52,0xbe,0xc6,0x6c,0x8d,0xf5,0xef,0x0d,0x47,0xe1,0x4a,0x4c,0x59,0x27,}; static uint8_t ROUND60[] = {0x48,0x3a,0x17,0x64,0xd3,0x08,0xcc,0x49,0x4a,0x2b,0x54,0x3d,0x29,0xba,0x61,0x64,0x83,0xae,0xfd,0xf9,0x1c,0x77,0x69,0xfd,0x08,0x4e,0xed,0xaa,0xc1,0xad,0xd1,0x89,0x1d,0xf9,0x5d,0x31,0x7a,0x47,0x43,0x0b,0x2b,0xf7,0x3e,0x40,0x81,0xf8,0x65,0x97,0x02,0x0e,0x28,0xaf,0xe2,0xd3,0x4a,0x22,0xb7,0x7e,0xa6,0x2b,0x61,0x12,0xd0,0x9a,}; static uint8_t ROUND61[] = {0xbf,0xa8,0x86,0x91,0xec,0x95,0x15,0x11,0x65,0x1c,0x6f,0x14,0xaf,0x10,0x0e,0xeb,0x26,0xd8,0x77,0x29,0xe1,0x8a,0xc3,0xef,0x49,0xa8,0x0d,0x73,0xff,0xea,0xee,0xa5,0x3e,0x97,0xc4,0xa7,0x27,0x7a,0x7e,0xe9,0xf2,0xfb,0xa0,0x70,0xb1,0xc9,0x72,0x0d,0x6c,0xdb,0xa4,0x07,0xdd,0x82,0x26,0x70,0x19,0xe3,0xf0,0xf5,0x66,0x2b,0x2f,0x2b,}; static uint8_t ROUND62[] = {0x4c,0x17,0xc8,0xe2,0xe7,0x13,0x2d,0xbf,0x82,0xaf,0xeb,0xc4,0x0e,0xfc,0x77,0x92,0x6d,0x16,0xf4,0xd2,0xc0,0x82,0xd8,0x46,0xda,0xc2,0x87,0x33,0xaa,0x76,0x7e,0x28,0x40,0xeb,0xf0,0x4f,0x25,0x63,0xdf,0x75,0x93,0x34,0x66,0xa3,0x6e,0x11,0x96,0x8d,0x34,0x2e,0x41,0x57,0x82,0x76,0x05,0xd0,0x4d,0x96,0x27,0xce,0x9b,0x52,0x16,0xc8,}; static uint8_t ROUND63[] = {0x70,0xbb,0xfc,0x29,0xa2,0xa7,0x65,0x22,0x0a,0xf8,0x4e,0x7b,0xb1,0x0d,0x75,0x9a,0x31,0x52,0xad,0x4b,0x56,0x43,0xef,0x6b,0x89,0x96,0x69,0x50,0xec,0x7e,0xf9,0x50,0x3d,0x57,0xbc,0x0a,0x28,0xc4,0xee,0x78,0x9a,0x60,0xbf,0x9d,0xca,0xc5,0x91,0x39,0xe1,0x52,0x41,0xd7,0x3b,0x99,0x04,0x10,0xcf,0x92,0xef,0xf2,0x13,0xda,0x9e,0xca,}; static uint8_t ROUND64[] = {0x8d,0x1d,0x56,0xf3,0x7f,0xc1,0x9b,0x84,0x98,0x4a,0x6f,0xa3,0x3a,0xa9,0xc2,0xdb,0xdb,0xf7,0x9a,0x29,0xc0,0x4a,0xd0,0xb4,0xcf,0x20,0x33,0x3e,0x6b,0xec,0x94,0x34,0x47,0xbe,0x24,0x16,0x24,0x2f,0x8c,0xd2,0xf9,0x73,0x2e,0x79,0xbb,0x92,0x5c,0xc5,0xa6,0x1a,0x80,0xc5,0xfc,0x9c,0x07,0x99,0x61,0x24,0x3f,0xd1,0xc1,0xf5,0x90,0x0e,}; static uint8_t ROUND65[] = {0x49,0x2f,0xd0,0x17,0x1f,0x4d,0xcd,0x5d,0x20,0xea,0x6c,0x0d,0x34,0xb5,0x57,0x6c,0x88,0x94,0x66,0x4a,0xe5,0x95,0x5e,0x67,0x37,0xf5,0xe3,0xb7,0x11,0xc2,0x80,0x4d,0x99,0xcc,0xca,0x06,0x5b,0x7e,0xc1,0x8c,0x82,0xda,0x98,0xb1,0x8a,0x30,0x29,0xb7,0x65,0xc5,0x1e,0xbc,0x7c,0x43,0x3b,0x36,0x49,0x2e,0x0e,0xd6,0xb8,0x51,0x1b,0xb6,}; static uint8_t ROUND66[] = {0x7f,0x49,0xe8,0xe5,0x4d,0xb7,0xe5,0xb4,0x32,0x3c,0xae,0x2d,0xb7,0x1f,0x3e,0x8b,0x8e,0xba,0x17,0x2d,0xca,0xd3,0x60,0x2e,0x9b,0x7b,0x05,0x80,0x07,0xa5,0x58,0x93,0x58,0x73,0x2d,0x5a,0xff,0xfa,0x56,0x07,0x2a,0x46,0xe8,0x9b,0x1e,0xa2,0x7e,0xf8,0xd5,0x56,0xde,0xb8,0x6b,0x56,0x9c,0x63,0x5d,0x39,0x4f,0x15,0xd9,0x9d,0x8a,0x15,}; static uint8_t ROUND67[] = {0x56,0x88,0x4a,0x6a,0x92,0x10,0xd5,0xf3,0x71,0xe2,0x58,0x23,0xef,0xb2,0x51,0x1a,0x9c,0x41,0x0c,0x26,0xa4,0x41,0xe0,0x7c,0x1b,0xdf,0xfe,0x86,0x05,0x08,0x42,0x67,0xd4,0x9c,0x31,0x5b,0xaf,0x6a,0x69,0x2d,0x7d,0x97,0x84,0x4b,0x27,0x14,0xb4,0x93,0x08,0x77,0xa5,0xd7,0xf5,0x2c,0xf6,0xfa,0x15,0x17,0x00,0xfc,0xb6,0x98,0x05,0x46,}; static uint8_t ROUND68[] = {0x6a,0xae,0xf8,0x28,0x4e,0xef,0x22,0x1e,0xcb,0x17,0xea,0x3c,0x95,0x96,0xf0,0x75,0xb5,0x15,0x5f,0xe7,0xb9,0x25,0xd7,0x37,0xed,0x3c,0x65,0x43,0xc7,0x61,0xc2,0x8c,0x7c,0xd9,0xd9,0xd4,0xb5,0xe2,0xa3,0x7b,0x2f,0x18,0x3a,0x2a,0x36,0x7b,0xbd,0x34,0xb6,0x33,0x49,0x7b,0xc7,0xa1,0x73,0x7d,0x61,0xc8,0xc1,0xf3,0xef,0x29,0x50,0x62,}; static uint8_t ROUND69[] = {0x38,0xef,0x17,0x8f,0x56,0x88,0xe5,0x9d,0x47,0xc3,0x75,0x25,0x2d,0xb7,0xb3,0x9f,0x40,0xc0,0xc8,0x41,0x69,0x87,0x8e,0xe7,0xba,0x50,0x86,0xe4,0xb2,0x5f,0xea,0x81,0x07,0x6b,0x9c,0x37,0x84,0x7e,0x9e,0x6b,0xf2,0x4a,0xe0,0xb3,0x43,0x68,0x9c,0x26,0x5e,0xc5,0xca,0x74,0x69,0xe6,0x19,0xac,0xd6,0x1b,0x02,0x76,0x72,0x1e,0xfb,0x1b,}; static uint8_t ROUND70[] = {0xe3,0xfe,0x1a,0xab,0xad,0x12,0x07,0x77,0xcf,0x24,0xea,0xae,0x28,0x9b,0x48,0x66,0x32,0xca,0x46,0xce,0xb8,0x9a,0xfa,0xe7,0x3d,0xba,0xe5,0xfa,0x87,0xc7,0x67,0x87,0x93,0x69,0x35,0x5a,0x9c,0xc5,0xc2,0x1c,0xa6,0x04,0xed,0x91,0xd0,0xf2,0xf5,0x8c,0x46,0x65,0x73,0xf3,0xe6,0xd8,0x8e,0x52,0xc6,0x2c,0x0d,0x3c,0xb1,0x88,0xe1,0x41,}; static uint8_t ROUND71[] = {0x82,0xf5,0xbd,0x92,0x04,0x57,0xbb,0x27,0x63,0xa0,0xda,0x03,0x1a,0x7f,0xed,0x47,0xb2,0x36,0x95,0x1b,0x1e,0xa4,0x20,0xc2,0x0f,0xd2,0xb6,0xde,0x1d,0xbf,0xbb,0x9c,0x46,0x00,0xea,0x70,0x92,0x78,0x84,0x93,0xe2,0xd4,0xbe,0x6e,0xe2,0x4b,0x6d,0xba,0x04,0xe5,0x7a,0xf3,0xe8,0xf2,0xf1,0x4d,0x98,0x37,0x29,0x54,0x20,0xac,0x76,0x31,}; static uint8_t ROUND72[] = {0x6d,0x0b,0x26,0x20,0x8b,0xa9,0xb1,0x61,0x50,0x67,0xbb,0x3f,0xf9,0x7b,0x29,0x2f,0xe6,0x7e,0x4c,0x02,0xd2,0x40,0xd6,0x49,0xc3,0x23,0x70,0xe0,0xa4,0xcd,0x22,0xd0,0x3b,0xdf,0x86,0x4b,0xe4,0xd2,0x4a,0x3f,0x5f,0x51,0xae,0xcc,0xfd,0x1a,0xfd,0x51,0x91,0xe5,0x90,0xed,0xeb,0x5f,0x7b,0xec,0x32,0x3b,0x05,0x06,0xc3,0x10,0x4b,0x89,}; static uint8_t ROUND73[] = {0xd0,0x81,0x08,0x31,0x58,0x05,0x4d,0x08,0x37,0x1e,0xc8,0x4f,0x4d,0x3a,0xa5,0xaa,0x76,0x17,0x34,0xac,0x60,0x91,0xa3,0x03,0x30,0xa8,0x61,0xfd,0xa0,0x56,0xf8,0x35,0xc7,0x50,0xbf,0x4f,0x79,0x81,0xaf,0x16,0x93,0xff,0x28,0x54,0x53,0x66,0xbd,0x05,0xce,0xc4,0x7b,0xcc,0xd7,0x7a,0x7d,0x23,0x7b,0xef,0xb0,0x13,0x5c,0x53,0x41,0x38,}; static uint8_t ROUND74[] = {0x6b,0xa8,0xb5,0x27,0x80,0xb8,0xa0,0x7a,0x2a,0x20,0x15,0xdd,0x8f,0x0c,0x5e,0x74,0x37,0xb8,0xe0,0x24,0xc4,0xee,0x42,0x8f,0x7b,0xa9,0x1d,0xfe,0xa1,0x18,0xcb,0x72,0xa9,0x39,0x87,0x25,0x50,0x98,0x33,0x17,0x13,0x2b,0x84,0x1b,0x7c,0xbc,0x29,0xa2,0x2b,0x8f,0x1c,0xfe,0xa0,0xc5,0x52,0x03,0xca,0xfc,0x69,0xb5,0x5e,0xd6,0x24,0x4a,}; static uint8_t ROUND75[] = {0x31,0x26,0x92,0xb0,0xa5,0x1f,0x00,0x2b,0x7f,0x06,0xd0,0x5b,0x39,0xd1,0x5a,0x56,0x37,0xdb,0xdd,0xd2,0xf4,0xf1,0xa7,0x3e,0x6c,0x88,0xa4,0xc8,0x41,0xcd,0xba,0x5c,0xd8,0xe6,0x9c,0x09,0x39,0xab,0x39,0xbb,0x1a,0x9c,0x54,0xfa,0x35,0x40,0x21,0x43,0xc9,0x7e,0xdb,0x97,0x04,0xa0,0xe9,0xe1,0xa9,0x87,0x01,0x71,0x0f,0x6a,0x5d,0xad,}; static uint8_t ROUND76[] = {0xaa,0xee,0x96,0x0d,0xe2,0x01,0xa8,0xdc,0xcc,0xff,0x95,0xb8,0x34,0xfc,0xcf,0x0d,0xaf,0xc0,0x3f,0xe6,0xcf,0xfc,0x04,0x29,0x16,0x2b,0xf4,0xaf,0xf0,0x11,0x65,0xab,0x07,0xa0,0xc9,0x43,0x5e,0x9c,0xb4,0x12,0x12,0x1b,0x7b,0xa0,0x10,0x65,0x7c,0xcc,0x31,0x52,0x11,0x86,0x02,0xb6,0x65,0x07,0x21,0x36,0x31,0x7d,0x92,0xfd,0x42,0x62,}; static uint8_t ROUND77[] = {0x21,0xfd,0xff,0x55,0x2e,0x08,0xc8,0x6c,0x07,0xf0,0x80,0xce,0xfa,0xca,0xaa,0xf3,0x18,0x46,0xeb,0x89,0x3b,0xfe,0x2e,0x4f,0x88,0xc3,0xc3,0xcd,0x8c,0xbf,0x59,0x2a,0x84,0x50,0x09,0x42,0x69,0x5a,0x5e,0x5a,0xe9,0x71,0xab,0x34,0x3c,0xe2,0x69,0x5d,0xd1,0xba,0xeb,0x1f,0x94,0xdd,0x4b,0x53,0xd6,0x78,0xe1,0x42,0x65,0xe4,0x21,0xae,}; static uint8_t ROUND78[] = {0xca,0x8f,0x1a,0x5b,0x21,0x72,0xf6,0xad,0xb4,0x74,0xda,0x53,0xb3,0x5e,0x3f,0x73,0xff,0xd8,0x82,0x63,0xd3,0xee,0xcd,0xe7,0x2e,0x48,0xb1,0x6e,0x1a,0x06,0x58,0x01,0x5b,0x55,0x5e,0xe3,0x19,0x00,0x5a,0x1d,0x82,0x80,0x2e,0x91,0x43,0x1e,0xe7,0x77,0x61,0x0f,0x9b,0x10,0x28,0xd8,0x19,0x92,0x1e,0x10,0x44,0xad,0x42,0x6b,0x02,0x70,}; static uint8_t ROUND79[] = {0xce,0x5a,0xb2,0x5e,0xff,0x9c,0x1d,0xdc,0x56,0x9a,0x1e,0xaa,0xa6,0x6b,0x68,0x91,0x09,0xee,0x26,0x9d,0xb7,0x06,0x6e,0x0b,0x02,0xd3,0x9b,0x35,0x64,0xfd,0x14,0xca,0x62,0x49,0x98,0x7b,0x77,0x91,0xe2,0x03,0xd3,0xd7,0xc2,0xeb,0xf1,0x85,0x58,0xd2,0xf2,0x3f,0x94,0xc0,0x3d,0xd1,0xd0,0x3a,0xa6,0x38,0x49,0xe4,0xd2,0x88,0x9a,0x76,}; static uint8_t ROUND80[] = {0xa6,0xf8,0xb0,0x56,0x10,0x00,0xdd,0x4a,0xe8,0xb8,0x28,0xc5,0xf6,0x76,0xe8,0xc1,0xa6,0x47,0x4c,0x4a,0x04,0x2a,0x64,0x5f,0x18,0x15,0xbd,0x52,0xe9,0xff,0x53,0xc9,0x7d,0xc3,0x6d,0x5d,0x89,0x97,0xf8,0xce,0x33,0x21,0x85,0xfe,0xea,0xd7,0x62,0x67,0xf5,0xb2,0xe6,0x3f,0x59,0x7f,0xb3,0x34,0x5c,0xa0,0x04,0x6e,0x58,0xfc,0x0f,0x24,}; static uint8_t ROUND81[] = {0xfe,0xc8,0x67,0x94,0xba,0xd4,0x10,0x6c,0x5a,0xd1,0xc1,0xa2,0xd9,0xa1,0xb7,0xaa,0xe4,0x80,0x39,0x6e,0xc2,0x31,0xeb,0x5c,0xac,0x21,0xc4,0x07,0x7d,0x17,0xa0,0xb6,0x52,0xda,0x00,0x37,0x36,0x33,0x99,0xa5,0xa1,0xda,0xba,0xba,0x4a,0x40,0xe4,0xc5,0x4b,0x91,0x24,0x16,0x75,0x80,0xde,0xe9,0x10,0x8c,0x4d,0xbb,0x24,0xc5,0x75,0x12,}; static uint8_t ROUND82[] = {0x59,0x4f,0x5d,0xd3,0xf4,0xc8,0x7b,0xdc,0x0d,0x81,0x30,0x93,0x86,0xe9,0x16,0x3a,0x97,0x18,0xe3,0x4c,0x7b,0x0d,0xcb,0x46,0x13,0xf8,0x48,0x7a,0xa7,0x86,0xf9,0xd2,0x11,0xcf,0xb6,0x1b,0xb2,0x47,0xfa,0x9f,0x5e,0xce,0xf0,0x42,0xe7,0x10,0xf1,0x92,0x85,0x0f,0x55,0x71,0x80,0x72,0x94,0xbf,0xd8,0xa5,0x43,0x97,0x85,0x0e,0x57,0x73,}; static uint8_t ROUND83[] = {0xd8,0x1a,0xd8,0x66,0xf2,0x5e,0xf6,0xa0,0xa6,0x43,0x1d,0x26,0x71,0x14,0xda,0x56,0x45,0x13,0xe5,0xeb,0xdc,0xf4,0x8d,0xb7,0xe9,0x5d,0xb8,0xcf,0x32,0xa8,0x9f,0x0a,0xb1,0x07,0x87,0x4d,0x79,0x60,0x35,0xdb,0x97,0x42,0x0f,0xfc,0xf1,0xdb,0x5f,0x04,0xdc,0x1a,0x52,0xdd,0xbb,0xb9,0x60,0xfc,0x63,0xb7,0xf3,0xf8,0x35,0xcc,0x8b,0xe6,}; static uint8_t ROUND84[] = {0x43,0x1d,0x53,0x7e,0x09,0x8e,0x99,0x49,0xf6,0xa6,0x81,0x08,0xd5,0x5d,0x20,0x95,0x2e,0x3b,0xfc,0xde,0xb7,0x27,0x3b,0xac,0x39,0x17,0xe3,0x77,0x90,0xa8,0x4f,0xa5,0xdb,0x04,0xc3,0x3a,0x79,0xc1,0x13,0xa0,0x6c,0xf3,0x33,0xe8,0x31,0xd7,0x70,0x2a,0x00,0x85,0x3a,0x93,0xfd,0x0a,0xa5,0x14,0x6d,0x93,0x4f,0x4f,0x71,0x24,0x2a,0x6a,}; static uint8_t ROUND85[] = {0x4e,0xd9,0x56,0x36,0xc6,0x88,0x5a,0xe4,0xe6,0x3d,0x04,0x2e,0x82,0xf4,0xda,0x83,0x0c,0x70,0x2d,0xbf,0x3b,0x97,0x46,0xd6,0x47,0x70,0xa6,0x4d,0xd6,0x66,0xb3,0x32,0x08,0x31,0x5f,0x3a,0x94,0x7c,0x4d,0xff,0x79,0x07,0x71,0xef,0x28,0x37,0x88,0xa9,0xc7,0x4d,0xa8,0x3e,0x22,0xb9,0x7f,0x75,0x02,0x86,0xa8,0x20,0xee,0x46,0x69,0x8c,}; static uint8_t ROUND86[] = {0xa9,0xbc,0xb6,0x0b,0x4d,0x77,0x24,0xcd,0xdd,0xdd,0xbc,0x23,0x2b,0x4a,0xc7,0x0b,0x94,0xd0,0xd7,0xe9,0xf0,0x72,0x4b,0x12,0x22,0xd9,0x18,0x93,0x0c,0xbb,0x9b,0xdb,0xb0,0x4b,0x3a,0xd4,0x3e,0x3c,0x8c,0xaf,0x3b,0xf8,0xb0,0x04,0xee,0x4a,0xec,0x6b,0xd5,0x27,0xff,0x8e,0xb6,0x18,0x9b,0x44,0x82,0x7f,0x7b,0xa7,0x05,0x7f,0x6a,0x90,}; static uint8_t ROUND87[] = {0xd6,0xd5,0xe4,0x4d,0x5b,0xb0,0x7f,0xc4,0x14,0x4a,0xb6,0xab,0x30,0x9f,0x04,0x89,0x68,0xf7,0x3f,0x79,0x92,0xbe,0xb3,0x26,0x04,0x7e,0x9e,0x2c,0xd7,0xaf,0x62,0x40,0xbc,0x8a,0xbf,0x46,0x70,0x3c,0x32,0xfd,0xb5,0x8f,0xb2,0xa8,0x67,0x25,0x94,0xa6,0x60,0xef,0x85,0x5b,0xe7,0x4f,0x24,0xce,0xc0,0x9d,0x4f,0xb0,0x02,0x19,0xde,0x82,}; static uint8_t ROUND88[] = {0xdf,0xda,0x9a,0xc0,0xc7,0x14,0x75,0x30,0xda,0x97,0x71,0x5c,0xcf,0x47,0x81,0x41,0x82,0x25,0x5f,0x2f,0x2c,0xf4,0x02,0x87,0xdb,0x97,0xa4,0xc6,0x3b,0x43,0xfc,0xd3,0x9e,0x6d,0x41,0xe5,0x60,0x92,0x14,0x92,0xba,0xdb,0x25,0x3a,0x7d,0xea,0x0a,0xba,0x86,0x3c,0x7c,0x33,0xb9,0x12,0xbb,0x59,0xd1,0xff,0x4d,0xe0,0x3a,0x4f,0x03,0xbb,}; static uint8_t ROUND89[] = {0x03,0x95,0xfa,0xaa,0xf2,0xe9,0x07,0xf2,0x77,0x79,0xd6,0xf1,0xcc,0x9c,0x9d,0xb6,0x8e,0xc3,0x90,0xa3,0x8f,0xbb,0x07,0x02,0xc6,0x47,0x5b,0x46,0xf7,0xa3,0x99,0x49,0x8d,0x46,0xfd,0x80,0x14,0xf8,0x34,0xb1,0x31,0xe1,0xe8,0x3a,0xbb,0xa0,0x35,0x9b,0x1f,0x16,0xd8,0xfc,0x0a,0x39,0x35,0x80,0x61,0x5d,0xef,0x2a,0xd0,0xca,0xba,0x73,}; static uint8_t ROUND90[] = {0x41,0xcb,0x98,0xf0,0x90,0x29,0xab,0xe8,0x5d,0x24,0xa0,0xf1,0x31,0xf1,0x16,0xc7,0xf6,0x9f,0x54,0xf7,0xe9,0x1c,0x25,0x06,0x42,0x60,0x65,0x12,0xbf,0x3d,0xa4,0xca,0x89,0xba,0x70,0xa4,0x71,0x4a,0x5f,0x66,0xd9,0xae,0x81,0xff,0x09,0x31,0x7d,0xad,0xaf,0xf1,0x2a,0x02,0x05,0x70,0x74,0xc9,0x70,0xf0,0xf0,0x2a,0x52,0xbf,0xaf,0xd2,}; static uint8_t ROUND91[] = {0x8e,0x8f,0x16,0x1d,0x48,0xe3,0x06,0xc5,0x53,0x3e,0xd6,0x14,0xb8,0xef,0x3a,0x19,0x79,0xdf,0x6d,0xb7,0xe1,0x3d,0x07,0x80,0xa7,0x3c,0x4a,0x39,0x80,0xdd,0xf0,0xa9,0x5f,0x93,0x94,0x1d,0x41,0x2c,0x93,0x68,0x3e,0x39,0x91,0x5a,0x66,0x0c,0x3f,0xbe,0xc0,0xdb,0xb1,0xbb,0x6b,0xee,0xa2,0xe2,0x09,0x9c,0xd9,0x68,0x01,0x15,0x35,0xc0,}; static uint8_t ROUND92[] = {0x78,0x95,0x93,0xf0,0xb8,0xfb,0x83,0xef,0x9b,0x3e,0xc5,0x0a,0xb8,0xf6,0xe1,0xe4,0x73,0x44,0xf7,0x63,0xd4,0xf7,0xce,0xab,0x56,0x00,0x98,0x9e,0x7b,0x6f,0xd5,0xfe,0xf6,0xee,0x5e,0x48,0x79,0x75,0xf6,0x44,0x74,0xaf,0x6c,0xd7,0x1a,0xe4,0xd9,0xec,0xce,0x8f,0x00,0x9e,0xde,0xa0,0x22,0x7c,0x7e,0xbe,0x73,0x08,0x0b,0x8f,0x96,0x1b,}; static uint8_t ROUND93[] = {0xf3,0x7e,0x14,0x49,0xe0,0xb3,0x13,0xd9,0x53,0x7a,0x61,0x77,0xf7,0xa3,0x11,0x58,0xd3,0x53,0xe5,0xb7,0x9c,0x78,0x1f,0xac,0xf0,0x25,0x26,0xec,0x94,0xe0,0xc6,0xcf,0xda,0x37,0x10,0x5b,0xac,0x67,0x09,0x8b,0x19,0x4e,0xa8,0x2e,0xfb,0x30,0x7c,0x29,0x29,0xa9,0xab,0x8a,0xca,0x0e,0x76,0xc5,0x3e,0x82,0x9e,0x3f,0x90,0x1c,0xd2,0x45,}; static uint8_t ROUND94[] = {0x2e,0x74,0xe7,0x45,0xca,0xaf,0x2d,0x44,0x9a,0xb3,0xb0,0x31,0xdd,0x21,0x4b,0x48,0x61,0x68,0x53,0xa5,0x12,0xcf,0x2e,0x95,0xc4,0x0c,0xb8,0xe7,0x59,0x4f,0xe5,0xe4,0x87,0x9a,0xc8,0xa2,0x6d,0x02,0xeb,0x35,0xb3,0xb9,0x6a,0x5c,0x9e,0x7d,0xca,0xe3,0xe1,0x5f,0xd0,0x50,0xa0,0xbc,0xc1,0xfb,0x3b,0x9c,0xb9,0xc4,0xdf,0x0f,0xad,0x3e,}; static uint8_t ROUND95[] = {0x6e,0xac,0x70,0x69,0xc2,0x60,0x82,0xe5,0x25,0x74,0xca,0x6a,0x58,0xab,0xb9,0xb1,0xb9,0xfa,0xf4,0x52,0xe8,0xcc,0xa9,0xf1,0xc7,0x02,0x36,0x79,0xce,0x19,0x2c,0xa5,0x54,0x89,0x2f,0x30,0xe3,0x81,0x04,0xd3,0x90,0x88,0xa2,0x4d,0xf3,0x56,0x12,0x44,0x4a,0x0f,0xc9,0x00,0x84,0xaf,0x75,0x35,0xfd,0x93,0x44,0xfa,0x51,0xdd,0xed,0x84,}; static uint8_t ROUND96[] = {0xad,0xa6,0xca,0xf3,0x0c,0x4f,0x6e,0x36,0x44,0xd9,0x52,0x36,0x6e,0x01,0x51,0x9a,0xf6,0x77,0x1b,0x40,0x6e,0x2c,0x44,0x75,0x52,0xf0,0xc5,0x97,0xb8,0xdd,0x10,0xe9,0xe9,0xb4,0xe6,0x99,0xc9,0xa8,0x35,0xde,0x03,0xf4,0x22,0xbe,0x89,0x80,0x53,0x8d,0x97,0x86,0x17,0x2d,0xfd,0x2f,0xe5,0x11,0xdb,0x27,0x2a,0x15,0x43,0xd5,0xaa,0x35,}; static uint8_t ROUND97[] = {0x4d,0x4b,0x00,0x86,0xb2,0xcb,0x05,0xd7,0x13,0xf2,0x80,0x5c,0xaa,0x7e,0x66,0x05,0xc8,0xf7,0xdb,0xbb,0x2e,0x0f,0x92,0xaa,0x15,0x9a,0xeb,0xdc,0xd6,0x30,0x60,0x30,0x5f,0x47,0xb7,0x48,0xf1,0xbc,0xa6,0xe0,0xb6,0xe1,0x1c,0xf8,0xf9,0x69,0x7f,0xcc,0xcb,0x65,0x84,0xb8,0x78,0xc4,0xb5,0x4a,0x69,0x92,0x90,0x72,0x8a,0x40,0xaa,0x1b,}; static uint8_t ROUND98[] = {0x97,0x42,0x0b,0x8a,0x0a,0xd1,0x02,0xae,0xb9,0x21,0x39,0xda,0x2c,0x05,0x2d,0x27,0x48,0xdd,0x7d,0x2d,0xbb,0x93,0xa9,0xea,0x79,0xdc,0x15,0xb5,0x20,0xd0,0xca,0x7c,0xab,0x8c,0xb7,0xa0,0x0f,0x5b,0x5a,0xeb,0xcb,0x49,0xd7,0xe7,0xf5,0x2a,0x27,0x18,0x09,0x35,0xce,0x61,0x7a,0xee,0xcd,0xec,0xba,0x04,0x06,0x4c,0x66,0x8e,0xdd,0x37,}; static uint8_t ROUND99[] = {0x4a,0xa7,0xda,0xd7,0x4e,0xb5,0x1d,0x09,0xa6,0xae,0x77,0x35,0xc4,0xb7,0x95,0xb0,0x78,0xf5,0x1c,0x31,0x4f,0x14,0xf4,0x2a,0x0d,0x63,0x07,0x1e,0x13,0xbd,0xc5,0xfd,0x9f,0x51,0x61,0x2e,0x77,0xb3,0x6d,0x44,0x56,0x75,0x02,0xa3,0xb5,0xeb,0x66,0xc6,0x09,0xec,0x01,0x7e,0x51,0xd8,0xdf,0x93,0xe5,0x8d,0x1a,0x44,0xf3,0xc1,0xe3,0x75,}; TEST (TinyCrypT_SHA512, monte_0) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (0 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND0, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_1) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (1 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND1, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_2) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (2 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND2, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_3) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (3 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND3, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_4) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (4 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND4, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_5) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (5 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND5, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_6) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (6 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND6, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_7) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (7 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND7, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_8) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (8 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND8, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_9) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (9 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND9, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_10) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (10 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND10, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_11) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (11 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND11, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_12) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (12 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND12, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_13) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (13 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND13, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_14) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (14 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND14, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_15) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (15 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND15, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_16) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (16 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND16, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_17) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (17 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND17, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_18) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (18 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND18, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_19) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (19 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND19, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_20) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (20 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND20, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_21) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (21 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND21, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_22) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (22 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND22, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_23) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (23 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND23, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_24) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (24 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND24, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_25) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (25 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND25, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_26) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (26 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND26, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_27) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (27 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND27, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_28) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (28 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND28, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_29) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (29 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND29, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_30) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (30 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND30, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_31) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (31 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND31, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_32) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (32 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND32, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_33) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (33 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND33, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_34) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (34 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND34, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_35) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (35 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND35, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_36) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (36 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND36, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_37) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (37 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND37, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_38) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (38 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND38, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_39) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (39 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND39, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_40) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (40 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND40, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_41) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (41 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND41, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_42) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (42 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND42, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_43) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (43 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND43, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_44) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (44 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND44, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_45) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (45 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND45, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_46) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (46 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND46, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_47) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (47 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND47, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_48) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (48 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND48, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_49) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (49 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND49, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_50) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (50 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND50, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_51) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (51 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND51, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_52) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (52 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND52, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_53) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (53 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND53, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_54) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (54 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND54, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_55) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (55 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND55, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_56) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (56 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND56, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_57) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (57 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND57, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_58) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (58 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND58, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_59) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (59 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND59, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_60) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (60 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND60, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_61) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (61 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND61, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_62) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (62 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND62, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_63) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (63 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND63, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_64) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (64 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND64, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_65) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (65 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND65, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_66) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (66 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND66, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_67) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (67 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND67, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_68) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (68 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND68, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_69) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (69 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND69, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_70) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (70 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND70, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_71) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (71 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND71, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_72) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (72 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND72, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_73) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (73 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND73, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_74) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (74 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND74, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_75) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (75 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND75, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_76) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (76 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND76, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_77) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (77 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND77, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_78) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (78 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND78, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_79) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (79 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND79, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_80) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (80 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND80, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_81) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (81 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND81, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_82) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (82 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND82, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_83) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (83 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND83, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_84) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (84 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND84, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_85) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (85 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND85, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_86) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (86 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND86, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_87) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (87 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND87, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_88) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (88 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND88, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_89) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (89 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND89, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_90) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (90 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND90, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_91) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (91 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND91, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_92) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (92 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND92, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_93) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (93 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND93, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_94) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (94 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND94, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_95) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (95 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND95, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_96) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (96 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND96, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_97) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (97 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND97, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_98) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (98 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND98, digest, 64), 0); } TEST (TinyCrypT_SHA512, monte_99) { uint8_t msg[192]; uint8_t digest[64]; uint8_t *a = msg; uint8_t *b = msg + 64; uint8_t *c = msg + 128; for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = SEED[j]; for (uint64_t i = 0; i < (99 + 1) * 1000; ++i) { if (i % 1000 == 0 && i != 0) { for (uint64_t j = 0; j < 64; ++j) a[j] = b[j] = c[j] = digest[j]; } tct_sha512(msg, sizeof(msg), digest); for (uint64_t j = 0; j < 64; ++j) { a[j] = b[j]; b[j] = c[j]; c[j] = digest[j]; } } EXPECT_EQ(memcmp(ROUND99, digest, 64), 0); }