diff --git a/hyena/Implementations/crypto_aead/hyenav1/rhys/hyena.c b/hyena/Implementations/crypto_aead/hyenav1/rhys/hyena.c index db5ba2b..3af79fa 100644 --- a/hyena/Implementations/crypto_aead/hyenav1/rhys/hyena.c +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys/hyena.c @@ -52,23 +52,6 @@ static void hyena_double_delta(unsigned char D[8]) } /** - * \brief Triples a delta value in the F(2^64) field. - * - * \param D The delta value to be tripled. - * - * D' = D ^ (D << 1) if the top-most bit is 0, or D' = D ^ (D << 1) ^ 0x1B - * otherwise. - */ -static void hyena_triple_delta(unsigned char D[8]) -{ - unsigned index; - unsigned char mask = (unsigned char)(((signed char)(D[0])) >> 7); - for (index = 0; index < 7; ++index) - D[index] ^= (D[index] << 1) | (D[index + 1] >> 7); - D[7] ^= (D[7] << 1) ^ (mask & 0x1B); -} - -/** * \brief Process the associated data for HYENA. * * \param ks Key schedule for the GIFT-128 cipher. @@ -83,26 +66,27 @@ static void hyena_process_ad unsigned long long adlen) { unsigned char feedback[16]; + hyena_double_delta(D); while (adlen > 16) { - hyena_double_delta(D); memcpy(feedback, ad, 16); lw_xor_block(feedback + 8, Y + 8, 8); lw_xor_block(feedback + 8, D, 8); lw_xor_block(Y, feedback, 16); gift128n_encrypt(ks, Y, Y); + hyena_double_delta(D); ad += 16; adlen -= 16; } if (adlen == 16) { - hyena_triple_delta(D); + hyena_double_delta(D); memcpy(feedback, ad, 16); lw_xor_block(feedback + 8, Y + 8, 8); lw_xor_block(feedback + 8, D, 8); lw_xor_block(Y, feedback, 16); } else { unsigned temp = (unsigned)adlen; - hyena_triple_delta(D); - hyena_triple_delta(D); + hyena_double_delta(D); + hyena_double_delta(D); memcpy(feedback, ad, temp); feedback[temp] = 0x01; memset(feedback + temp + 1, 0, 15 - temp); @@ -132,7 +116,8 @@ int hyena_aead_encrypt *clen = mlen + HYENA_TAG_SIZE; /* Set up the key schedule and use it to encrypt the nonce */ - gift128n_init(&ks, k); + if (!gift128n_init(&ks, k, HYENA_KEY_SIZE)) + return -1; Y[0] = 0; if (adlen == 0) Y[0] |= 0x01; @@ -164,7 +149,8 @@ int hyena_aead_encrypt } gift128n_encrypt(&ks, Y, Y); if (mlen == 16) { - hyena_triple_delta(D); + hyena_double_delta(D); + hyena_double_delta(D); memcpy(feedback, m, 16); lw_xor_block(feedback + 8, Y + 8, 8); lw_xor_block(feedback + 8, D, 8); @@ -173,8 +159,9 @@ int hyena_aead_encrypt c += 16; } else { unsigned temp = (unsigned)mlen; - hyena_triple_delta(D); - hyena_triple_delta(D); + hyena_double_delta(D); + hyena_double_delta(D); + hyena_double_delta(D); memcpy(feedback, m, temp); feedback[temp] = 0x01; memset(feedback + temp + 1, 0, 15 - temp); @@ -220,7 +207,8 @@ int hyena_aead_decrypt *mlen = clen - HYENA_TAG_SIZE; /* Set up the key schedule and use it to encrypt the nonce */ - gift128n_init(&ks, k); + if (!gift128n_init(&ks, k, HYENA_KEY_SIZE)) + return -1; Y[0] = 0; if (adlen == 0) Y[0] |= 0x01; @@ -254,7 +242,8 @@ int hyena_aead_decrypt } gift128n_encrypt(&ks, Y, Y); if (clen == 16) { - hyena_triple_delta(D); + hyena_double_delta(D); + hyena_double_delta(D); memcpy(feedback + 8, c + 8, 8); lw_xor_block_2_src(m, c, Y, 16); memcpy(feedback, m, 8); @@ -263,8 +252,9 @@ int hyena_aead_decrypt c += 16; } else { unsigned temp = (unsigned)clen; - hyena_triple_delta(D); - hyena_triple_delta(D); + hyena_double_delta(D); + hyena_double_delta(D); + hyena_double_delta(D); if (temp > 8) { memcpy(feedback + 8, c + 8, temp - 8); lw_xor_block_2_src(m, c, Y, temp); diff --git a/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-gift128.c b/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-gift128.c index c6ac5ec..681dbc8 100644 --- a/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-gift128.c +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-gift128.c @@ -23,12 +23,8 @@ #include "internal-gift128.h" #include "internal-util.h" -#if !GIFT128_VARIANT_ASM - -#if GIFT128_VARIANT != GIFT128_VARIANT_TINY - /* Round constants for GIFT-128 in the fixsliced representation */ -static uint32_t const GIFT128_RC_fixsliced[40] = { +static uint32_t const GIFT128_RC[40] = { 0x10000008, 0x80018000, 0x54000002, 0x01010181, 0x8000001f, 0x10888880, 0x6001e000, 0x51500002, 0x03030180, 0x8000002f, 0x10088880, 0x60016000, 0x41500002, 0x03030080, 0x80000027, 0x10008880, 0x4001e000, 0x11500002, @@ -38,246 +34,6 @@ static uint32_t const GIFT128_RC_fixsliced[40] = { 0xc001a000, 0x14500002, 0x01020181, 0x8000001a }; -#endif - -#if GIFT128_VARIANT != GIFT128_VARIANT_FULL - -/* Round constants for GIFT-128 in the bitsliced representation */ -static uint8_t const GIFT128_RC[40] = { - 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3E, 0x3D, 0x3B, - 0x37, 0x2F, 0x1E, 0x3C, 0x39, 0x33, 0x27, 0x0E, - 0x1D, 0x3A, 0x35, 0x2B, 0x16, 0x2C, 0x18, 0x30, - 0x21, 0x02, 0x05, 0x0B, 0x17, 0x2E, 0x1C, 0x38, - 0x31, 0x23, 0x06, 0x0D, 0x1B, 0x36, 0x2D, 0x1A -}; - -#endif - -/* http://programming.sirrida.de/perm_fn.html#bit_permute_step */ -#define bit_permute_step(_y, mask, shift) \ - do { \ - uint32_t y = (_y); \ - uint32_t t = ((y >> (shift)) ^ y) & (mask); \ - (_y) = (y ^ t) ^ (t << (shift)); \ - } while (0) - -/* - * The permutation below was generated by the online permuation generator at - * "http://programming.sirrida.de/calcperm.php". - * - * All of the permutuations are essentially the same, except that each is - * rotated by 8 bits with respect to the next: - * - * P0: 0 24 16 8 1 25 17 9 2 26 18 10 3 27 19 11 4 28 20 12 5 29 21 13 6 30 22 14 7 31 23 15 - * P1: 8 0 24 16 9 1 25 17 10 2 26 18 11 3 27 19 12 4 28 20 13 5 29 21 14 6 30 22 15 7 31 23 - * P2: 16 8 0 24 17 9 1 25 18 10 2 26 19 11 3 27 20 12 4 28 21 13 5 29 22 14 6 30 23 15 7 31 - * P3: 24 16 8 0 25 17 9 1 26 18 10 2 27 19 11 3 28 20 12 4 29 21 13 5 30 22 14 6 31 23 15 7 - * - * The most efficient permutation from the online generator was P3, so we - * perform it as the core of the others, and then perform a final rotation. - * - * It is possible to do slightly better than "P3 then rotate" on desktop and - * server architectures for the other permutations. But the advantage isn't - * as evident on embedded platforms so we keep things simple. - */ -#define PERM3_INNER(x) \ - do { \ - bit_permute_step(x, 0x0a0a0a0a, 3); \ - bit_permute_step(x, 0x00cc00cc, 6); \ - bit_permute_step(x, 0x0000f0f0, 12); \ - bit_permute_step(x, 0x000000ff, 24); \ - } while (0) -#define PERM0(x) \ - do { \ - uint32_t _x = (x); \ - PERM3_INNER(_x); \ - (x) = leftRotate8(_x); \ - } while (0) -#define PERM1(x) \ - do { \ - uint32_t _x = (x); \ - PERM3_INNER(_x); \ - (x) = leftRotate16(_x); \ - } while (0) -#define PERM2(x) \ - do { \ - uint32_t _x = (x); \ - PERM3_INNER(_x); \ - (x) = leftRotate24(_x); \ - } while (0) -#define PERM3(x) \ - do { \ - uint32_t _x = (x); \ - PERM3_INNER(_x); \ - (x) = _x; \ - } while (0) - -#define INV_PERM3_INNER(x) \ - do { \ - bit_permute_step(x, 0x00550055, 9); \ - bit_permute_step(x, 0x00003333, 18); \ - bit_permute_step(x, 0x000f000f, 12); \ - bit_permute_step(x, 0x000000ff, 24); \ - } while (0) -#define INV_PERM0(x) \ - do { \ - uint32_t _x = rightRotate8(x); \ - INV_PERM3_INNER(_x); \ - (x) = _x; \ - } while (0) -#define INV_PERM1(x) \ - do { \ - uint32_t _x = rightRotate16(x); \ - INV_PERM3_INNER(_x); \ - (x) = _x; \ - } while (0) -#define INV_PERM2(x) \ - do { \ - uint32_t _x = rightRotate24(x); \ - INV_PERM3_INNER(_x); \ - (x) = _x; \ - } while (0) -#define INV_PERM3(x) \ - do { \ - uint32_t _x = (x); \ - INV_PERM3_INNER(_x); \ - (x) = _x; \ - } while (0) - -/** - * \brief Converts the GIFT-128 nibble-based representation into word-based. - * - * \param output Output buffer to write the word-based version to. - * \param input Input buffer to read the nibble-based version from. - * - * The \a input and \a output buffers can be the same buffer. - */ -static void gift128n_to_words - (unsigned char *output, const unsigned char *input) -{ - uint32_t s0, s1, s2, s3; - - /* Load the input buffer into 32-bit words. We use the nibble order - * from the HYENA submission to NIST which is byte-reversed with respect - * to the nibble order of the original GIFT-128 paper. Nibble zero is in - * the first byte instead of the last, which means little-endian order. */ - s0 = le_load_word32(input + 12); - s1 = le_load_word32(input + 8); - s2 = le_load_word32(input + 4); - s3 = le_load_word32(input); - - /* Rearrange the bits so that bits 0..3 of each nibble are - * scattered to bytes 0..3 of each word. The permutation is: - * - * 0 8 16 24 1 9 17 25 2 10 18 26 3 11 19 27 4 12 20 28 5 13 21 29 6 14 22 30 7 15 23 31 - * - * Generated with "http://programming.sirrida.de/calcperm.php". - */ - #define PERM_WORDS(_x) \ - do { \ - uint32_t x = (_x); \ - bit_permute_step(x, 0x0a0a0a0a, 3); \ - bit_permute_step(x, 0x00cc00cc, 6); \ - bit_permute_step(x, 0x0000f0f0, 12); \ - bit_permute_step(x, 0x0000ff00, 8); \ - (_x) = x; \ - } while (0) - PERM_WORDS(s0); - PERM_WORDS(s1); - PERM_WORDS(s2); - PERM_WORDS(s3); - - /* Rearrange the bytes and write them to the output buffer */ - output[0] = (uint8_t)s0; - output[1] = (uint8_t)s1; - output[2] = (uint8_t)s2; - output[3] = (uint8_t)s3; - output[4] = (uint8_t)(s0 >> 8); - output[5] = (uint8_t)(s1 >> 8); - output[6] = (uint8_t)(s2 >> 8); - output[7] = (uint8_t)(s3 >> 8); - output[8] = (uint8_t)(s0 >> 16); - output[9] = (uint8_t)(s1 >> 16); - output[10] = (uint8_t)(s2 >> 16); - output[11] = (uint8_t)(s3 >> 16); - output[12] = (uint8_t)(s0 >> 24); - output[13] = (uint8_t)(s1 >> 24); - output[14] = (uint8_t)(s2 >> 24); - output[15] = (uint8_t)(s3 >> 24); -} - -/** - * \brief Converts the GIFT-128 word-based representation into nibble-based. - * - * \param output Output buffer to write the nibble-based version to. - * \param input Input buffer to read the word-based version from. - */ -static void gift128n_to_nibbles - (unsigned char *output, const unsigned char *input) -{ - uint32_t s0, s1, s2, s3; - - /* Load the input bytes and rearrange them so that s0 contains the - * most significant nibbles and s3 contains the least significant */ - s0 = (((uint32_t)(input[12])) << 24) | - (((uint32_t)(input[8])) << 16) | - (((uint32_t)(input[4])) << 8) | - ((uint32_t)(input[0])); - s1 = (((uint32_t)(input[13])) << 24) | - (((uint32_t)(input[9])) << 16) | - (((uint32_t)(input[5])) << 8) | - ((uint32_t)(input[1])); - s2 = (((uint32_t)(input[14])) << 24) | - (((uint32_t)(input[10])) << 16) | - (((uint32_t)(input[6])) << 8) | - ((uint32_t)(input[2])); - s3 = (((uint32_t)(input[15])) << 24) | - (((uint32_t)(input[11])) << 16) | - (((uint32_t)(input[7])) << 8) | - ((uint32_t)(input[3])); - - /* Apply the inverse of PERM_WORDS() from the function above */ - #define INV_PERM_WORDS(_x) \ - do { \ - uint32_t x = (_x); \ - bit_permute_step(x, 0x00aa00aa, 7); \ - bit_permute_step(x, 0x0000cccc, 14); \ - bit_permute_step(x, 0x00f000f0, 4); \ - bit_permute_step(x, 0x0000ff00, 8); \ - (_x) = x; \ - } while (0) - INV_PERM_WORDS(s0); - INV_PERM_WORDS(s1); - INV_PERM_WORDS(s2); - INV_PERM_WORDS(s3); - - /* Store the result into the output buffer as 32-bit words */ - le_store_word32(output + 12, s0); - le_store_word32(output + 8, s1); - le_store_word32(output + 4, s2); - le_store_word32(output, s3); -} - -void gift128n_encrypt - (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input) -{ - gift128n_to_words(output, input); - gift128b_encrypt(ks, output, output); - gift128n_to_nibbles(output, output); -} - -void gift128n_decrypt - (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input) -{ - gift128n_to_words(output, input); - gift128b_decrypt(ks, output, output); - gift128n_to_nibbles(output, output); -} - -#if GIFT128_VARIANT != GIFT128_VARIANT_TINY - /** * \brief Swaps bits within two words. * @@ -446,27 +202,21 @@ static void gift128b_compute_round_keys /* Keys 8, 9, 18, and 19 do not need any adjustment */ } -#if GIFT128_VARIANT == GIFT128_VARIANT_FULL /* Derive the fixsliced keys for the remaining rounds 11..40 */ for (index = 20; index < 80; index += 10) { gift128b_derive_keys(ks->k + index, ks->k + index - 20); } -#endif } -void gift128b_init(gift128b_key_schedule_t *ks, const unsigned char *key) +int gift128b_init + (gift128b_key_schedule_t *ks, const unsigned char *key, size_t key_len) { + if (!ks || !key || key_len != 16) + return 0; gift128b_compute_round_keys (ks, be_load_word32(key), be_load_word32(key + 4), be_load_word32(key + 8), be_load_word32(key + 12)); -} - -void gift128n_init(gift128n_key_schedule_t *ks, const unsigned char *key) -{ - /* Use the little-endian key byte order from the HYENA submission */ - gift128b_compute_round_keys - (ks, le_load_word32(key + 12), le_load_word32(key + 8), - le_load_word32(key + 4), le_load_word32(key)); + return 1; } /** @@ -771,37 +521,11 @@ void gift128n_init(gift128n_key_schedule_t *ks, const unsigned char *key) gift128b_inv_sbox(s3, s1, s2, s0); \ } while (0) -#else /* GIFT128_VARIANT_TINY */ - -void gift128b_init(gift128b_key_schedule_t *ks, const unsigned char *key) -{ - /* Mirror the fixslicing word order of 3, 1, 2, 0 */ - ks->k[0] = be_load_word32(key + 12); - ks->k[1] = be_load_word32(key + 4); - ks->k[2] = be_load_word32(key + 8); - ks->k[3] = be_load_word32(key); -} - -void gift128n_init(gift128n_key_schedule_t *ks, const unsigned char *key) -{ - /* Use the little-endian key byte order from the HYENA submission - * and mirror the fixslicing word order of 3, 1, 2, 0 */ - ks->k[0] = le_load_word32(key); - ks->k[1] = le_load_word32(key + 8); - ks->k[2] = le_load_word32(key + 4); - ks->k[3] = le_load_word32(key + 12); -} - -#endif /* GIFT128_VARIANT_TINY */ - -#if GIFT128_VARIANT == GIFT128_VARIANT_SMALL - void gift128b_encrypt (const gift128b_key_schedule_t *ks, unsigned char *output, const unsigned char *input) { uint32_t s0, s1, s2, s3; - uint32_t k[20]; /* Copy the plaintext into the state buffer and convert from big endian */ s0 = be_load_word32(input); @@ -810,20 +534,14 @@ void gift128b_encrypt s3 = be_load_word32(input + 12); /* Perform all 40 rounds five at a time using the fixsliced method */ - gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); - gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); - gift128b_derive_keys(k, ks->k); - gift128b_derive_keys(k + 10, ks->k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 10); - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 15); - gift128b_derive_keys(k, k); - gift128b_derive_keys(k + 10, k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 20); - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 25); - gift128b_derive_keys(k, k); - gift128b_derive_keys(k + 10, k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 30); - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 35); + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC); + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC + 5); + gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC + 10); + gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC + 15); + gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC + 20); + gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC + 25); + gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC + 30); + gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC + 35); /* Pack the state into the ciphertext buffer in big endian */ be_store_word32(output, s0); @@ -837,7 +555,6 @@ void gift128b_encrypt_preloaded const uint32_t input[4]) { uint32_t s0, s1, s2, s3; - uint32_t k[20]; /* Copy the plaintext into local variables */ s0 = input[0]; @@ -846,20 +563,14 @@ void gift128b_encrypt_preloaded s3 = input[3]; /* Perform all 40 rounds five at a time using the fixsliced method */ - gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); - gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); - gift128b_derive_keys(k, ks->k); - gift128b_derive_keys(k + 10, ks->k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 10); - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 15); - gift128b_derive_keys(k, k); - gift128b_derive_keys(k + 10, k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 20); - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 25); - gift128b_derive_keys(k, k); - gift128b_derive_keys(k + 10, k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 30); - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 35); + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC); + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC + 5); + gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC + 10); + gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC + 15); + gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC + 20); + gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC + 25); + gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC + 30); + gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC + 35); /* Pack the state into the ciphertext buffer */ output[0] = s0; @@ -868,55 +579,7 @@ void gift128b_encrypt_preloaded output[3] = s3; } -void gift128t_encrypt - (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input, uint32_t tweak) -{ - uint32_t s0, s1, s2, s3; - uint32_t k[20]; - - /* Copy the plaintext into the state buffer and convert from nibbles */ - gift128n_to_words(output, input); - s0 = be_load_word32(output); - s1 = be_load_word32(output + 4); - s2 = be_load_word32(output + 8); - s3 = be_load_word32(output + 12); - - /* Perform all 40 rounds five at a time using the fixsliced method. - * Every 5 rounds except the last we add the tweak value to the state */ - gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); - s0 ^= tweak; - gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); - s0 ^= tweak; - gift128b_derive_keys(k, ks->k); - gift128b_derive_keys(k + 10, ks->k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 10); - s0 ^= tweak; - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 15); - s0 ^= tweak; - gift128b_derive_keys(k, k); - gift128b_derive_keys(k + 10, k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 20); - s0 ^= tweak; - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 25); - s0 ^= tweak; - gift128b_derive_keys(k, k); - gift128b_derive_keys(k + 10, k + 10); - gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 30); - s0 ^= tweak; - gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 35); - - /* Pack the state into the ciphertext buffer in nibble form */ - be_store_word32(output, s0); - be_store_word32(output + 4, s1); - be_store_word32(output + 8, s2); - be_store_word32(output + 12, s3); - gift128n_to_nibbles(output, output); -} - -#elif GIFT128_VARIANT == GIFT128_VARIANT_FULL - -void gift128b_encrypt +void gift128b_decrypt (const gift128b_key_schedule_t *ks, unsigned char *output, const unsigned char *input) { @@ -929,14 +592,14 @@ void gift128b_encrypt s3 = be_load_word32(input + 12); /* Perform all 40 rounds five at a time using the fixsliced method */ - gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); - gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); - gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); - gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); - gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); - gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); - gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); - gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); + gift128b_decrypt_5_rounds(ks->k + 70, GIFT128_RC + 35); + gift128b_decrypt_5_rounds(ks->k + 60, GIFT128_RC + 30); + gift128b_decrypt_5_rounds(ks->k + 50, GIFT128_RC + 25); + gift128b_decrypt_5_rounds(ks->k + 40, GIFT128_RC + 20); + gift128b_decrypt_5_rounds(ks->k + 30, GIFT128_RC + 15); + gift128b_decrypt_5_rounds(ks->k + 20, GIFT128_RC + 10); + gift128b_decrypt_5_rounds(ks->k + 10, GIFT128_RC + 5); + gift128b_decrypt_5_rounds(ks->k, GIFT128_RC); /* Pack the state into the ciphertext buffer in big endian */ be_store_word32(output, s0); @@ -945,308 +608,173 @@ void gift128b_encrypt be_store_word32(output + 12, s3); } -void gift128b_encrypt_preloaded - (const gift128b_key_schedule_t *ks, uint32_t output[4], - const uint32_t input[4]) +int gift128n_init + (gift128n_key_schedule_t *ks, const unsigned char *key, size_t key_len) { - uint32_t s0, s1, s2, s3; - - /* Copy the plaintext into local variables */ - s0 = input[0]; - s1 = input[1]; - s2 = input[2]; - s3 = input[3]; - - /* Perform all 40 rounds five at a time using the fixsliced method */ - gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); - gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); - gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); - gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); - gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); - gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); - gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); - gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); - - /* Pack the state into the ciphertext buffer */ - output[0] = s0; - output[1] = s1; - output[2] = s2; - output[3] = s3; -} - -void gift128t_encrypt - (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input, uint32_t tweak) -{ - uint32_t s0, s1, s2, s3; - - /* Copy the plaintext into the state buffer and convert from nibbles */ - gift128n_to_words(output, input); - s0 = be_load_word32(output); - s1 = be_load_word32(output + 4); - s2 = be_load_word32(output + 8); - s3 = be_load_word32(output + 12); - - /* Perform all 40 rounds five at a time using the fixsliced method. - * Every 5 rounds except the last we add the tweak value to the state */ - gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); - s0 ^= tweak; - gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); - s0 ^= tweak; - gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); - s0 ^= tweak; - gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); - s0 ^= tweak; - gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); - s0 ^= tweak; - gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); - s0 ^= tweak; - gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); - s0 ^= tweak; - gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); - - /* Pack the state into the ciphertext buffer in nibble form */ - be_store_word32(output, s0); - be_store_word32(output + 4, s1); - be_store_word32(output + 8, s2); - be_store_word32(output + 12, s3); - gift128n_to_nibbles(output, output); + /* Use the little-endian key byte order from the HYENA submission */ + if (!ks || !key || key_len != 16) + return 0; + gift128b_compute_round_keys + (ks, le_load_word32(key + 12), le_load_word32(key + 8), + le_load_word32(key + 4), le_load_word32(key)); + return 1; } -#else /* GIFT128_VARIANT_TINY */ +/* http://programming.sirrida.de/perm_fn.html#bit_permute_step */ +#define bit_permute_step(_y, mask, shift) \ + do { \ + uint32_t y = (_y); \ + uint32_t t = ((y >> (shift)) ^ y) & (mask); \ + (_y) = (y ^ t) ^ (t << (shift)); \ + } while (0) -void gift128b_encrypt - (const gift128b_key_schedule_t *ks, unsigned char *output, - const unsigned char *input) +/** + * \brief Converts the GIFT-128 nibble-based representation into word-based. + * + * \param output Output buffer to write the word-based version to. + * \param input Input buffer to read the nibble-based version from. + * + * The \a input and \a output buffers can be the same buffer. + */ +static void gift128n_to_words + (unsigned char *output, const unsigned char *input) { uint32_t s0, s1, s2, s3; - uint32_t w0, w1, w2, w3; - uint32_t temp; - uint8_t round; - /* Copy the plaintext into the state buffer and convert from big endian */ - s0 = be_load_word32(input); - s1 = be_load_word32(input + 4); - s2 = be_load_word32(input + 8); - s3 = be_load_word32(input + 12); + /* Load the input buffer into 32-bit words. We use the nibble order + * from the HYENA submission to NIST which is byte-reversed with respect + * to the nibble order of the original GIFT-128 paper. Nibble zero is in + * the first byte instead of the last, which means little-endian order. */ + s0 = le_load_word32(input + 12); + s1 = le_load_word32(input + 8); + s2 = le_load_word32(input + 4); + s3 = le_load_word32(input); - /* The key schedule is initialized with the key itself */ - w0 = ks->k[3]; - w1 = ks->k[1]; - w2 = ks->k[2]; - w3 = ks->k[0]; - - /* Perform all 40 rounds */ - for (round = 0; round < 40; ++round) { - /* SubCells - apply the S-box */ - s1 ^= s0 & s2; - s0 ^= s1 & s3; - s2 ^= s0 | s1; - s3 ^= s2; - s1 ^= s3; - s3 ^= 0xFFFFFFFFU; - s2 ^= s0 & s1; - temp = s0; - s0 = s3; - s3 = temp; - - /* PermBits - apply the 128-bit permutation */ - PERM0(s0); - PERM1(s1); - PERM2(s2); - PERM3(s3); - - /* AddRoundKey - XOR in the key schedule and the round constant */ - s2 ^= w1; - s1 ^= w3; - s3 ^= 0x80000000U ^ GIFT128_RC[round]; - - /* Rotate the key schedule */ - temp = w3; - w3 = w2; - w2 = w1; - w1 = w0; - w0 = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | - ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); - } + /* Rearrange the bits so that bits 0..3 of each nibble are + * scattered to bytes 0..3 of each word. The permutation is: + * + * 0 8 16 24 1 9 17 25 2 10 18 26 3 11 19 27 4 12 20 28 5 13 21 29 6 14 22 30 7 15 23 31 + * + * Generated with "http://programming.sirrida.de/calcperm.php". + */ + #define PERM_WORDS(_x) \ + do { \ + uint32_t x = (_x); \ + bit_permute_step(x, 0x0a0a0a0a, 3); \ + bit_permute_step(x, 0x00cc00cc, 6); \ + bit_permute_step(x, 0x0000f0f0, 12); \ + bit_permute_step(x, 0x0000ff00, 8); \ + (_x) = x; \ + } while (0) + PERM_WORDS(s0); + PERM_WORDS(s1); + PERM_WORDS(s2); + PERM_WORDS(s3); - /* Pack the state into the ciphertext buffer in big endian */ - be_store_word32(output, s0); - be_store_word32(output + 4, s1); - be_store_word32(output + 8, s2); - be_store_word32(output + 12, s3); + /* Rearrange the bytes and write them to the output buffer */ + output[0] = (uint8_t)s0; + output[1] = (uint8_t)s1; + output[2] = (uint8_t)s2; + output[3] = (uint8_t)s3; + output[4] = (uint8_t)(s0 >> 8); + output[5] = (uint8_t)(s1 >> 8); + output[6] = (uint8_t)(s2 >> 8); + output[7] = (uint8_t)(s3 >> 8); + output[8] = (uint8_t)(s0 >> 16); + output[9] = (uint8_t)(s1 >> 16); + output[10] = (uint8_t)(s2 >> 16); + output[11] = (uint8_t)(s3 >> 16); + output[12] = (uint8_t)(s0 >> 24); + output[13] = (uint8_t)(s1 >> 24); + output[14] = (uint8_t)(s2 >> 24); + output[15] = (uint8_t)(s3 >> 24); } -void gift128b_encrypt_preloaded - (const gift128b_key_schedule_t *ks, uint32_t output[4], - const uint32_t input[4]) +/** + * \brief Converts the GIFT-128 word-based representation into nibble-based. + * + * \param output Output buffer to write the nibble-based version to. + * \param input Input buffer to read the word-based version from. + */ +static void gift128n_to_nibbles + (unsigned char *output, const unsigned char *input) { uint32_t s0, s1, s2, s3; - uint32_t w0, w1, w2, w3; - uint32_t temp; - uint8_t round; - /* Copy the plaintext into the state buffer */ - s0 = input[0]; - s1 = input[1]; - s2 = input[2]; - s3 = input[3]; + /* Load the input bytes and rearrange them so that s0 contains the + * most significant nibbles and s3 contains the least significant */ + s0 = (((uint32_t)(input[12])) << 24) | + (((uint32_t)(input[8])) << 16) | + (((uint32_t)(input[4])) << 8) | + ((uint32_t)(input[0])); + s1 = (((uint32_t)(input[13])) << 24) | + (((uint32_t)(input[9])) << 16) | + (((uint32_t)(input[5])) << 8) | + ((uint32_t)(input[1])); + s2 = (((uint32_t)(input[14])) << 24) | + (((uint32_t)(input[10])) << 16) | + (((uint32_t)(input[6])) << 8) | + ((uint32_t)(input[2])); + s3 = (((uint32_t)(input[15])) << 24) | + (((uint32_t)(input[11])) << 16) | + (((uint32_t)(input[7])) << 8) | + ((uint32_t)(input[3])); - /* The key schedule is initialized with the key itself */ - w0 = ks->k[3]; - w1 = ks->k[1]; - w2 = ks->k[2]; - w3 = ks->k[0]; - - /* Perform all 40 rounds */ - for (round = 0; round < 40; ++round) { - /* SubCells - apply the S-box */ - s1 ^= s0 & s2; - s0 ^= s1 & s3; - s2 ^= s0 | s1; - s3 ^= s2; - s1 ^= s3; - s3 ^= 0xFFFFFFFFU; - s2 ^= s0 & s1; - temp = s0; - s0 = s3; - s3 = temp; - - /* PermBits - apply the 128-bit permutation */ - PERM0(s0); - PERM1(s1); - PERM2(s2); - PERM3(s3); - - /* AddRoundKey - XOR in the key schedule and the round constant */ - s2 ^= w1; - s1 ^= w3; - s3 ^= 0x80000000U ^ GIFT128_RC[round]; - - /* Rotate the key schedule */ - temp = w3; - w3 = w2; - w2 = w1; - w1 = w0; - w0 = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | - ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); - } + /* Apply the inverse of PERM_WORDS() from the function above */ + #define INV_PERM_WORDS(_x) \ + do { \ + uint32_t x = (_x); \ + bit_permute_step(x, 0x00aa00aa, 7); \ + bit_permute_step(x, 0x0000cccc, 14); \ + bit_permute_step(x, 0x00f000f0, 4); \ + bit_permute_step(x, 0x0000ff00, 8); \ + (_x) = x; \ + } while (0) + INV_PERM_WORDS(s0); + INV_PERM_WORDS(s1); + INV_PERM_WORDS(s2); + INV_PERM_WORDS(s3); - /* Pack the state into the ciphertext buffer */ - output[0] = s0; - output[1] = s1; - output[2] = s2; - output[3] = s3; + /* Store the result into the output buffer as 32-bit words */ + le_store_word32(output + 12, s0); + le_store_word32(output + 8, s1); + le_store_word32(output + 4, s2); + le_store_word32(output, s3); } -void gift128t_encrypt +void gift128n_encrypt (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input, uint32_t tweak) + const unsigned char *input) { - uint32_t s0, s1, s2, s3; - uint32_t w0, w1, w2, w3; - uint32_t temp; - uint8_t round; - - /* Copy the plaintext into the state buffer and convert from nibbles */ gift128n_to_words(output, input); - s0 = be_load_word32(output); - s1 = be_load_word32(output + 4); - s2 = be_load_word32(output + 8); - s3 = be_load_word32(output + 12); - - /* The key schedule is initialized with the key itself */ - w0 = ks->k[3]; - w1 = ks->k[1]; - w2 = ks->k[2]; - w3 = ks->k[0]; - - /* Perform all 40 rounds */ - for (round = 0; round < 40; ++round) { - /* SubCells - apply the S-box */ - s1 ^= s0 & s2; - s0 ^= s1 & s3; - s2 ^= s0 | s1; - s3 ^= s2; - s1 ^= s3; - s3 ^= 0xFFFFFFFFU; - s2 ^= s0 & s1; - temp = s0; - s0 = s3; - s3 = temp; - - /* PermBits - apply the 128-bit permutation */ - PERM0(s0); - PERM1(s1); - PERM2(s2); - PERM3(s3); - - /* AddRoundKey - XOR in the key schedule and the round constant */ - s2 ^= w1; - s1 ^= w3; - s3 ^= 0x80000000U ^ GIFT128_RC[round]; - - /* AddTweak - XOR in the tweak every 5 rounds except the last */ - if (((round + 1) % 5) == 0 && round < 39) - s0 ^= tweak; - - /* Rotate the key schedule */ - temp = w3; - w3 = w2; - w2 = w1; - w1 = w0; - w0 = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | - ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); - } - - /* Pack the state into the ciphertext buffer in nibble form */ - be_store_word32(output, s0); - be_store_word32(output + 4, s1); - be_store_word32(output + 8, s2); - be_store_word32(output + 12, s3); + gift128b_encrypt(ks, output, output); gift128n_to_nibbles(output, output); } -#endif /* GIFT128_VARIANT_TINY */ - -#if GIFT128_VARIANT == GIFT128_VARIANT_FULL - -void gift128b_decrypt - (const gift128b_key_schedule_t *ks, unsigned char *output, +void gift128n_decrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, const unsigned char *input) { - uint32_t s0, s1, s2, s3; - - /* Copy the plaintext into the state buffer and convert from big endian */ - s0 = be_load_word32(input); - s1 = be_load_word32(input + 4); - s2 = be_load_word32(input + 8); - s3 = be_load_word32(input + 12); - - /* Perform all 40 rounds five at a time using the fixsliced method */ - gift128b_decrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); - gift128b_decrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); - gift128b_decrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); - gift128b_decrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); - gift128b_decrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); - gift128b_decrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); - gift128b_decrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); - gift128b_decrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); - - /* Pack the state into the ciphertext buffer in big endian */ - be_store_word32(output, s0); - be_store_word32(output + 4, s1); - be_store_word32(output + 8, s2); - be_store_word32(output + 12, s3); + gift128n_to_words(output, input); + gift128b_decrypt(ks, output, output); + gift128n_to_nibbles(output, output); } -void gift128t_decrypt +/* 4-bit tweak values expanded to 32-bit */ +static uint32_t const GIFT128_tweaks[16] = { + 0x00000000, 0xe1e1e1e1, 0xd2d2d2d2, 0x33333333, + 0xb4b4b4b4, 0x55555555, 0x66666666, 0x87878787, + 0x78787878, 0x99999999, 0xaaaaaaaa, 0x4b4b4b4b, + 0xcccccccc, 0x2d2d2d2d, 0x1e1e1e1e, 0xffffffff +}; + +void gift128t_encrypt (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input, uint32_t tweak) + const unsigned char *input, unsigned char tweak) { - uint32_t s0, s1, s2, s3; + uint32_t s0, s1, s2, s3, tword; - /* Copy the ciphertext into the state buffer and convert from nibbles */ + /* Copy the plaintext into the state buffer and convert from nibbles */ gift128n_to_words(output, input); s0 = be_load_word32(output); s1 = be_load_word32(output + 4); @@ -1254,24 +782,25 @@ void gift128t_decrypt s3 = be_load_word32(output + 12); /* Perform all 40 rounds five at a time using the fixsliced method. - * Every 5 rounds except the first we add the tweak value to the state */ - gift128b_decrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); - s0 ^= tweak; - gift128b_decrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); - s0 ^= tweak; - gift128b_decrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); - s0 ^= tweak; - gift128b_decrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); - s0 ^= tweak; - gift128b_decrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); - s0 ^= tweak; - gift128b_decrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); - s0 ^= tweak; - gift128b_decrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); - s0 ^= tweak; - gift128b_decrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + * Every 5 rounds except the last we add the tweak value to the state */ + tword = GIFT128_tweaks[tweak]; + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC); + s0 ^= tword; + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC + 5); + s0 ^= tword; + gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC + 10); + s0 ^= tword; + gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC + 15); + s0 ^= tword; + gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC + 20); + s0 ^= tword; + gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC + 25); + s0 ^= tword; + gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC + 30); + s0 ^= tword; + gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC + 35); - /* Pack the state into the plaintext buffer in nibble form */ + /* Pack the state into the ciphertext buffer in nibble form */ be_store_word32(output, s0); be_store_word32(output + 4, s1); be_store_word32(output + 8, s2); @@ -1279,211 +808,37 @@ void gift128t_decrypt gift128n_to_nibbles(output, output); } -#else /* GIFT128_VARIANT_SMALL || GIFT128_VARIANT_TINY */ - -/* The small variant uses fixslicing for encryption, but we need to change - * to bitslicing for decryption because of the difficulty of fast-forwarding - * the fixsliced key schedule to the end. So the tiny variant is used for - * decryption when the small variant is selected. Since the NIST AEAD modes - * for GIFT-128 only use the block encrypt operation, the inefficiencies - * in decryption don't matter all that much */ - -/** - * \def gift128b_load_and_forward_schedule() - * \brief Generate the decryption key at the end of the last round. - * - * To do that, we run the block operation forward to determine the - * final state of the key schedule after the last round: - * - * w0 = ks->k[0]; - * w1 = ks->k[1]; - * w2 = ks->k[2]; - * w3 = ks->k[3]; - * for (round = 0; round < 40; ++round) { - * temp = w3; - * w3 = w2; - * w2 = w1; - * w1 = w0; - * w0 = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | - * ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); - * } - * - * We can short-cut all of the above by noticing that we don't need - * to do the word rotations. Every 4 rounds, the rotation alignment - * returns to the original position and each word has been rotated - * by applying the "2 right and 4 left" bit-rotation step to it. - * We then repeat that 10 times for the full 40 rounds. The overall - * effect is to apply a "20 right and 40 left" bit-rotation to every - * word in the key schedule. That is equivalent to "4 right and 8 left" - * on the 16-bit sub-words. - */ -#if GIFT128_VARIANT != GIFT128_VARIANT_SMALL -#define gift128b_load_and_forward_schedule() \ - do { \ - w0 = ks->k[3]; \ - w1 = ks->k[1]; \ - w2 = ks->k[2]; \ - w3 = ks->k[0]; \ - w0 = ((w0 & 0xFFF00000U) >> 4) | ((w0 & 0x000F0000U) << 12) | \ - ((w0 & 0x000000FFU) << 8) | ((w0 & 0x0000FF00U) >> 8); \ - w1 = ((w1 & 0xFFF00000U) >> 4) | ((w1 & 0x000F0000U) << 12) | \ - ((w1 & 0x000000FFU) << 8) | ((w1 & 0x0000FF00U) >> 8); \ - w2 = ((w2 & 0xFFF00000U) >> 4) | ((w2 & 0x000F0000U) << 12) | \ - ((w2 & 0x000000FFU) << 8) | ((w2 & 0x0000FF00U) >> 8); \ - w3 = ((w3 & 0xFFF00000U) >> 4) | ((w3 & 0x000F0000U) << 12) | \ - ((w3 & 0x000000FFU) << 8) | ((w3 & 0x0000FF00U) >> 8); \ - } while (0) -#else -/* The small variant needs to also undo some of the rotations that were - * done to generate the fixsliced version of the key schedule */ -#define gift128b_load_and_forward_schedule() \ - do { \ - w0 = ks->k[3]; \ - w1 = ks->k[1]; \ - w2 = ks->k[2]; \ - w3 = ks->k[0]; \ - gift128b_swap_move(w3, w3, 0x000000FFU, 24); \ - gift128b_swap_move(w3, w3, 0x00003333U, 18); \ - gift128b_swap_move(w3, w3, 0x000F000FU, 12); \ - gift128b_swap_move(w3, w3, 0x00550055U, 9); \ - gift128b_swap_move(w1, w1, 0x000000FFU, 24); \ - gift128b_swap_move(w1, w1, 0x00003333U, 18); \ - gift128b_swap_move(w1, w1, 0x000F000FU, 12); \ - gift128b_swap_move(w1, w1, 0x00550055U, 9); \ - gift128b_swap_move(w2, w2, 0x000000FFU, 24); \ - gift128b_swap_move(w2, w2, 0x000F000FU, 12); \ - gift128b_swap_move(w2, w2, 0x03030303U, 6); \ - gift128b_swap_move(w2, w2, 0x11111111U, 3); \ - gift128b_swap_move(w0, w0, 0x000000FFU, 24); \ - gift128b_swap_move(w0, w0, 0x000F000FU, 12); \ - gift128b_swap_move(w0, w0, 0x03030303U, 6); \ - gift128b_swap_move(w0, w0, 0x11111111U, 3); \ - w0 = ((w0 & 0xFFF00000U) >> 4) | ((w0 & 0x000F0000U) << 12) | \ - ((w0 & 0x000000FFU) << 8) | ((w0 & 0x0000FF00U) >> 8); \ - w1 = ((w1 & 0xFFF00000U) >> 4) | ((w1 & 0x000F0000U) << 12) | \ - ((w1 & 0x000000FFU) << 8) | ((w1 & 0x0000FF00U) >> 8); \ - w2 = ((w2 & 0xFFF00000U) >> 4) | ((w2 & 0x000F0000U) << 12) | \ - ((w2 & 0x000000FFU) << 8) | ((w2 & 0x0000FF00U) >> 8); \ - w3 = ((w3 & 0xFFF00000U) >> 4) | ((w3 & 0x000F0000U) << 12) | \ - ((w3 & 0x000000FFU) << 8) | ((w3 & 0x0000FF00U) >> 8); \ - } while (0) -#endif - -void gift128b_decrypt - (const gift128b_key_schedule_t *ks, unsigned char *output, - const unsigned char *input) -{ - uint32_t s0, s1, s2, s3; - uint32_t w0, w1, w2, w3; - uint32_t temp; - uint8_t round; - - /* Copy the ciphertext into the state buffer and convert from big endian */ - s0 = be_load_word32(input); - s1 = be_load_word32(input + 4); - s2 = be_load_word32(input + 8); - s3 = be_load_word32(input + 12); - - /* Generate the decryption key at the end of the last round */ - gift128b_load_and_forward_schedule(); - - /* Perform all 40 rounds */ - for (round = 40; round > 0; --round) { - /* Rotate the key schedule backwards */ - temp = w0; - w0 = w1; - w1 = w2; - w2 = w3; - w3 = ((temp & 0x3FFF0000U) << 2) | ((temp & 0xC0000000U) >> 14) | - ((temp & 0x0000FFF0U) >> 4) | ((temp & 0x0000000FU) << 12); - - /* AddRoundKey - XOR in the key schedule and the round constant */ - s2 ^= w1; - s1 ^= w3; - s3 ^= 0x80000000U ^ GIFT128_RC[round - 1]; - - /* InvPermBits - apply the inverse of the 128-bit permutation */ - INV_PERM0(s0); - INV_PERM1(s1); - INV_PERM2(s2); - INV_PERM3(s3); - - /* InvSubCells - apply the inverse of the S-box */ - temp = s0; - s0 = s3; - s3 = temp; - s2 ^= s0 & s1; - s3 ^= 0xFFFFFFFFU; - s1 ^= s3; - s3 ^= s2; - s2 ^= s0 | s1; - s0 ^= s1 & s3; - s1 ^= s0 & s2; - } - - /* Pack the state into the plaintext buffer in big endian */ - be_store_word32(output, s0); - be_store_word32(output + 4, s1); - be_store_word32(output + 8, s2); - be_store_word32(output + 12, s3); -} - void gift128t_decrypt (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input, uint32_t tweak) + const unsigned char *input, unsigned char tweak) { - uint32_t s0, s1, s2, s3; - uint32_t w0, w1, w2, w3; - uint32_t temp; - uint8_t round; + uint32_t s0, s1, s2, s3, tword; - /* Copy the plaintext into the state buffer and convert from nibbles */ + /* Copy the ciphertext into the state buffer and convert from nibbles */ gift128n_to_words(output, input); s0 = be_load_word32(output); s1 = be_load_word32(output + 4); s2 = be_load_word32(output + 8); s3 = be_load_word32(output + 12); - /* Generate the decryption key at the end of the last round */ - gift128b_load_and_forward_schedule(); - - /* Perform all 40 rounds */ - for (round = 40; round > 0; --round) { - /* Rotate the key schedule backwards */ - temp = w0; - w0 = w1; - w1 = w2; - w2 = w3; - w3 = ((temp & 0x3FFF0000U) << 2) | ((temp & 0xC0000000U) >> 14) | - ((temp & 0x0000FFF0U) >> 4) | ((temp & 0x0000000FU) << 12); - - /* AddTweak - XOR in the tweak every 5 rounds except the last */ - if ((round % 5) == 0 && round < 40) - s0 ^= tweak; - - /* AddRoundKey - XOR in the key schedule and the round constant */ - s2 ^= w1; - s1 ^= w3; - s3 ^= 0x80000000U ^ GIFT128_RC[round - 1]; - - /* InvPermBits - apply the inverse of the 128-bit permutation */ - INV_PERM0(s0); - INV_PERM1(s1); - INV_PERM2(s2); - INV_PERM3(s3); - - /* InvSubCells - apply the inverse of the S-box */ - temp = s0; - s0 = s3; - s3 = temp; - s2 ^= s0 & s1; - s3 ^= 0xFFFFFFFFU; - s1 ^= s3; - s3 ^= s2; - s2 ^= s0 | s1; - s0 ^= s1 & s3; - s1 ^= s0 & s2; - } + /* Perform all 40 rounds five at a time using the fixsliced method. + * Every 5 rounds except the first we add the tweak value to the state */ + tword = GIFT128_tweaks[tweak]; + gift128b_decrypt_5_rounds(ks->k + 70, GIFT128_RC + 35); + s0 ^= tword; + gift128b_decrypt_5_rounds(ks->k + 60, GIFT128_RC + 30); + s0 ^= tword; + gift128b_decrypt_5_rounds(ks->k + 50, GIFT128_RC + 25); + s0 ^= tword; + gift128b_decrypt_5_rounds(ks->k + 40, GIFT128_RC + 20); + s0 ^= tword; + gift128b_decrypt_5_rounds(ks->k + 30, GIFT128_RC + 15); + s0 ^= tword; + gift128b_decrypt_5_rounds(ks->k + 20, GIFT128_RC + 10); + s0 ^= tword; + gift128b_decrypt_5_rounds(ks->k + 10, GIFT128_RC + 5); + s0 ^= tword; + gift128b_decrypt_5_rounds(ks->k, GIFT128_RC); /* Pack the state into the plaintext buffer in nibble form */ be_store_word32(output, s0); @@ -1492,7 +847,3 @@ void gift128t_decrypt be_store_word32(output + 12, s3); gift128n_to_nibbles(output, output); } - -#endif /* GIFT128_VARIANT_SMALL || GIFT128_VARIANT_TINY */ - -#endif /* !GIFT128_VARIANT_ASM */ diff --git a/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-gift128.h b/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-gift128.h index f57d143..1ac40e5 100644 --- a/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-gift128.h +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-gift128.h @@ -47,13 +47,11 @@ * in any of the NIST submissions so we don't bother with it in this library. * * References: https://eprint.iacr.org/2017/622.pdf, - * https://eprint.iacr.org/2020/412.pdf, * https://giftcipher.github.io/gift/ */ #include #include -#include "internal-gift128-config.h" #ifdef __cplusplus extern "C" { @@ -65,23 +63,16 @@ extern "C" { #define GIFT128_BLOCK_SIZE 16 /** - * \var GIFT128_ROUND_KEYS - * \brief Number of round keys for the GIFT-128 key schedule. + * \brief Number of round keys for the fixsliced representation of GIFT-128. */ -#if GIFT128_VARIANT == GIFT128_VARIANT_TINY -#define GIFT128_ROUND_KEYS 4 -#elif GIFT128_VARIANT == GIFT128_VARIANT_SMALL -#define GIFT128_ROUND_KEYS 20 -#else #define GIFT128_ROUND_KEYS 80 -#endif /** * \brief Structure of the key schedule for GIFT-128 (bit-sliced). */ typedef struct { - /** Pre-computed round keys for bit-sliced GIFT-128 */ + /** Pre-computed round keys in the fixsliced form */ uint32_t k[GIFT128_ROUND_KEYS]; } gift128b_key_schedule_t; @@ -90,9 +81,14 @@ typedef struct * \brief Initializes the key schedule for GIFT-128 (bit-sliced). * * \param ks Points to the key schedule to initialize. - * \param key Points to the 16 bytes of the key data. + * \param key Points to the key data. + * \param key_len Length of the key data, which must be 16. + * + * \return Non-zero on success or zero if there is something wrong + * with the parameters. */ -void gift128b_init(gift128b_key_schedule_t *ks, const unsigned char *key); +int gift128b_init + (gift128b_key_schedule_t *ks, const unsigned char *key, size_t key_len); /** * \brief Encrypts a 128-bit block with GIFT-128 (bit-sliced). @@ -149,9 +145,14 @@ typedef gift128b_key_schedule_t gift128n_key_schedule_t; * \brief Initializes the key schedule for GIFT-128 (nibble-based). * * \param ks Points to the key schedule to initialize. - * \param key Points to the 16 bytes of the key data. + * \param key Points to the key data. + * \param key_len Length of the key data, which must be 16. + * + * \return Non-zero on success or zero if there is something wrong + * with the parameters. */ -void gift128n_init(gift128n_key_schedule_t *ks, const unsigned char *key); +int gift128n_init + (gift128n_key_schedule_t *ks, const unsigned char *key, size_t key_len); /** * \brief Encrypts a 128-bit block with GIFT-128 (nibble-based). @@ -181,31 +182,13 @@ void gift128n_decrypt (const gift128n_key_schedule_t *ks, unsigned char *output, const unsigned char *input); -/* 4-bit tweak values expanded to 32-bit for TweGIFT-128 */ -#define GIFT128T_TWEAK_0 0x00000000 /**< TweGIFT-128 tweak value 0 */ -#define GIFT128T_TWEAK_1 0xe1e1e1e1 /**< TweGIFT-128 tweak value 1 */ -#define GIFT128T_TWEAK_2 0xd2d2d2d2 /**< TweGIFT-128 tweak value 2 */ -#define GIFT128T_TWEAK_3 0x33333333 /**< TweGIFT-128 tweak value 3 */ -#define GIFT128T_TWEAK_4 0xb4b4b4b4 /**< TweGIFT-128 tweak value 4 */ -#define GIFT128T_TWEAK_5 0x55555555 /**< TweGIFT-128 tweak value 5 */ -#define GIFT128T_TWEAK_6 0x66666666 /**< TweGIFT-128 tweak value 6 */ -#define GIFT128T_TWEAK_7 0x87878787 /**< TweGIFT-128 tweak value 7 */ -#define GIFT128T_TWEAK_8 0x78787878 /**< TweGIFT-128 tweak value 8 */ -#define GIFT128T_TWEAK_9 0x99999999 /**< TweGIFT-128 tweak value 9 */ -#define GIFT128T_TWEAK_10 0xaaaaaaaa /**< TweGIFT-128 tweak value 10 */ -#define GIFT128T_TWEAK_11 0x4b4b4b4b /**< TweGIFT-128 tweak value 11 */ -#define GIFT128T_TWEAK_12 0xcccccccc /**< TweGIFT-128 tweak value 12 */ -#define GIFT128T_TWEAK_13 0x2d2d2d2d /**< TweGIFT-128 tweak value 13 */ -#define GIFT128T_TWEAK_14 0x1e1e1e1e /**< TweGIFT-128 tweak value 14 */ -#define GIFT128T_TWEAK_15 0xffffffff /**< TweGIFT-128 tweak value 15 */ - /** * \brief Encrypts a 128-bit block with TweGIFT-128 (tweakable variant). * * \param ks Points to the GIFT-128 key schedule. * \param output Output buffer which must be at least 16 bytes in length. * \param input Input buffer which must be at least 16 bytes in length. - * \param tweak 4-bit tweak value expanded to 32-bit. + * \param tweak 4-bit tweak value. * * The \a input and \a output buffers can be the same buffer for * in-place encryption. @@ -217,7 +200,7 @@ void gift128n_decrypt */ void gift128t_encrypt (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input, uint32_t tweak); + const unsigned char *input, unsigned char tweak); /** * \brief Decrypts a 128-bit block with TweGIFT-128 (tweakable variant). @@ -225,7 +208,7 @@ void gift128t_encrypt * \param ks Points to the GIFT-128 key schedule. * \param output Output buffer which must be at least 16 bytes in length. * \param input Input buffer which must be at least 16 bytes in length. - * \param tweak 4-bit tweak value expanded to 32-bit. + * \param tweak 4-bit tweak value. * * The \a input and \a output buffers can be the same buffer for * in-place encryption. @@ -237,7 +220,7 @@ void gift128t_encrypt */ void gift128t_decrypt (const gift128n_key_schedule_t *ks, unsigned char *output, - const unsigned char *input, uint32_t tweak); + const unsigned char *input, unsigned char tweak); #ifdef __cplusplus } diff --git a/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-util.h b/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-util.h index e30166d..e79158c 100644 --- a/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-util.h +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys/internal-util.h @@ -238,17 +238,6 @@ } \ } while (0) -/* Rotation functions need to be optimised for best performance on AVR. - * The most efficient rotations are where the number of bits is 1 or a - * multiple of 8, so we compose the efficient rotations to produce all - * other rotation counts of interest. */ - -#if defined(__AVR__) -#define LW_CRYPTO_ROTATE32_COMPOSED 1 -#else -#define LW_CRYPTO_ROTATE32_COMPOSED 0 -#endif - /* Rotation macros for 32-bit arguments */ /* Generic left rotate */ @@ -265,8 +254,6 @@ (_temp >> (bits)) | (_temp << (32 - (bits))); \ })) -#if !LW_CRYPTO_ROTATE32_COMPOSED - /* Left rotate by a specific number of bits. These macros may be replaced * with more efficient ones on platforms that lack a barrel shifter */ #define leftRotate1(a) (leftRotate((a), 1)) @@ -335,138 +322,6 @@ #define rightRotate30(a) (rightRotate((a), 30)) #define rightRotate31(a) (rightRotate((a), 31)) -#else /* LW_CRYPTO_ROTATE32_COMPOSED */ - -/* Composed rotation macros where 1 and 8 are fast, but others are slow */ - -/* Left rotate by 1 */ -#define leftRotate1(a) (leftRotate((a), 1)) - -/* Left rotate by 2 */ -#define leftRotate2(a) (leftRotate(leftRotate((a), 1), 1)) - -/* Left rotate by 3 */ -#define leftRotate3(a) (leftRotate(leftRotate(leftRotate((a), 1), 1), 1)) - -/* Left rotate by 4 */ -#define leftRotate4(a) (leftRotate(leftRotate(leftRotate(leftRotate((a), 1), 1), 1), 1)) - -/* Left rotate by 5: Rotate left by 8, then right by 3 */ -#define leftRotate5(a) (rightRotate(rightRotate(rightRotate(leftRotate((a), 8), 1), 1), 1)) - -/* Left rotate by 6: Rotate left by 8, then right by 2 */ -#define leftRotate6(a) (rightRotate(rightRotate(leftRotate((a), 8), 1), 1)) - -/* Left rotate by 7: Rotate left by 8, then right by 1 */ -#define leftRotate7(a) (rightRotate(leftRotate((a), 8), 1)) - -/* Left rotate by 8 */ -#define leftRotate8(a) (leftRotate((a), 8)) - -/* Left rotate by 9: Rotate left by 8, then left by 1 */ -#define leftRotate9(a) (leftRotate(leftRotate((a), 8), 1)) - -/* Left rotate by 10: Rotate left by 8, then left by 2 */ -#define leftRotate10(a) (leftRotate(leftRotate(leftRotate((a), 8), 1), 1)) - -/* Left rotate by 11: Rotate left by 8, then left by 3 */ -#define leftRotate11(a) (leftRotate(leftRotate(leftRotate(leftRotate((a), 8), 1), 1), 1)) - -/* Left rotate by 12: Rotate left by 16, then right by 4 */ -#define leftRotate12(a) (rightRotate(rightRotate(rightRotate(rightRotate(leftRotate((a), 16), 1), 1), 1), 1)) - -/* Left rotate by 13: Rotate left by 16, then right by 3 */ -#define leftRotate13(a) (rightRotate(rightRotate(rightRotate(leftRotate((a), 16), 1), 1), 1)) - -/* Left rotate by 14: Rotate left by 16, then right by 2 */ -#define leftRotate14(a) (rightRotate(rightRotate(leftRotate((a), 16), 1), 1)) - -/* Left rotate by 15: Rotate left by 16, then right by 1 */ -#define leftRotate15(a) (rightRotate(leftRotate((a), 16), 1)) - -/* Left rotate by 16 */ -#define leftRotate16(a) (leftRotate((a), 16)) - -/* Left rotate by 17: Rotate left by 16, then left by 1 */ -#define leftRotate17(a) (leftRotate(leftRotate((a), 16), 1)) - -/* Left rotate by 18: Rotate left by 16, then left by 2 */ -#define leftRotate18(a) (leftRotate(leftRotate(leftRotate((a), 16), 1), 1)) - -/* Left rotate by 19: Rotate left by 16, then left by 3 */ -#define leftRotate19(a) (leftRotate(leftRotate(leftRotate(leftRotate((a), 16), 1), 1), 1)) - -/* Left rotate by 20: Rotate left by 16, then left by 4 */ -#define leftRotate20(a) (leftRotate(leftRotate(leftRotate(leftRotate(leftRotate((a), 16), 1), 1), 1), 1)) - -/* Left rotate by 21: Rotate left by 24, then right by 3 */ -#define leftRotate21(a) (rightRotate(rightRotate(rightRotate(leftRotate((a), 24), 1), 1), 1)) - -/* Left rotate by 22: Rotate left by 24, then right by 2 */ -#define leftRotate22(a) (rightRotate(rightRotate(leftRotate((a), 24), 1), 1)) - -/* Left rotate by 23: Rotate left by 24, then right by 1 */ -#define leftRotate23(a) (rightRotate(leftRotate((a), 24), 1)) - -/* Left rotate by 24 */ -#define leftRotate24(a) (leftRotate((a), 24)) - -/* Left rotate by 25: Rotate left by 24, then left by 1 */ -#define leftRotate25(a) (leftRotate(leftRotate((a), 24), 1)) - -/* Left rotate by 26: Rotate left by 24, then left by 2 */ -#define leftRotate26(a) (leftRotate(leftRotate(leftRotate((a), 24), 1), 1)) - -/* Left rotate by 27: Rotate left by 24, then left by 3 */ -#define leftRotate27(a) (leftRotate(leftRotate(leftRotate(leftRotate((a), 24), 1), 1), 1)) - -/* Left rotate by 28: Rotate right by 4 */ -#define leftRotate28(a) (rightRotate(rightRotate(rightRotate(rightRotate((a), 1), 1), 1), 1)) - -/* Left rotate by 29: Rotate right by 3 */ -#define leftRotate29(a) (rightRotate(rightRotate(rightRotate((a), 1), 1), 1)) - -/* Left rotate by 30: Rotate right by 2 */ -#define leftRotate30(a) (rightRotate(rightRotate((a), 1), 1)) - -/* Left rotate by 31: Rotate right by 1 */ -#define leftRotate31(a) (rightRotate((a), 1)) - -/* Define the 32-bit right rotations in terms of left rotations */ -#define rightRotate1(a) (leftRotate31((a))) -#define rightRotate2(a) (leftRotate30((a))) -#define rightRotate3(a) (leftRotate29((a))) -#define rightRotate4(a) (leftRotate28((a))) -#define rightRotate5(a) (leftRotate27((a))) -#define rightRotate6(a) (leftRotate26((a))) -#define rightRotate7(a) (leftRotate25((a))) -#define rightRotate8(a) (leftRotate24((a))) -#define rightRotate9(a) (leftRotate23((a))) -#define rightRotate10(a) (leftRotate22((a))) -#define rightRotate11(a) (leftRotate21((a))) -#define rightRotate12(a) (leftRotate20((a))) -#define rightRotate13(a) (leftRotate19((a))) -#define rightRotate14(a) (leftRotate18((a))) -#define rightRotate15(a) (leftRotate17((a))) -#define rightRotate16(a) (leftRotate16((a))) -#define rightRotate17(a) (leftRotate15((a))) -#define rightRotate18(a) (leftRotate14((a))) -#define rightRotate19(a) (leftRotate13((a))) -#define rightRotate20(a) (leftRotate12((a))) -#define rightRotate21(a) (leftRotate11((a))) -#define rightRotate22(a) (leftRotate10((a))) -#define rightRotate23(a) (leftRotate9((a))) -#define rightRotate24(a) (leftRotate8((a))) -#define rightRotate25(a) (leftRotate7((a))) -#define rightRotate26(a) (leftRotate6((a))) -#define rightRotate27(a) (leftRotate5((a))) -#define rightRotate28(a) (leftRotate4((a))) -#define rightRotate29(a) (leftRotate3((a))) -#define rightRotate30(a) (leftRotate2((a))) -#define rightRotate31(a) (leftRotate1((a))) - -#endif /* LW_CRYPTO_ROTATE32_COMPOSED */ - /* Rotation macros for 64-bit arguments */ /* Generic left rotate */ diff --git a/hyena/Implementations/crypto_aead/hyenav2/LWC_AEAD_KAT_128_96.txt b/hyena/Implementations/crypto_aead/hyenav2/LWC_AEAD_KAT_128_96.txt new file mode 100644 index 0000000..dee108b --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/LWC_AEAD_KAT_128_96.txt @@ -0,0 +1,7623 @@ +Count = 1 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = +CT = F83CA141A233342B1507192F171774A6 + +Count = 2 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 00 +CT = E350763873B36471681989E03CDFB4BE + +Count = 3 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 0001 +CT = 9A9914D7A8CDFEDB8A688BE6DB7D214F + +Count = 4 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102 +CT = B15A5A5F09385A20B035E7FEB346BD61 + +Count = 5 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 00010203 +CT = 05B95CD0688782299C70A33BBCAF1684 + +Count = 6 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 0001020304 +CT = 1DBC0D28C0FB4AD8872754FD420BD92E + +Count = 7 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405 +CT = 74258B43E575F6FC33E26F0B552BC750 + +Count = 8 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 00010203040506 +CT = A85F470EEE90CA2A94FE30415E31CAFF + +Count = 9 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 0001020304050607 +CT = 39017F93CEE6B83AA4C4C1FF48273564 + +Count = 10 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708 +CT = 3A2894D1043FD54DC77289FFE4333AD1 + +Count = 11 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 00010203040506070809 +CT = DABDA6CF51150E19F164F2C7C6C22D16 + +Count = 12 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A +CT = 6FCDB8AD80BDFAE150D0AE919A172C20 + +Count = 13 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B +CT = 66AF967D66CB56F87083C660A30AC8C9 + +Count = 14 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C +CT = C30EBDA26826BCC6F99C0A4D54773D8F + +Count = 15 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D +CT = 4A813C69C95F24DCF669940B1AA189F9 + +Count = 16 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E +CT = 1AE6DDA58C17F337366DF7FADA1D4497 + +Count = 17 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F +CT = 50A5C6ABBA4CE9171452107468ADE5AE + +Count = 18 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 9F5DEF663FFEE7A15C4D6FA673D359FC + +Count = 19 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 9DF77CB405D36668958F398ABF7B28FC + +Count = 20 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = E209CB81746B72716538D7CD17A6444D + +Count = 21 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = F00A350C020334FB5EA7B33F289AD795 + +Count = 22 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = 7106B19BBDBD2FDF3D11D9B91FC154DF + +Count = 23 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = 14B8A10E0682BB2482DF9B1DCE755551 + +Count = 24 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = BDA04DE64CD80319EB5DF8EBBA42EFC4 + +Count = 25 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = 216C14D4CD1829198C545681F3864970 + +Count = 26 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 334AD62CC8D101B3D5033B2FAC7C739C + +Count = 27 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 2DAA8A8E5294BDF1A81B3D8993EC2546 + +Count = 28 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 9E698F85F7C7807B9C9F7185B4BCDF95 + +Count = 29 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = 5865A44D9F5A99CD3F5CF29AD20E57DE + +Count = 30 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = 42F7FDFDD34381AE9CD411EFA7BD638C + +Count = 31 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 331D1718FACA29369FDBE92ED53A15B8 + +Count = 32 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = F7CF8AA4B345A3CDA36ACE0A25997D8C + +Count = 33 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = DFA8FCE97F530C981A0CDAE70790A0CA + +Count = 34 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = +CT = 3562C0CAC7E1F43E1B2FA4D8ADDBF15C3F + +Count = 35 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 00 +CT = A79E7781A6274290D22A1A52590920EE64 + +Count = 36 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 0001 +CT = 4475D06FDAC2DC3DDE1351FFC32C9E3E13 + +Count = 37 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102 +CT = B1F3073D129A6E7A0B81367EDD40FA3890 + +Count = 38 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 00010203 +CT = B1AD4FD7FC82BF695D564B556257B42D8E + +Count = 39 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 0001020304 +CT = 36DC47D07AEC68DE8FBAF06182443D539B + +Count = 40 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405 +CT = 28232093DA22D93FC6D8123279D0071932 + +Count = 41 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 00010203040506 +CT = 5ACA0451CACDDFA47EA49DE67C73DF3817 + +Count = 42 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 0001020304050607 +CT = D697C88429C45EF9B3DCC6D3C7E2352CB0 + +Count = 43 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708 +CT = 640A80F88EC038155DF0ABC679F34521DD + +Count = 44 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 00010203040506070809 +CT = CA95BAAB316AB874D2DE2BFF4019B3477C + +Count = 45 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A +CT = DFFB4C3FE417CD5CFDF4EE44CA44576CA9 + +Count = 46 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B +CT = 7C081DAA73C942F805281CBB6C426C9A0B + +Count = 47 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C +CT = D8F97AB08D58B59AF1C3150F992DF970A1 + +Count = 48 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D +CT = 25234BD0773F5EAE650DE66ADEA41A0854 + +Count = 49 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E +CT = D258F7088B90612A4DCEDDF603A976077B + +Count = 50 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F +CT = 833D4C27499C767911E2929950EDACC21C + +Count = 51 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 718EEA718E4DC268685A18D0407C92AA59 + +Count = 52 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 36DC969FBDC053E80A15D73ED54B2540B5 + +Count = 53 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 1010983DF8CB9D4BD1A8EFA7E77D31258D + +Count = 54 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DAE7EB670A106B4D223123EC7109B335E2 + +Count = 55 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CE15813C9EE3A15FE59023C1E86CA30D53 + +Count = 56 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C6C7D076B14D455913FDCE8DAE036F399B + +Count = 57 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F0F0EE9B7A5BBA5EA6462D4D245B4E63ED + +Count = 58 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4F172F8293E584BF57CE0B3801C49C938 + +Count = 59 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA7EA9F6FC6F184ABD2FAB6A08E652B3B + +Count = 60 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 367A2D3B489283BB3BD1F4386530D3F4A1 + +Count = 61 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 440DC0D046FF381F6A7B45CE9BD43CF9BC + +Count = 62 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FB8705E1F4E34658F8EAE8A83DFFDC433B + +Count = 63 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4BAB51B967FB6FA25FCD916115FD54674 + +Count = 64 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 643BF7DFE1C94C8F1548776FBAB5965672 + +Count = 65 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 42063D5D026E34C4B7D23841A100707208 + +Count = 66 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 811C29BB1E14BDDB4AE15DCEAD47A81F17 + +Count = 67 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = +CT = 35D79A22166BB4D0E9935BB287A19E81FE98 + +Count = 68 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 00 +CT = A72543D69E4BAF2D1030E7DC99E6A9614D05 + +Count = 69 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 0001 +CT = 44264EDFD4613C5F859B5159705C887F2CB2 + +Count = 70 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102 +CT = B15380C041A3FB771C20782D07A525C9ED11 + +Count = 71 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 00010203 +CT = B1B9BEA459A8BC11ABEEFFF03BB146B52807 + +Count = 72 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 0001020304 +CT = 36E0ADD5CCD30E0973311BA0B60AC425DFDD + +Count = 73 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405 +CT = 28D16747FC810E892ED126C425E2D44776B1 + +Count = 74 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 00010203040506 +CT = 5A8DB34960533773DE982BD0A9294B9944A3 + +Count = 75 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 0001020304050607 +CT = D608DC147826F87CF8404F307FB6B551C05D + +Count = 76 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708 +CT = 64BB2614E435F0FB897796B47DD26012144B + +Count = 77 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 00010203040506070809 +CT = CA122C90F50F64675A0ADB84D44017178758 + +Count = 78 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A +CT = DF242E5B614746020E22599C02B1C00109D5 + +Count = 79 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B +CT = 7C05E3E715DD8635C649C80C31703F92329E + +Count = 80 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C +CT = D8217C97B35A45C3FF15449E2EFA0CB041A4 + +Count = 81 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D +CT = 25D4885DC4830DAA08A6FE22BC74C324C011 + +Count = 82 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC1A6893FA251E7515A6F1CA44ADE80D2 + +Count = 83 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F +CT = 8342598DC9DDC63BC64B1116E82A273174C7 + +Count = 84 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C25E3FA43AAB31DEA6B4201CBB5771340F + +Count = 85 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 36027ACAB06E71C015DFE6B5D9173891B0BD + +Count = 86 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 1039ACB1CA0FF2F8056AD8B407AB146D4C92 + +Count = 87 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68217622B178B099FA3522DCC32C2707E6 + +Count = 88 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9018DD5BED384650928846202D86C88B4 + +Count = 89 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679AD3EA098339E9C0793E2CCA92CC9E44F + +Count = 90 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F0984E4D0E9EEA6FB513F71329F82A8BC5F9 + +Count = 91 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B498222971AFDD5DB88E409D661EECB47B2E + +Count = 92 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA215F2DECE20F034D95CA50625744ADFF6 + +Count = 93 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364B5FAA2A3C81EAFF4E814B81A015BAC911 + +Count = 94 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F73C8A10FBA9D6288BEB7C6501AC571045 + +Count = 95 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEE733548947F8009455C8DC8DF186838E + +Count = 96 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9B5F1A9AE528F7BE15DBD2C576B6F8639 + +Count = 97 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CABD51665B67F002AB214648F19938159B + +Count = 98 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC8FC414ABDA2C6077D6FE1ACFAE737FF + +Count = 99 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 81569C1EDB56CA6FD92C92BC9879809C2ABF + +Count = 100 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = +CT = 35D7CE2D348E74CEDEC9DA86A4A64CF3A42AC5 + +Count = 101 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 00 +CT = A725E9A1EE98E58D43886172CD47F172B2414D + +Count = 102 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 0001 +CT = 4426F9075F7E2B8032E07F0F834AC78B08B90E + +Count = 103 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102 +CT = B153788F81307B6B6F0A30B78F08E57C132163 + +Count = 104 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 00010203 +CT = B1B9715FDC523D22A6BAE49392757971A39959 + +Count = 105 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 0001020304 +CT = 36E0B2E597B2DE9587C236A5238A3A3DF431A8 + +Count = 106 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405 +CT = 28D156A6B95EF521FA67753B0E343266BBC964 + +Count = 107 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 00010203040506 +CT = 5A8DBE26F2189A2652D3312D4AACC256620E59 + +Count = 108 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 0001020304050607 +CT = D60875801F168BCEDD767B421D00FAF1F87805 + +Count = 109 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708 +CT = 64BB3CCFB62570B4E2E4C0CE8B7898C545B117 + +Count = 110 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 00010203040506070809 +CT = CA126124AEFAD7F4148F0A217333D26A5802CE + +Count = 111 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A +CT = DF24A59085FE8D00516F4EE97B812A9A652F80 + +Count = 112 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B +CT = 7C053AED09A1CF3EEA8E2FD933D2E0B79B81CA + +Count = 113 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C +CT = D82115F0AA3F2C11ED152985C62C0F03F7CF42 + +Count = 114 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D +CT = 25D49FB9CA8BA623C9D54AB7480E5A80F07F3D + +Count = 115 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC0C0B3764F22A4B0683ADEBD16CB749D3B + +Count = 116 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F +CT = 83428751D259EE5F9104C40E1770BD95D9387B + +Count = 117 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F5D1C72AD868BB451C3E871F7E06958571 + +Count = 118 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D481C21A5FB7D280153367A2202206CF7A + +Count = 119 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F5DDFC067CF5B617D785A2102927EBDD1 + +Count = 120 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBD67FBEA8ECC2746933EAEB89389ED5DA + +Count = 121 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C124FC56FE6B9F49069DC64A6C1C75A6C0 + +Count = 122 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEB71225B8C9A7BC5536C11CB5DB25706B + +Count = 123 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098974450B2F447B843280055B829E38945B4 + +Count = 124 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989FFCB0898F1D315E54F1E0536FDDFA210A + +Count = 125 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F33E18AA005E2E35AC2C6F828AC90050E + +Count = 126 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE32850521DA7BAC74C481AA3FF2B6320B8 + +Count = 127 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2853505F1C916ED453AF409DE862CF41C + +Count = 128 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA117578CCAF0B102B56E3FD93104E4D18 + +Count = 129 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F13A1A52935233B01BF6947CC012AF3AA7 + +Count = 130 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0A2E9B55B6DFC5F0241C5EF582AFAA016D + +Count = 131 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC417C7DA55CDE36ECEBD731806F9EFFFA1 + +Count = 132 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BEFC7FC71A8EC5D14EAA6328407373F230 + +Count = 133 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = +CT = 35D7CEADBEB429B3F757FDBB0DE8BBFA3A9B86DB + +Count = 134 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 00 +CT = A725E9310D2521C06E7A9A0DA227D41BD7C47489 + +Count = 135 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 0001 +CT = 4426F96A548CE9B03F97A1FFDB0A1072F9D86164 + +Count = 136 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102 +CT = B15378691058BA7D7DFB57654620B11063F1ED14 + +Count = 137 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 00010203 +CT = B1B971ECEE4725ADF77B1AD5B3DD46C5216C1DFA + +Count = 138 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 0001020304 +CT = 36E0B2DBA03451251576B5F2AFAC30657BE8366F + +Count = 139 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405 +CT = 28D1565C9EFB769ED07CD875AD2511D5C3EDD021 + +Count = 140 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 00010203040506 +CT = 5A8DBE79A9657E15D928356CA177423E84CFD291 + +Count = 141 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 0001020304050607 +CT = D60875BC0810BB15950AAA9852295A5DCEA2EA61 + +Count = 142 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708 +CT = 64BB3CDACB38C3DBE947A577B5639BCE7139AA40 + +Count = 143 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 00010203040506070809 +CT = CA126131FC39CEE5E5091525C549D55CF452BFAB + +Count = 144 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A +CT = DF24A5AF9FF19EE8BE8FD7AED6FDB2DB9472747D + +Count = 145 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B +CT = 7C053A55597EAECD10D9856BA37F0FABF574BB01 + +Count = 146 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C +CT = D82115EDB5FD700C27616ED1067BCD68D7A9FEC9 + +Count = 147 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D +CT = 25D49F7479F3F9458223B2DD54052E9E79B6C3DD + +Count = 148 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E0CA1B2D02F9E1A598B6490E42ECA93C4 + +Count = 149 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F +CT = 83428794E3F6BBF6BC1B5D239CF64AF9D1197987 + +Count = 150 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B307D061E4EF4D4490788216804421C10 + +Count = 151 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D4000EF47EED8E53D6A02349469703346331 + +Count = 152 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03BBEBBF42FD17EC1634C687287B045923 + +Count = 153 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF56D0EEE1D3704F5747FBC94B9E2707AE + +Count = 154 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C148B3ADB929BD18B24C6F075FCEB1B1244C + +Count = 155 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD250F45B09314E7E91DE8BCD394026AA7 + +Count = 156 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D8BF787838FC486B6F358DD8F50108648 + +Count = 157 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F213212DFA5909E2D87BD7F2EB580CB0069 + +Count = 158 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F389397788A8BB8CB3EE1D069759714E3C0 + +Count = 159 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE3524E6772BAFCE394083CE6C156EC36A0D2 + +Count = 160 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2737CCC7913F6E37902520A312B1A4F6E94 + +Count = 161 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA087FE844D4B6187066B645386ED2519231 + +Count = 162 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0637DA52119A77DF1CDFB661430538477 + +Count = 163 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF4042F4719DFFECDC914B9CEC2FC3BA438 + +Count = 164 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43DBBE1D724A1BFD640ACCF238CBC7CC6C4 + +Count = 165 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE510BCF653037BFF094C1428155381C7118 + +Count = 166 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = +CT = 35D7CEAD7D8DB819DAD5FAC3BB8003574DCD7FEAC5 + +Count = 167 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 00 +CT = A725E931A0BD08D6451C45495EBD60359B4056A239 + +Count = 168 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 0001 +CT = 4426F96A07AD5EB0A92EEBB502EFBABAD4A6E096D7 + +Count = 169 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102 +CT = B15378691A8FD93BDDD3D0A12B8FE7A142F16B1A6F + +Count = 170 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 00010203 +CT = B1B971ECE73007A7FAD7F92500768E7CB2BE19C72E + +Count = 171 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 0001020304 +CT = 36E0B2DB67F3F62FC1510CF45C5E60DE88FB0ED13C + +Count = 172 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405 +CT = 28D1565CED7DE3B08D91DE92420335545D6A0C2BCB + +Count = 173 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 00010203040506 +CT = 5A8DBE79CD8053C920ECBA7B060D4382E4C2DA3741 + +Count = 174 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 0001020304050607 +CT = D60875BC19AC3B27393B991DB7453D3D2DF9CA921F + +Count = 175 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708 +CT = 64BB3CDA2A9B08D9F2AE5CFCCED0FE310218260FE6 + +Count = 176 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 00010203040506070809 +CT = CA1261316A136DE2C5A75DE87DC201CC13A34C7586 + +Count = 177 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A +CT = DF24A5AF538241442F6256DDE11BDAF6A54D585574 + +Count = 178 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B +CT = 7C053A5598C5B67F2ED61EEE418A764D1EE7676A6A + +Count = 179 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C +CT = D82115EDF58479DCE4F8ADC78DD694BEA6CCBF23F6 + +Count = 180 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D5FDD395291944A5BE36FEA396E0BB38DF + +Count = 181 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8CAA593407EF8B560E328E2CC6A42BEBCA + +Count = 182 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945FAF6CA4FAD641763BFD5A261A55DEB3CF + +Count = 183 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0DF2EDDBC650B7FF8EE3D560FE462519D9 + +Count = 184 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B316AF9F6BA3501D8F9D3B2BCBCE8A359E + +Count = 185 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5B5426D142B4827D944D94329E0D0645E + +Count = 186 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF98A2D6058C482BC8B986901CA2FAFF4302 + +Count = 187 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C148986742812D6F1E78C47DC16BD2BB8D9364 + +Count = 188 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD038E7A58D66814ED57D42C7440341451A9 + +Count = 189 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D351E18BA4F0F5800E6A7B628DE47D1F883 + +Count = 190 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A5B3A8B4D741939C94CEA886326F558D1D + +Count = 191 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F3862F3D974806569A494C38A4BD3D2F28DD2 + +Count = 192 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE35231A5F4ED74877F40046CD305574ADFEAC0 + +Count = 193 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F6E217957036003975829DE2E8D193A68 + +Count = 194 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A4ECEA7D76A1B13F76025F239A3D0137AF + +Count = 195 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DEECD3EAA1924AF6B1EAA23A6F2A2584E8 + +Count = 196 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494EA5EF6C0C4A0CA9654FF3B622E0DF977 + +Count = 197 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F87789DC819748981094BC74F9D691B68 + +Count = 198 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107B9F6B65E4B9343F33387C17448903882 + +Count = 199 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = +CT = 35D7CEAD7DB155EA008D848CAB1834C60C26B6C3D0CB + +Count = 200 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 00 +CT = A725E931A0E103D4B6F4E7B0D69C8209C92CA2A8C4C8 + +Count = 201 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 0001 +CT = 4426F96A072F35CF7A9499225CDDB3A5FD43F157CA55 + +Count = 202 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102 +CT = B15378691AB463E59A38652A602A16120B90273A0E42 + +Count = 203 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 00010203 +CT = B1B971ECE73E76AB3BDC77C418F3A100EF85EAA23F56 + +Count = 204 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 0001020304 +CT = 36E0B2DB67E7A055644E922BDF35FF4CE9508713E5EF + +Count = 205 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405 +CT = 28D1565CED2D3BF5B8534CB5010E244BB3DC4C5DD107 + +Count = 206 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 00010203040506 +CT = 5A8DBE79CDF0677B08692DB36F4865CDEC4E4CC862BC + +Count = 207 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 0001020304050607 +CT = D60875BC195D077A3753D5699925E0D123207979F51C + +Count = 208 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708 +CT = 64BB3CDA2ACC6510A0078D3702E824381BDE092C0284 + +Count = 209 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 00010203040506070809 +CT = CA1261316A9F97BFF24721815F0E592EA98A4FC3D610 + +Count = 210 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A +CT = DF24A5AF535A3844154C74DA1DAC6811A971A24661E2 + +Count = 211 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B +CT = 7C053A5598BEA204FE64BDC86ECFE79CB1B823D51307 + +Count = 212 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C +CT = D82115EDF548F949976ABF04419136C1357F2376DE92 + +Count = 213 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D5304FE322EBB0CCC10E8CEE9E85C1EDB66C + +Count = 214 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C892DBB8AFC4E4DE6191D5A6540F9564964 + +Count = 215 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B3614D90419FA406D74F61B7541EC2112 + +Count = 216 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2DD5113F2575784C63894D27B7D0D97589 + +Count = 217 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B365A66135F08EA35439DE97C0E09FAAB3B9 + +Count = 218 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EEF7FC91BD9B82A3CDC0E20286839FD195 + +Count = 219 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861916DE5452255CD6B6412931300040202 + +Count = 220 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898595745B00E9117C1674D885EB440BD0B5D + +Count = 221 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD037454781E4F6CD3A52BC02D87E46AABDDFB + +Count = 222 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C37AA4DDE64C863E98D5A2C021307FC648 + +Count = 223 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51B6186E02D0858B5CB3B42658217FFD615 + +Count = 224 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F3862575843315F9C162B2CA8A18E6989F327E5 + +Count = 225 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311E28BBB40994D712B185C92CF9F7C3C525 + +Count = 226 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09B280BF003DADCFECE5B5636BFD306889 + +Count = 227 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B59C558B844BDF4312B3DFCAD682CF32D + +Count = 228 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE922FD55F59B09FD252A7010A0BD3CC15A1 + +Count = 229 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AAD5E4C100ABA0729DBB3CCDF9FC8791B8 + +Count = 230 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F122D5F76B7EAFAAD6BCBF0DD288FCAABEA + +Count = 231 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE510769280B391811DE0E733E4998B0CBBE3C03 + +Count = 232 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = +CT = 35D7CEAD7DB14EBA290EE9B86AC6B0F1E37B819662C1C3 + +Count = 233 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 00 +CT = A725E931A0E1C446F43D79985B62645838541066CB96B2 + +Count = 234 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 0001 +CT = 4426F96A072FA52A9437E2ECD1F17312BB324A21C85BF7 + +Count = 235 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102 +CT = B15378691AB46A8370806D4E4990D25C8C10B4B1F85722 + +Count = 236 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 00010203 +CT = B1B971ECE73E52A57986B5B9E5EFB5FA9E26160C639124 + +Count = 237 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 0001020304 +CT = 36E0B2DB67E79F5FEDB489D7A19BD5257F77DA93448ACE + +Count = 238 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405 +CT = 28D1565CED2D7E5CE9134A9D7239AED97C8355009F08B3 + +Count = 239 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 00010203040506 +CT = 5A8DBE79CDF0A3DE15BA7527DB0E7DE9492223EFF3193D + +Count = 240 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 0001020304050607 +CT = D60875BC195DDE88DA03F76B2CBBC2F742EA30D988E00D + +Count = 241 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DE5CCE2E0F23A0A1B8072FD68D269AF5F + +Count = 242 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 00010203040506070809 +CT = CA1261316A9FCF9A4D988A90EC6AB7E8F56A807D6D982C + +Count = 243 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A +CT = DF24A5AF535A101DCEDB81764B7BB50D64013D5698D497 + +Count = 244 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0FA03A7206C600A0BD18B278A2FADAE563 + +Count = 245 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C +CT = D82115EDF548111EABF18021C68000E27B53AB66657A1E + +Count = 246 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C84178686923E225F98FCF6ADEA210C5B1 + +Count = 247 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C8903532880687286CC12CF45E6E1FE181F65 + +Count = 248 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B587BD8490C4151C5F7E9A6C661DC53F + +Count = 249 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D225B9794022783444D2B271A971B8F85DD + +Count = 250 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B3652724BEE855D853415C7AA4543A0E089915 + +Count = 251 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE583A58803DE7A140070A3FF43A85033909 + +Count = 252 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AFD82E7B1D45748724D8418484EAAB99A0 + +Count = 253 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B5EE276DB70B37298AC96E33EB8316D88 + +Count = 254 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A9431758C15D345FD68DA9B14B037E6F57 + +Count = 255 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E54DEBDBD5AAEB8780D7FC862F73F66B31 + +Count = 256 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA898631C2C2C667BB0E2F58566792DD5A6 + +Count = 257 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F3862578428154FF9563C2984971435A2F8F1B8C2 + +Count = 258 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD4ED9557DA7899469CFFCE244AFB28E20 + +Count = 259 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1F5D3087F4BE41B7AE2A515A28566DAA6 + +Count = 260 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B88C6B44770C7379725B7F447D9210F33C5 + +Count = 261 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE92192C6D6EB67BEEE7C710233B9F3814E6EE + +Count = 262 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5BD2CF76F6E7038E02AFC419B8358182E9 + +Count = 263 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0D29CF628E43045153DF6F8B23BC23FEF + +Count = 264 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE51076960BAE6B3C46BCE79B3D2418853ED11C656 + +Count = 265 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = +CT = 35D7CEAD7DB14E4836C63264A30966C5C34C4AECE1D0D4A2 + +Count = 266 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 00 +CT = A725E931A0E1C4F4D865AFE9261C1425A91C8852F757659A + +Count = 267 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 0001 +CT = 4426F96A072FA511F88C2EE72B67F77FA13A57F716EF2240 + +Count = 268 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102 +CT = B15378691AB46AC0367B0854761405ED34F347F24791E158 + +Count = 269 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 00010203 +CT = B1B971ECE73E528C623B65082BC8A5DE6547C4A09C3DBBEE + +Count = 270 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 0001020304 +CT = 36E0B2DB67E79F26DBF03B0CCC3E968DBDE42C99E606BDE0 + +Count = 271 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405 +CT = 28D1565CED2D7E1B8861988F2681713444C030B13D2FC9F7 + +Count = 272 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 00010203040506 +CT = 5A8DBE79CDF0A3184B7EBCDA5DA0737994FD6D26F4DFE68B + +Count = 273 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 0001020304050607 +CT = D60875BC195DDE2928BEA79A8DD5F24B434F3C827210FD20 + +Count = 274 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFFBB8B2EB086D7709E33CE023B22E63B74 + +Count = 275 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 00010203040506070809 +CT = CA1261316A9FCF245EBF11544933CC4843E91AC5CBD00FB4 + +Count = 276 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A +CT = DF24A5AF535A10455B2D0D3EFE0FEBE07F3D231ECEA24646 + +Count = 277 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F14C01C4763CDE960D9CD94F36ED447C351 + +Count = 278 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC68720A102E5AEE74AFED62E95CAFA170 + +Count = 279 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C865BB39CAF17F6E165C02CD2BFD252600A3 + +Count = 280 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C8903197B1A8A0C095A01EDB77A639E841920BA + +Count = 281 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B28AD5F0666065501FF17763126B4EB06F + +Count = 282 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD8BB3913EC48D4A1356761A4D69B68338 + +Count = 283 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FAF74FDB20AE7B434D11CF32E05908E2BC + +Count = 284 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58660070B5AD7EA9D8EED88C192885E79313 + +Count = 285 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF201B85A0BCD07B4E2E1C1459E04F681CBD + +Count = 286 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7953A6B1165AA1DC8C03559EBC0FBD7453 + +Count = 287 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A939FB3FCECE35E8AB562E76DB12F13530F0 + +Count = 288 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E5705AF19F1D14A8E844BCBA82CE2AF42C4F + +Count = 289 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D64859F882C8431DEFC6C292943763BA04 + +Count = 290 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A013077AFD148C6EF2BDAC0A437F83616E + +Count = 291 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0C4D9496493919B1F79B6EE4AA10DB6A27 + +Count = 292 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA488BEEA451F461975E274B5DFBCE6B6D + +Count = 293 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B883049C479642EC2B078032D423E8C478BA2 + +Count = 294 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE921909B28C3627908CAF0901C2423F2A403F52 + +Count = 295 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1F13065A1E0E782A853029CB4CD473F73D + +Count = 296 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0095DB65F4F1431951E15E7D1955657E85F + +Count = 297 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 0001020304050607 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054DA53F82C21C3A4905F8738BDB6DC3E13 + +Count = 298 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = +CT = 35D7CEAD7DB14E481688A07DD865A91B54C979AC8F4AF0F541 + +Count = 299 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 00 +CT = A725E931A0E1C4F45A6C68395DD02892AAE3A59AA2C8EDFE60 + +Count = 300 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 0001 +CT = 4426F96A072FA511D93D1B91A6A1B9825C1C0F33CB7E18B3D6 + +Count = 301 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102 +CT = B15378691AB46AC0846D9689FEECE3FBD2C73EA14D5B7F3B3F + +Count = 302 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 00010203 +CT = B1B971ECE73E528CA00665BBC4E87988624ECC17654A7559AE + +Count = 303 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 0001020304 +CT = 36E0B2DB67E79F267E70A2F66596EDDC24DCCB898FEE1FCE40 + +Count = 304 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405 +CT = 28D1565CED2D7E1B384F1E1FA58FA50C0A8E3FC6785EB5EC67 + +Count = 305 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 00010203040506 +CT = 5A8DBE79CDF0A318911B2E6EEFD7D0C5F47DC376EC30508437 + +Count = 306 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 0001020304050607 +CT = D60875BC195DDE2953FE99FADBE7D35943875DEC17572C282E + +Count = 307 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF7752BB6A5FBF95036F6D5A97F5A0A987D1 + +Count = 308 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B29223CC77BC724BA6174959468C3346EA + +Count = 309 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A +CT = DF24A5AF535A10459FA9EB2DB41082924418110C9E92F087A7 + +Count = 310 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F14619DC4D00D2E51C0F129B1CEAD1798BB8C + +Count = 311 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B3B18A939367BA1EA09778CCF65CC931F + +Count = 312 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B1E0196B9D19EB490CCBD3F3E0D8C3466 + +Count = 313 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A377FD7248D15D33F9EE19C84203A254E1 + +Count = 314 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD465FBD3B71CFE9ADC903F0CA083A44AE + +Count = 315 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD631066A4F94DFDA5FC469CE04E145E20F6 + +Count = 316 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6F262637A8490F690B21CCE0487AEB7F1C + +Count = 317 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A5125517E5A28BAEB101A03B21865777A + +Count = 318 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C2E7DD342066582EBC14ED9D6BF34186BA + +Count = 319 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989B117036EEAA82A7C30B019532A0262C0 + +Count = 320 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955BC8318E8992BDC05FB0E11987BE08626 + +Count = 321 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E570331672D9EFF50103715C82155F4C257FCB + +Count = 322 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D662B6129CCC80651C307826ED7A34C50E56 + +Count = 323 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A32EF322001D941678FC0EC58DFFF9B20 + +Count = 324 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCF0C6462F57D945FDA56B9BA5245969F59 + +Count = 325 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA679C767BE34633161CCAEE66E051FC5BA4 + +Count = 326 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B883040123F9A58AC986738656C5FD355B68E54 + +Count = 327 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098DEDA870B170406D6161694438C41D7834 + +Count = 328 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB945A8C899B87F14093BB5CCEDD3705604 + +Count = 329 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F4B3BE13545F2CF05E8323959C6C91BBD + +Count = 330 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B44D0AA49EF3DAE14EC6779FB00A951F35 + +Count = 331 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = +CT = 35D7CEAD7DB14E4816783981D6AA2A53EB84AD90AABB5FB61012 + +Count = 332 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 00 +CT = A725E931A0E1C4F45A840DD590B2ADBBC4805397592B429993FD + +Count = 333 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 0001 +CT = 4426F96A072FA511D990A13ABAB4898A3DBD355801CEA598EA22 + +Count = 334 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102 +CT = B15378691AB46AC08404AB50F966211DB5A3D17157530B77B3BC + +Count = 335 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 00010203 +CT = B1B971ECE73E528CA034219A2053AEC02D06487253342AD39B79 + +Count = 336 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4904F97D137BD9A1B24E9BA7613251223E + +Count = 337 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405 +CT = 28D1565CED2D7E1B386651B0E90815FD4A934EA60F686E635BDA + +Count = 338 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E6AD6D526BE67970F5D214D3BDBC705818 + +Count = 339 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 0001020304050607 +CT = D60875BC195DDE2953615B7F907641438DC4955C57C29279A13F + +Count = 340 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E196AC3654B8DC9657B36703282D37BE6C + +Count = 341 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26B5D4868D98D3E8C3DEF8E981840D7B6C7 + +Count = 342 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FFC2BF05E579131919A6E3245DD0B2802 + +Count = 343 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE8F401D37102DA5656485B0D274176807 + +Count = 344 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2522C9E332AB084A0DA5FE577470BAF0CE + +Count = 345 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6EE4116312258ED52D4583374B25152A88 + +Count = 346 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395221D4A319EE5660537816AC029872E1F + +Count = 347 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD0143369A2BD16B249C655F3C87B5D6CBEA + +Count = 348 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD636143AA50AC11F5E986B9ED041B3A489B4C + +Count = 349 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF44718DE47D9C2D97B4694620F9FB0C8D9 + +Count = 350 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4F18B53D4AD234A98D1BC7344F9A2205B5 + +Count = 351 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22E3B654BAE4096811165A4885421E51155 + +Count = 352 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989400379F51B7C80B0A7620A4EC11203C8E7 + +Count = 353 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB6C6E0B08C85DBCB772BBE41DE9C32E52 + +Count = 354 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E1BF262FE3AEADA2A69359F05128C993BA + +Count = 355 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624B4EB7FB73A043B44E78BC0C1F51FB93F9 + +Count = 356 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A7004BF8FEC56D9749E840B7307D62AB1AA + +Count = 357 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC15B4383A5CEA1E62BE8AC9ADEE6A40105 + +Count = 358 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9636A6B6A6996B84946201BD2EC74644D + +Count = 359 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406C1E42D7063051BCBAF0AE9753A1E4E6FE + +Count = 360 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D814376585B2D9B6449904C6D28CBC1F536 + +Count = 361 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C1BC76D31CB6E86BF9E981E715182F5A42 + +Count = 362 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F537F953A185E06298013D7BDAA9E52AA92 + +Count = 363 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 00010203040506070809 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469F1D65C895F24C6ADD2473A7AE6EE96F7 + +Count = 364 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = +CT = 35D7CEAD7DB14E4816787F03664F18419FBFBD3DE2C1EAD4947422 + +Count = 365 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 00 +CT = A725E931A0E1C4F45A84F211D0E96EFB72CAF556276D43A8161ECA + +Count = 366 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 0001 +CT = 4426F96A072FA511D990633EF01B6156BCD7317D7BB833CF6861D5 + +Count = 367 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102 +CT = B15378691AB46AC08404F4FD434DEAD6594180C14795942B62BF0C + +Count = 368 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 00010203 +CT = B1B971ECE73E528CA0343BC3F9B9FFF617D2D45FBEC2E0C81F5535 + +Count = 369 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 0001020304 +CT = 36E0B2DB67E79F267E49435EC5B73D66D123B8BC97E7CAAF5EA6FE + +Count = 370 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A91C2940D057ED838DCA26CA07A72C1F81 + +Count = 371 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A640A55630CE0EADFDF0C09289CD6C00D + +Count = 372 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 0001020304050607 +CT = D60875BC195DDE295361AF4A5BBB2F2F4C6510CEB1E621C7425BC4 + +Count = 373 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E1368BD386F8C6FD01163B37E0A1835EC570 + +Count = 374 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD18823FC83F886BDD07922CA49C76CA907 + +Count = 375 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4953AE156C4A331978D8D6C30F66E2D67 + +Count = 376 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5CB4E9CD9471DF1CE11A599A24E700E531 + +Count = 377 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501B18E1C5478C613AF7F9462F6187607D0 + +Count = 378 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E6772432F465E8E11C8D1F59FE45ED7DA47 + +Count = 379 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A7E9AB0BC2C8AF227E22E0BFA36B184F7A + +Count = 380 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E435AEC425949DCF4941A555BD1C14125A + +Count = 381 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD63612528B2B9155B6221253B9935B91043A5F8 + +Count = 382 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF457F9C9FB8EAB9B4717521D43C53F453172 + +Count = 383 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA19C9791AF6D909E5489FB4AAF30C89C01 + +Count = 384 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF57113EB607775DA505BA718270D74F781 + +Count = 385 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F71CBA5F2E8EDB16E04E71152D8273A4A + +Count = 386 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB19B5DE3439F7B0F2403F9F6F74F597E6CC + +Count = 387 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CDA0670398A1B743D43CD6961AD2C3BE5 + +Count = 388 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB018D3A22C89391C7976F56D3C3600664 + +Count = 389 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A595AF6C7CF59451AB48C16E00FF60AEF2 + +Count = 390 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A49CD5C3BBFCA3D19CD1BEF30102F89B5E + +Count = 391 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C4E16CB70087B6EBCA56808E396F88768F + +Count = 392 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFFB773BCDD0CDF916CB4512991FD90E81C + +Count = 393 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D8178A1883F799B5DC508D667ACF2DD645A60 + +Count = 394 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12EA3F56AD72851CB734C6D5FE8FCDFC7B4 + +Count = 395 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323F589C55B961B0857E10A5FD238AD994D + +Count = 396 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB06EA4FBA1D5BD5B1F66AF7ACFEAD1CA + +Count = 397 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = +CT = 35D7CEAD7DB14E4816787F463AD98F1C95F345860603C361429A4782 + +Count = 398 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 00 +CT = A725E931A0E1C4F45A84F2B7B0324BF07147B9BBFF103EA9C7D1184B + +Count = 399 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 0001 +CT = 4426F96A072FA511D99063C6B81B7428C6DC7F48F02B3B2BEA217BA1 + +Count = 400 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102 +CT = B15378691AB46AC08404F4CD7F2AD8584A75717D253E7D8036EFA851 + +Count = 401 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E57FAFCA91DF96F42AA01B74C85D4D706 + +Count = 402 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DDD50718CCD6C87D6EB986AAD1303CED50 + +Count = 403 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D56268CB81F94DA84B7D29364AAFABAA9F + +Count = 404 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604B29F06A98FFF437F8BB24D872E18530 + +Count = 405 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C139855830A6823EEA7BE13674FACA2B9 + +Count = 406 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC00B000CF86C289D4ADC1E60830F1CBDC + +Count = 407 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB0267FAA21DAE755800EE22905344AFCE + +Count = 408 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B1C972C725788A01A8FBC1EC81DEC984E2 + +Count = 409 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D2041A59CA0C6E799153028AF1615A6A1 + +Count = 410 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C28F47D01B6CE26C1592BA9A577341E64E + +Count = 411 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAD1789A4210DE70D4F08019844F65797A + +Count = 412 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A7864281C235EB3BB43B3FC8AEDCC8EF6BCB + +Count = 413 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E45009567D8C4A8F67F0C3765ACF07AF4D2C + +Count = 414 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252923901FF947048AA948F26522A561EBE7 + +Count = 415 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571AFA0EE65C1E41D2C5C4D0A0A8E072E571 + +Count = 416 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1732277DF285E3D2D1AB5BA89CD69D29E13 + +Count = 417 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7CAE25FBDBD045128A60D29EB106AFFF9 + +Count = 418 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88093D4E318ADAB2877D2C4D9AA53215F1 + +Count = 419 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199F65CA992AD4DCE2727DCD9F23F0406B69 + +Count = 420 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF89209319C47449AB69B5650AB872946B1 + +Count = 421 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66BC61EFD1E6A41885FDECF6D30C137363 + +Count = 422 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C67688A415FA69F400428AC2629E232815 + +Count = 423 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C83A31ACC3398B51D4E489CB42AFA76BC7 + +Count = 424 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F4D4D0281350A08CFCCBB5B91125D81C2 + +Count = 425 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C2230191A66E0450B60474681B1B0C0EA + +Count = 426 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884DAE6D10482F593BC7A538AB69EEAB7A6 + +Count = 427 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65089CD91E6DBFACD06E3342C5534CF5DA + +Count = 428 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323291D83A5DC6E4616173A0933E2147124DC + +Count = 429 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB4E93975418EB2EAF9FAABAAD13A824E99 + +Count = 430 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = +CT = 35D7CEAD7DB14E4816787F46E9F04D7EF51E4A0D38CA258FFB8BFD4B45 + +Count = 431 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 00 +CT = A725E931A0E1C4F45A84F2B7554004F58D87832AA4285C92BCAB97F9C1 + +Count = 432 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 0001 +CT = 4426F96A072FA511D99063C675900FE9140A8742C53EDB3D6C9670F507 + +Count = 433 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102 +CT = B15378691AB46AC08404F4CD3126250B5AE725ACDF6F99FEF54C1196CF + +Count = 434 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E399389DF256267D6115760E8425EAE9D1E + +Count = 435 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD47999A040D9567A8F4D09CB088D64D4734 + +Count = 436 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58C5086990480B8B2F770D6085E0271A34D + +Count = 437 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FE8DBE7BEFEF2131F87BCDBFA67E995ED + +Count = 438 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C748726A2A4198383D1E38C1C950FD83F33 + +Count = 439 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC48CDFCC9F2E2B44CCC3685D1343716A735 + +Count = 440 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2C08C4EF7A2415907A2AECF4F5DC79F81D + +Count = 441 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13CBF79C393CBD68BE6E207382B73BEB7F9 + +Count = 442 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B40E3C1CEE8946721A643EC6921E5B26F + +Count = 443 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21E9DF01F43403EC7D657A5948B7D81EDC0 + +Count = 444 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF66936BD9BC57616960535D1DE9E4122FF + +Count = 445 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FA68BA35CCAE859D1F63C17CF1FF508519 + +Count = 446 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501AF7AFD41DAA1F32DBCEE0EA8555064BF0 + +Count = 447 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD636125299973955C7CA24033A35B6F0083B8132898 + +Count = 448 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A32ACE2AB37925427911A14010C3804AFBE + +Count = 449 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F2CD7BCDC4F4F3891D9789F62CF459616 + +Count = 450 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D77933F7EAA658837D20A9D0FAA976CADA14 + +Count = 451 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB1DB6B0315244872F58FD90D083C1C776 + +Count = 452 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA81D62BEF5EFA6BA8949E32B295A7374B1 + +Count = 453 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B982E04F9CE3EA01961D77C94DF373C70E + +Count = 454 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB6685E7188D3EE4E2EED75F2E93E4B17DD9B2 + +Count = 455 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E563E3DE03FFD265F75112BDD4C4D6DFB9 + +Count = 456 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C8918192B85CC1E218BD357AE6EA726B19B2 + +Count = 457 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A3795D4B43BCAE26DE01667D3B9B03632 + +Count = 458 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C98E6B9AC62A2F76F9B14916BFCFC13367E + +Count = 459 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D81788485772B0903D75E702F516CFD7085BFF449 + +Count = 460 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D44E4B9BCF9C3C8808F94B916CB0E17CCA + +Count = 461 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297AFA7A7E61EABCB01EFC15FABA5F105FAB + +Count = 462 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479F93A1BC3E5D04B0695D29A30D919ED6A + +Count = 463 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB6815039497154663E6F7B0CA5CE17056 + +Count = 464 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B63FAF86C45E64B40CD14EFB06F59D04F + +Count = 465 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 0001 +CT = 4426F96A072FA511D99063C6752BD65FC9F7AB1EDB7E9E7148B7EB875605 + +Count = 466 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA9DC0640CF4D2A13CB8B5632B040A45F9 + +Count = 467 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E39102022225815DB471DD96F5DA8E02AB55D + +Count = 468 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D5DB3DCD6538E55FE272C14012CA31BA9 + +Count = 469 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF3E96005AA9B905081756AC7D2CCE0385 + +Count = 470 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB0A761590248E62EEF1076F4DA6D52C3BB + +Count = 471 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A7E502085CBEF1BBDB4B9682018D2F3890 + +Count = 472 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E6B336EB8045ED49AC1720C91A0B89062 + +Count = 473 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8A9478FBB46C91F7D83F6C3354F05759C + +Count = 474 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B49B38969EC9EDD6D0EB437D2241EFB6D + +Count = 475 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EAD96F65C1F751071608E1DF1E5556506 + +Count = 476 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF0951261CBA8F2B0F5E2907AA5A9102B93 + +Count = 477 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68DD5780138B47534602567D7C7C0280C04 + +Count = 478 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA5B893367C1A4E7E20C743763DB0B210BE + +Count = 479 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A890EEE609FAF4971A2681FC097BD73F8C1 + +Count = 480 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CAF36C46A321202943F08C4AF2B51F412C + +Count = 481 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A3283910DCA88657D2199C6D61BC4D069BA1E + +Count = 482 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F32D60D717EA88ADCE56CFFC7F71B97F284 + +Count = 483 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D77908F700EB0E6C811337F4EB3AE6F3234613 + +Count = 484 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB914C1069DEC628CB9EF612C22C4452C896 + +Count = 485 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA852215103AB93312872F869240F6F984308 + +Count = 486 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B9788835D04E4C36BCFA11E97A7FCA9907A4 + +Count = 487 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB668548E1831D622C28AB11F796B36265E3CA07 + +Count = 488 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58BD7BB2F05943D6F5545F789AEAC1BBC0D + +Count = 489 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C89182A65FA9CF04656D7C30D42F4A75E8E7C8 + +Count = 490 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7BFC29D7C0E22B3074F28A04C805E9F19A + +Count = 491 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F9C3BEDA0B4629CCD9D13BF9B42D1340C + +Count = 492 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D8178848521F4D0DA889F8A29F7BAF53288535BE0B4 + +Count = 493 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BFEFDBADD1D73609EFD373FA1E1BF28E1 + +Count = 494 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A2526DCF7B795391BFBD6A794B564E437BC + +Count = 495 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0400E3E24ACD3E192F49E81872CDCD216 + +Count = 496 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E486201057C51E2F61350555A33BB94EE + +Count = 497 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B2D360A19093773F0276367BD6E00DE11 + +Count = 498 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 0001 +CT = 4426F96A072FA511D99063C6752B19EA6CCCAFA0999B405A0F27EEFC7B7083 + +Count = 499 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3F4024BB3A7D297289C91684C7AAF83F4B + +Count = 500 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BF16AC0E349C6E3B6E8A0BAE4F090117E0 + +Count = 501 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45EDEDE6024ABC2EBBC34A7BB7F0B57283 + +Count = 502 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF166F004C1060F9513E71D6F6E4F3B908DC + +Count = 503 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D86C36F9BBEAE394CDD4AA8CFC7FB60A0 + +Count = 504 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70E32AD32BFFB4C2242D2B15010796C7427 + +Count = 505 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF98AB8932D40806889F7C37B5ED26FBB + +Count = 506 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F44FBF95294B4FC942FAAEFB4D80367CB8 + +Count = 507 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07EDFF1F50FB39C63D681D4837CC59BE40 + +Count = 508 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA41A365A98E1BBE8490150BE0CB8C3CCCF + +Count = 509 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C7940C04B2313515D1E7BE79D172EF5D9 + +Count = 510 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D786D83923941EB13544B60778ED67C3D65 + +Count = 511 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564A733C12AB6C1835E8A06E3E6E220FEA4 + +Count = 512 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9991E5DE43620CDCB05F700717A6FFB3A + +Count = 513 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E1131EE06B6F4B360C4C1DE407823D39A + +Count = 514 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A32832690C038AC3D24C7D4A003F561689CA5C0 + +Count = 515 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328C64A1D70C99C9A1FC3702F0D554C63EC9 + +Count = 516 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813EC8A4DC41FE275C96D0076627B6FE76F + +Count = 517 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147143CF8FC0BC408B023F3F62D5513BE49 + +Count = 518 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520E2547640B06AFD2F614F45EEA068D3B64 + +Count = 519 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A79A36413A8E69084FDD5E2174C79E3D45 + +Count = 520 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB668548268F3DC20E47E5519707C04D58A8BFCD7D + +Count = 521 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B840844AD6870C46E8C00C72E0E75E95067 + +Count = 522 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F387F54383E39866FA693916E54EBF609 + +Count = 523 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF97969FE697459510BA517CF28F69B7F + +Count = 524 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A30F23C2DFEB8C9A795A8D6C3A823A415 + +Count = 525 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D81788485218502614590209990C53539546C43A9CA58 + +Count = 526 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA25D24597E56162CF704614A6F9E68BC47 + +Count = 527 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255DFF87FD19FEDC365E37066A22CDCD80C0 + +Count = 528 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC5A921F31AE8FD3B14A87E8F4DA924B0C + +Count = 529 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F61E3770F386BF3DB3675C0C70F043D05 + +Count = 530 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B8795E0B01C023A5C1CDCD582314D727FEF + +Count = 531 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190847EDB9C3701C746E2F8C27299C398798 + +Count = 532 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE377E2179D73DF1E98C771D8CCD999F0DB + +Count = 533 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC41DD7C51438F17A7FE39343FF23C99AB4 + +Count = 534 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D2610F595730D5D153E1AAA2872585958C + +Count = 535 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF163765F21527085809492E6B48A763A38233 + +Count = 536 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D9442B7D3E5EFFA0E4DA3959423E32C7E60 + +Count = 537 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC5CB3DAC8B31B9118FE038838A2F39D226 + +Count = 538 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2A8B2007597AF648AABBD2606728CD9C2 + +Count = 539 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43DA6D650FA7FC4134BFB020C56C325D1FA + +Count = 540 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C936457F3E7EB9BACB26A75572FA1A8A59 + +Count = 541 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA49925924259B4D92DDB9C50F7DF361FA816 + +Count = 542 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CC4134D8D210EC99499DAF74A84887100 + +Count = 543 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF9574C0CA2815453E0052E99611CE390E + +Count = 544 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C21E87779CF06364B7EB6EE7831C6EF45A + +Count = 545 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A30485FE51DA7BE31E0FE87280DD7A7912 + +Count = 546 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E4233663C034680D2122B92C500D93690EA + +Count = 547 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C37FA4C2757F2749042DF63747E58ADC7F + +Count = 548 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC74B7F8F9E8B8D05DC7B8EFC28C7466A5C + +Count = 549 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AADD3F4AC28F8D9ADF8A063932C6FF05A5 + +Count = 550 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E0D1367C9981E4477D53C20502C44CAA6B + +Count = 551 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF687D2D62D022D7AB4D31E98DE07BB9F22 + +Count = 552 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A7116475BC2BE5A521BE62BA8DCFDE9F82E2 + +Count = 553 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B943CF0BD7D5F4BB35753FC65E9846C828 + +Count = 554 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846174FF31419446132E8E1E6E4FB2C105BA + +Count = 555 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A33B94C75A23537D68257DC04A415517F + +Count = 556 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF55EAF753FF5136DAF8CE06D519A097F86 + +Count = 557 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AAB1D278F34069B13166F778C75BEC170 + +Count = 558 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD921186A35CDFD30248A68F61E79613FE + +Count = 559 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E588BE871466FF6FACB109EBCE7BAC797D + +Count = 560 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D248BD71A961E72284AB504CDB05AF7E148 + +Count = 561 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46460D6A42E0F4ED3317DDE9127778E541 + +Count = 562 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373D02DABAE0A1CFAA910629D6C8125BC4 + +Count = 563 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BBD90208C0C1F4CE6E00F8E6049EE7D94F + +Count = 564 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896C76FA3C4A0474E0B369DA810373CB325 + +Count = 565 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FEAD0A12AD31DAF6BDF5D4DE977E516F2A + +Count = 566 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D3754650A68C69C9E72A390A514317B1AD + +Count = 567 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D283A1CEBA0191207B8B3FE1751651DC56C0 + +Count = 568 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CAA270AD5D45C8F0C221CA8BBF0B5AF4C8 + +Count = 569 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FB520D8872660A20FFF19CA35CB7652B6C + +Count = 570 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC5378B1F740276F0650235A073277A4BDF02 + +Count = 571 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2415F50A42C049F1D05D0444F7A518BECD5 + +Count = 572 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D308C5686B83C700736FFC56AAD74BF414B + +Count = 573 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979785BF7CAA6FEAB725C2E79DBCB7A8DF0 + +Count = 574 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A00A7291D08B5A1E10B4A3A66CF3810F0D + +Count = 575 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB928FD12750FFFA71BFE00A63485BD38C3 + +Count = 576 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF6273E4F4B57CD22B8E628AD5FF8867F063 + +Count = 577 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D6280FBB60B39CF908C90D0330DD70D4B + +Count = 578 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B5D37D0150AD45B3C785B52FBE1D3FB6E9 + +Count = 579 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E4209D2AF0F7766B219C3BEAAB77008ECC90C + +Count = 580 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C1C5F0EBE4787E41657803A98538AEBE + +Count = 581 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E2DEC2E97E291E0F1A40A55B71F190AEA + +Count = 582 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA899FAE83E954E7E2022B7773589340791F + +Count = 583 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06D8C3AF19ACD89C26287F543B791D361F3 + +Count = 584 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D8B12D459014153EDB73725C7E9F76F69F + +Count = 585 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A882666920E0D5F01DDF5009DFB5C59CC4 + +Count = 586 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B5AE9A1CF67977B23F203AC1AC1E82CA + +Count = 587 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B84613335B53083F2E276CD28EF91BF4170B839 + +Count = 588 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B2633BB7A73A47702EE729EB0DD21938B + +Count = 589 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EAC4C1B42A0F3E1F6444A7B62E14486A6F + +Count = 590 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEB989F9C37B7F1DE28960D35AA0E800FE7 + +Count = 591 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD45422D9BB0B2ED3D272F8941652CED13AA + +Count = 592 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D22A6CBCAEB8B35ECADDEF04E2FFA6F275 + +Count = 593 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247ACDE956B4162FBA32E5FEE457C095054F + +Count = 594 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E97433F61D801943691694F27F80F8FE42 + +Count = 595 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E3FC2956D5083A3B4AAD1FD53E2FBB662 + +Count = 596 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB61A469F4F750737FFC23E63347FF0E4DAB + +Count = 597 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B19089662143015F78C281B4AA07969E71278E3B1 + +Count = 598 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0A9E6CAB3B53CBA44EAA84E110E9B61FEF + +Count = 599 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D3176B926CF579F8CB3954741FE9F6EFB94D + +Count = 600 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344A5E28D81A0E1F86B240EBDFE0CF6999A + +Count = 601 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA679038BA2E902A6722D113C69DE2B3487E + +Count = 602 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB1F4297ADB5C00EAD2A16FB1CDDCED187D + +Count = 603 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9C3F312019C7B327487AB5EDF100AE1DC + +Count = 604 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F3FA3CF7153166161EAFF747BB78E4E70 + +Count = 605 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A616059539BAA49DC51FAFA23171690A + +Count = 606 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E041CFB0C0AF0C366970B564B311B3F9DF + +Count = 607 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A833C37D80AC498927DDE9034E82E08E32 + +Count = 608 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE2300EA0EBC4922C1F9F342A96E775D75 + +Count = 609 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F241728CF8FEF310AAC4C491CC266F56C0 + +Count = 610 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88C2AF0A0F687415361AFD6682D30D2B88 + +Count = 611 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557C5A4E309CC608A25B069283948B24EC4 + +Count = 612 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E42090169CFEDE75020E502F8D745C0F619D727 + +Count = 613 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3D26CD4BDFF942C1AD11D75FA363576F5 + +Count = 614 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E334D0E15EE39D74A0660F5A0B354E0ABD6 + +Count = 615 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7EDB5724F83F1339C7C04314CA91F2C67 + +Count = 616 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA18F70EE43382F0F2BC7B01F48F1258321 + +Count = 617 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86DF1D57EFE23F047ABD3B7F6865DD7668C + +Count = 618 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A85425C3883476D6AECC3035335EBFC57B83 + +Count = 619 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B455A2875D51E75D57A63868E04E5066AA + +Count = 620 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B84613362DB6A7EDFA217DE1FE1A00742A4D7C66E + +Count = 621 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B00F0D48D63410EFCB4024D13DCDF17DD20 + +Count = 622 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D0D44F81C54EDB0050BA7143DF8F6ED7E + +Count = 623 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4E22633F14D0E5E118D3FD2D0B43F8838 + +Count = 624 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD4552B208A719B8AD0603755B7C73AED17CA4 + +Count = 625 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D276560509A7C6B3BC118B293B3006AA001F + +Count = 626 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA3BD699260AA14FCDA0CEE920BEA26B286 + +Count = 627 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9087AA9D223581F56528C10489B2E2BE946 + +Count = 628 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40CB341E8ACAA1DF9EDCE2C596DFB6DB2D + +Count = 629 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB6102D84008A82B703B4CE36D17A374F0B377 + +Count = 630 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B1908966255D6E6E80BFBA72C216CA44C10EE7071FD + +Count = 631 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDF9E37FD4674F570332F8CBFA1FD355F1 + +Count = 632 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D3171729AD0A928B39AA0962EBEE896F23DFB1 + +Count = 633 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344ABD3AA221599929474930572AFBFFE3039 + +Count = 634 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA67763BEAE560481914AD60EE338342C081C1 + +Count = 635 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB173C7DF762FDFE1840F85A89C01E42BEF07 + +Count = 636 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D2F3C89D4BAE0EC969B84E064D061BC871 + +Count = 637 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9AD579353A47FC620ADABFEEB1F9BDBD35 + +Count = 638 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A644B4617810258BD02DD4B42DE1DD16B1 + +Count = 639 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FA55C7E3EF05E7D9728CDBD962F40070E0 + +Count = 640 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A828CFF6789F2050343F1DB09C092C203A3A + +Count = 641 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE71E61133286A3B67F76DC0A19FBF191CDB + +Count = 642 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E5AD654F85BD9D208C8700EA731D763F3C + +Count = 643 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7657136021B21847B10871EE8F2C4364E + +Count = 644 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F1040DCF5FDD9F5908FDE8ADDF8C4E29DB + +Count = 645 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901996AD3944225C594CC946C5B8DFD97BBB6 + +Count = 646 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C0BBFE22246FD5992A41B69D0B3BE52E8A + +Count = 647 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D3477BF21084215436D44D1ED202595682 + +Count = 648 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D2DA517E1B4DCF23786C5FB16A709F9F44 + +Count = 649 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191D6F199B48F56AB7400F22BFAF367A7B2 + +Count = 650 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45C7932D4333776DD9F1EEF90F569FFE10 + +Count = 651 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A64A99FA40C5965BB45F9795009693A8E0 + +Count = 652 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454D3A1AEF00CDAEB0C0EE97CDF21515525 + +Count = 653 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627C0384382AE96794DCC50892C7CA1CB12E + +Count = 654 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001639190A318CA3B7B13E98573173F525AB + +Count = 655 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B723C476FF22D3D02EA5A050933409028 + +Count = 656 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF480FC11569EE441D4B3109C5B52407CD0A2 + +Count = 657 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD45521868D579956359751412BC95046DB43C7B + +Count = 658 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763C46DF3414CA7DABB61D26A515A44BADA7 + +Count = 659 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC8EC8B2FA3773268723AD493F87CB09B + +Count = 660 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C671F1C055C25E1E77A015558D57C5502 + +Count = 661 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A767B07EAC4731CD7BD22E224F606EC372 + +Count = 662 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB6102832713466AEEF04592581CDFD890A60DA3 + +Count = 663 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B1908966255062B723BFA84D0781AD324122347142A6A + +Count = 664 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13D9083C51FDF0C98D3095BA282BF275E + +Count = 665 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D317173150FF63D63BE2BCB60CC19C00C3040662 + +Count = 666 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF5C47CFC5080E4D4C086C28FECDC56AF + +Count = 667 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771E14CC733E2485A7CCF1FD745182B4A8 + +Count = 668 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315A9DBDC9225180D4CFA62D73DAF7A2622 + +Count = 669 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25725DC24BA7ACD5BE184877622C376AF60 + +Count = 670 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54CC5B9D9F1C49B131184F3D65FCB6D926 + +Count = 671 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6771F2D3FC6807761DD899E815CFFD0D080 + +Count = 672 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA11CC170A51E3579D17329E0A6E4E64A5 + +Count = 673 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A828635D4F308F938DCC1573DD693B2462F1F0 + +Count = 674 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184C07BB265972A6FFD26F8720E29A16555 + +Count = 675 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568F0CCA24DDC07CBE1C7E6E1F29C2D578C + +Count = 676 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE0A83DB4B4597BC02E1B31CFECE335D3E + +Count = 677 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F4B6C85126EFBCA5741CF4655F7BAE93E + +Count = 678 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AFC3EA9498BB8A504E60D5E586B8D63A2 + +Count = 679 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00C07A179D0DE3BAB8D4DC5A70A889217AA + +Count = 680 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389CE4A26604D86235FCA78B53C1AA48010 + +Count = 681 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D232A586939C0B58B0E5EA5F194D313D0040 + +Count = 682 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C5D165E6532CF0C4F6EBF1D94E2674B314 + +Count = 683 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D4571BB0B3A7A2AB4FE68BC7FCDF07ECBD267 + +Count = 684 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61E3F5680A0B950DACFBCC06AA99094F4EA + +Count = 685 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454212C190FDF96870A2C3F871959BB68FC1F + +Count = 686 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB3ADE236785CBE99CF09C6133E05F9AF57 + +Count = 687 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B0016492AE0F277B8261E1FB3BDAC45B7EF492E + +Count = 688 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B53277CB77F5A737D1683B4B41AC99738BA + +Count = 689 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802BBC1F6BBCC8C6B5FB7BC5FAAA89A10D9D + +Count = 690 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD45521863CDA4E8C619769BC5A61D21E7D6A44886 + +Count = 691 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFAD2482B4F51571CCF116A8A281BB741DD + +Count = 692 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC4414B9620F8F16F01881ABFCF7940F066 + +Count = 693 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0A4D4EBDBC0BEBFF877090C201B3C5FC05 + +Count = 694 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A703AB19CE2B4AB27724C26C9BE762BD4A28 + +Count = 695 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D48AA857C5757C02173AF15FE31319153D + +Count = 696 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FDEC05786C2FDDEF37CB457F4D201492C2 + +Count = 697 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13B9AA364FA993E1626B3AE6C67618BF1ED + +Count = 698 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DD61F7D48912F89FAF539CF81E677F9B9 + +Count = 699 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF33A0124A003EBA4FBCB6E1CC4B5886FD4 + +Count = 700 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771D8CA76997AFD365F41DE7EDF071DBDCBB + +Count = 701 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FF3D1C7D41426FF7B26907B088A29D6646 + +Count = 702 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745040888C1B211284DA55D64629ADB4E5D + +Count = 703 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9DF2F14CF30E1A2772955D3BE1FB558F0 + +Count = 704 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BB5EEF65473675A9DD1ECEF089B09007A + +Count = 705 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9D123205DDB901382CB8C5CD7520796D48 + +Count = 706 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A828630336BED6E2895A65B29FFDC1ACE43BFCDE + +Count = 707 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D50BC0FCF46149BF6CB5FDB04CC2CFC309 + +Count = 708 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8A778DB00B6BA0D0FA00DF20508995ACC + +Count = 709 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3F39E456580529DAE5737DF976F56C192B + +Count = 710 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6FEA150D0B0EDBBA3117C7FA1D0A414340 + +Count = 711 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED8665BC736A87FA9FD95D77692ADA5339 + +Count = 712 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF27DC6D45C877F7E678F88CD3799DF5E81 + +Count = 713 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389364B1D5134DE1651900ED690BDC40EEE7A + +Count = 714 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264E11DDDBCB7036DF24C6F67153AF0D6E4 + +Count = 715 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59BE23A5A17CC83D03D02BB9E2C0FDBDDD7 + +Count = 716 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F38CBD2841C8514C2A3104A69445A1897 + +Count = 717 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED9D6665C7BED65D3D5086DB1BC1FCDE8D7 + +Count = 718 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214BDD6833AA1260DC5E70648DAEC6EDE16E + +Count = 719 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D50128ADA7929740878CCD4125140DE3A + +Count = 720 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BA96F4158F15D9CF78003B46B21DD38B38 + +Count = 721 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B5358D52409938A275270F0BA2D217B82DE16 + +Count = 722 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B730CEF2C6AB3CE371857AC2A04162C229C + +Count = 723 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBCFEB6894A8C13D20A730F6D45087E1E + +Count = 724 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CF5001409547AD66825A261C5DA3F4475 + +Count = 725 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E433463B15A9C3CF8433797FF3317C4A3 + +Count = 726 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD07D46A28ACCEC2AD502D8D5623FF0D3C8 + +Count = 727 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A703862E09F0CD5A8D355E56C2B32CB7488E4A + +Count = 728 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41AE39B5955C68BE5A22165ADEEAC8C529D + +Count = 729 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4B512EDB6BD12C3BA707BA332361300D35 + +Count = 730 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA73670CBF80BDB19DBDB132216897596BA + +Count = 731 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC460319A0E89184322CFC49E8608D169B6 + +Count = 732 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38287762CF0460C64ED3B83889BE059DDBF + +Count = 733 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA2A77473E4E8E5A877BA78CFED837FBCA + +Count = 734 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD011168793E048FD049C6405D4468DFF4B + +Count = 735 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D257457617A377A0BEF5CEB1DD4256B9E0A47394 + +Count = 736 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7413F06B127D09559297026AE50A9E863 + +Count = 737 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE5B86E8A92C250B9F13215787ACF008D8 + +Count = 738 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB56E62C531B91869BFD70982E1EE0F138E + +Count = 739 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A8286303844646C79CF012FECCCBDD5AC3B1BCBCA5 + +Count = 740 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D575CF3D9B130E2A0D1A57EA5628197F1C10 + +Count = 741 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C2A732BC8808A5F81F74739690CDDC29D7 + +Count = 742 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF0A742D34FDC22D7E48DF1FEE2E9AF71BE + +Count = 743 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F771D665C550E4C1AD5149F4184B4898329 + +Count = 744 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1FB7A5A333425F34277CFF011929FFEEB0 + +Count = 745 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A957945D297FED84D13B14F5C9A7327E17 + +Count = 746 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366DB711E81C345BD55F5C005FD4FDF4D330 + +Count = 747 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D2326474000FFA664E13D03F877AB277F1B6CEB7 + +Count = 748 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B75BDB6FDDDDB20B82A45CB1F229E1F7C2D + +Count = 749 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72A4F19D9DDEDE2B96FB4670CBBA396AD8 + +Count = 750 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED9910D30523DEAE6E29E062DC1F2CA93390E + +Count = 751 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B86BF18C3B153467A377BD31CBC50EAE46F + +Count = 752 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08C36A99601F4FCB1FEA61BD9CF2E92773 + +Count = 753 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABAF9E27D83590AA4FC09E1817321AD161F + +Count = 754 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B5358294B3553524846EE94FD7494599A70190A + +Count = 755 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FD1AD1A9575E52A9BDBC791ACA90A956C + +Count = 756 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB9E3B456AF2B92A48F0E05594CB8F4BDD + +Count = 757 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB9343EC01275DE864CB28F4B8328BF0902 + +Count = 758 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B8DBF5CCBF6F7F5917AEE20B60E4C8126 + +Count = 759 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C15CA4DC531CD904478ABFB76B527ACCF + +Count = 760 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E70941EE21809DF01629DFEF710916C802 + +Count = 761 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1607D6B15E447C114247273A987A826850 + +Count = 762 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBBE3459EE05CF2299D82781EE69EA8DF33 + +Count = 763 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74D610B9AE1A0C5C6EE52544E5EF1A3E13A + +Count = 764 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E27E5DC4010526DC61BD77E4D60D4838DC + +Count = 765 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298271A90ABA3697CDE45323A76EAA9EDD4 + +Count = 766 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02A2CEA9C744D58E31C9B7C404D9F165D4 + +Count = 767 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05EE3D454C28C146559DA149DA53689AEBD + +Count = 768 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F1C8F448C5531D2D93403BE449D018AED + +Count = 769 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F67DF4DD2DBE462111A0382D26D9829B73 + +Count = 770 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB70B1E727C4FB631F3B4733620CEDD37 + +Count = 771 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB5552199683ACC403BE4374E74E0650B1468 + +Count = 772 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494B17A2B0898BBEAE343DE302DDC6A5B6B + +Count = 773 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515BC40C7ABD680D427BE9E52BD01F94972 + +Count = 774 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C2DED859316FC1684B743590EB62DB34E + +Count = 775 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02B32554D503F122A2FD696F6D7F5900830 + +Count = 776 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5BD6BCDDA9F3B7E31FCE087C0F0CAA7AF + +Count = 777 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4EAB32E75D27A7B27647C82FF97D5BC1D2 + +Count = 778 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E81C3BBADAD4B4B2043233FF7828928D2B + +Count = 779 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D6013F0453DCF8AD527D35500B55C3B1CD8 + +Count = 780 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DC743D48CB267A5D73FD4576E57415B32 + +Count = 781 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750CC45F52878671A344176D0F7D88D47BBA + +Count = 782 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDF4AA3764A81E68E0EB49A0EBFF679F07 + +Count = 783 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B68C97839C0E2548FB36106CF6F4CFCDE3 + +Count = 784 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861EF533FF6E140CF85E777A65427CF01C26 + +Count = 785 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D09A4AD7E7B7296508BE1067A09F38264C + +Count = 786 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0037BEF6CFC44E65227904FAA8D2F5A3D6 + +Count = 787 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B53582915726347DCBA4209C632D7FBCB3043B48B + +Count = 788 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1172E0A03EE1E18D58AB63FC9AB00D6FD + +Count = 789 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB13DBF3F8D250053D6284227E998B1B6FFF + +Count = 790 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99BE556BE5E321247C328A1788AB4423708 + +Count = 791 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B488A4C31ABF390F1F73DB59EE385FC68FC + +Count = 792 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24969B8E06D6D563B1D66747C7228CCEE9 + +Count = 793 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBF0261FFBF96433FAB827ABC23A3E9A1B + +Count = 794 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1685439BDD9868F672F6F698AC67A74EC97C + +Count = 795 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB485523EBAC2D75663EDC45626881C86423 + +Count = 796 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBF3227B9F5E199D98347241FD250CE3704 + +Count = 797 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4621231CE502906BEF1B3BB712FD89DB9 + +Count = 798 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BE8627612295370D112C22A2EA280326C9 + +Count = 799 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F7F125B54A74522650EB7BD95E67282937 + +Count = 800 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96EAE7947E74B34CEBEEFC8482E670741D + +Count = 801 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E759BF8285F5049E0D4FF370F19137599 + +Count = 802 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A2012E4B574FED2FAF209EB67DDFF7483 + +Count = 803 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9A3C87CC193BAB79E2AB3DDB2464E2C95 + +Count = 804 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF46624CA2818DF23BE61B145406AB07BF + +Count = 805 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DF9DEA8150AA01B466582EA9E8A3E588A3 + +Count = 806 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D90C335F099FF4968EE5A945C373346A6C + +Count = 807 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C21B8F6EC60AAB19B6FFE861DDA06CB2C02 + +Count = 808 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB8D01D4D93BE0A95B04BBFC1E4433E5794 + +Count = 809 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C1287D1B7CB72ABDF6EDFB01571C7FE094 + +Count = 810 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E7906FB787AC86F3EA560F8C613C93545CF + +Count = 811 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D4DDC81517E99611FCE2C3A0DE68096953 + +Count = 812 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F6C5338E81EF71B49EAA51BC68739EF93A + +Count = 813 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF4966C086F38E4CA3CF5E53A345BF412DE + +Count = 814 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C2837D2CCBEE7654F866EB35770BF426CD5 + +Count = 815 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBB703B692FEB4267D275B5AF43DAF0E837 + +Count = 816 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B6454169993341B14CCCE8F3AB011DAB2ECA + +Count = 817 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E8447A952E4FACF2F7BB5ED3FA3419A9E27 + +Count = 818 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07FE9241DE731EECF2E02DE35044D5E81BF + +Count = 819 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA000020151B40077776C50E9A7415DA18BD24 + +Count = 820 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B535829152259D3583D80BFA90513399C587667ACCD + +Count = 821 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA16595B2AEDD56B813CF1F988C529DC52BD5 + +Count = 822 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130CDE732D6F88420CAE001A4B9E9B1F400F + +Count = 823 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B648C47C4BCAB45090ECDA251EF92224A04 + +Count = 824 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B4847AACE82AE1DFCE7697921D4FAEF53BE8C + +Count = 825 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F1011121314151617 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C2427ECB5BEA0F34E3F61BA712BCDC7E2BA02 + +Count = 826 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBB2E61D0E7C5C3E72D1ECEB5A5AF945B971 + +Count = 827 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A16855294752BC3623417BCAA7A3DB1B136C384 + +Count = 828 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB48A76C4D19D26065E80B6DC3417529AA77FD + +Count = 829 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBFC71C7EECAE04B0D692F3396A1DC31EFCC7 + +Count = 830 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4942EA964B0EA7C689BA2C26095C5C5FA7C + +Count = 831 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BEB042B6DA6FBBB2ED7C5019A5CB46F16E8A + +Count = 832 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F79EF3149A7A960747FEB1ED506027619EA8 + +Count = 833 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96BE626C7670966560B7CA848E112EF52893 + +Count = 834 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E884AFE3BC791FD99C6C68FF1706D2E0373 + +Count = 835 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A00442B6BAFDABBD6A796A490363904279E + +Count = 836 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9D0C21F48A21B18847B91EF677961C69ADE + +Count = 837 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF432405B9F8F7B41CDDE9ADDD8D5FB1802C + +Count = 838 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DFA173A8215BB6A5E85306E6139079A01BD4 + +Count = 839 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D9B43F4E8325D263C055FC1AEB69F6401611 + +Count = 840 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C21635FF210F079AD95380D3E886E3995C2B5 + +Count = 841 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB83B77D0ED07EFFE3C47B73E6BE12A6FD576 + +Count = 842 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C15B65841E6774B5C92E0608CE4545AD36EC + +Count = 843 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E7991B2A769183AD3200986969C6C2A876362 + +Count = 844 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D485029559823E056F8D5C8F76C939CCF751 + +Count = 845 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F60396335695FE559929C6135C28509EBECD + +Count = 846 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF4456BF69972F5115CA1A408B186BD9FEA14 + +Count = 847 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C289BDFE1D610DCDD4EA54A2658684AFDCE34 + +Count = 848 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBBA9724DEBE1CB2E87BA7FB012ABED391BF1 + +Count = 849 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B64502354CE3ED80DFAB07C295CD4FE7497E6D + +Count = 850 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E84F3DD544032DD79D84A5D7B8AC6BF6BCF20 + +Count = 851 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07F8A1DE9158ECC96E7942CC26C1D620A44B2 + +Count = 852 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0000AFAC3D83B37A770B5F6616F0F28C4E93E0 + +Count = 853 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B5358291522861A7476C20059DABA7CF71A6F35DAC508 + +Count = 854 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1654B277C5EE5214A03EACAC3553C44475A7C + +Count = 855 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130C3CBC31F7A8F136FA62A3597C3525A6B559 + +Count = 856 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B6473FC97AB6716A3095773396936D96FB837 + +Count = 857 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B4847141590017A6F9A0F98079B00BD71E4E1FB + +Count = 858 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24278CFD70497A09EC2A38BD1595D0A9639298 + +Count = 859 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBB2FF791FDD370E07D53B69680728F4E6849D + +Count = 860 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1685526B857CEB81064E73F01DC3484DD94D56FD + +Count = 861 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB48A77543D2D8EC2D6075E283E54C995D74815C + +Count = 862 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBFC7E71CDF8469AB650A9B2F00A7DDB10BC73B + +Count = 863 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4940E156A713FFCB09197AFE16A11DE18B40C + +Count = 864 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BEB0D726E0B5BEA883F469214E80AAB5E94D13 + +Count = 865 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F79E518BC46B58FC7336B92944FD7C2BDEBD0F + +Count = 866 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96BE4BE98C2D4D9CA085BD235AF9538DA49C05 + +Count = 867 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E882C8C8C7A9284812839A937287054EE0173 + +Count = 868 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A00A02D75ED8983D344B207A91B9403E74F4B + +Count = 869 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9D02BE3EBE226D74977EB8CC3A1F0B902783E + +Count = 870 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF4339434226830999386DDD725C655516660F + +Count = 871 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DFA13484EBF33B8AB7570E95F52DAA43D4C830 + +Count = 872 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D9B4B13F1CE26C9E75D14E83B2D477889190A8 + +Count = 873 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C2163B50B8498FDA031930557650FA216A816E0 + +Count = 874 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB83BDCC7A37B62D8DB5AA62C0619DD5F914382 + +Count = 875 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C15B6F435B013A271D5172D2C6E34B06822A4C + +Count = 876 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E799183D729B71849ABD248EAA594087DF24359 + +Count = 877 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D4855CA2D99DC4433C0C87E259F71F072B375A + +Count = 878 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F603A96E42964A3F3203B8931E7A9C672FF467 + +Count = 879 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF445D06523455C134815D4AD816B6AEBADE284 + +Count = 880 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C289B5B9D976587FCD4136C196B3EE2171806D8 + +Count = 881 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBBA9163723FDF766BA7EAD01A610E5AE7D895C + +Count = 882 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B6450226043D7DFBCBFA5219986180A7826BEF41 + +Count = 883 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E84F384A9AF819DEDCD82A2DAB981D339925CAC + +Count = 884 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07F8ACDC8A7E97E0AA9CE9946E21866E674A648 + +Count = 885 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0000AF575B434BBC1819434032FBD4E83704040D + +Count = 886 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B535829152286025BBBF9AAFE91D859D301AB00C670640C + +Count = 887 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1654BE172AF9826BADFEEEA64CDD61A77D715AE + +Count = 888 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130C3C670F82AB3A3D554788D8A3BC4427D632A1 + +Count = 889 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B6473CD5BFA8B372CA380D4087970BB555CFC7E + +Count = 890 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B48471435B751D506C0AEF4EFF7B775A4D113F472 + +Count = 891 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F10111213141516171819 +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24278C95D2A6C5E4B976B41C83D913229D31600A + +Count = 892 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBB2FF618E2AF65E29309FE88FBB0421098E1255 + +Count = 893 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1685526B320DF93EBD21B23B0A74B8C9F03AFA680C + +Count = 894 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB48A77514751486AA75C72DF8214D3B02D27D80A4 + +Count = 895 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBFC7E7823DCC0FDD473750D9627B5AA82F836F2C + +Count = 896 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4940EE31446B187DDF97DD1B1B7C2026EFF4987 + +Count = 897 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BEB0D7615039A67AC339541C55A6FAD3BF3C9E71 + +Count = 898 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F79E512B5DA9189111DB332BB67C18F1336C214C + +Count = 899 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96BE4B713674D0FB7D278995FC72A48BE79FA651 + +Count = 900 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E882CE8FAFC5213A17DDB2E6C4B61098A9FE46D + +Count = 901 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A00A00E724D6891751087C8E523665484999CF0 + +Count = 902 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9D02B5E6FFAB730EE17A104C3CD3D9DB9F64D5E + +Count = 903 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF4339BFDF623CE5CBF23677788A5D06D596AEF1 + +Count = 904 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DFA134C1783F68E09EFC511068B91872A0B3D523 + +Count = 905 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D9B4B1E45A696C01ABFA186482954D354124391C + +Count = 906 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C2163B57F7859CEE6DAB68505A2B8A35C54EE7DFA + +Count = 907 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB83BDC925982F942090C8743C2FA63633FF615E3 + +Count = 908 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C15B6F50C4080E7826006226E032C51E75DBBE53 + +Count = 909 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E799183FF525C2E9A13425016ED1A3E619BE140CE + +Count = 910 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D4855C24ECD759322633CDED5920C7EA6FFE825F + +Count = 911 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F603A9DE2C869B9A3A6B8158D69132904059582D + +Count = 912 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF445D049A242AAC1EA88ECDDCB83711909443B27 + +Count = 913 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C289B5B7DDE77A0E4C85654C68B02895A7C20E22D + +Count = 914 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBBA91614ACFAF69C187898C2CF1CF185188B6C85 + +Count = 915 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B6450226C5388BC48A2FEC39CACA19DB26553672A9 + +Count = 916 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E84F384268673D5B23FE78B2012C0476367D5C681 + +Count = 917 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07F8ACD055F6275FBA2A5F6804B2D18E1C0353991 + +Count = 918 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0000AF57D0EF0D991525B25F0617436EA9E4C40414 + +Count = 919 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B53582915228602BAD93D5BC70E835B51D4E717CDAEBBFFC8 + +Count = 920 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1654BE1DBB0B03D2DDBB0282BA22ED47BC7D5BA8D + +Count = 921 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130C3C67E1E42A1F79A2258B98F1C32E0BAADDE5BB + +Count = 922 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B6473CD23AE1A739C3CBF95B2F808A2ABBFB9652A + +Count = 923 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B48471435D2462FD5B5210CEABDBB6CD42A21973D6D + +Count = 924 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24278C95396C7C4FBD9E56E460920ED42460286273 + +Count = 925 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBB2FF61D601FC8D935AE115FC68FA809EA1919000 + +Count = 926 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1685526B325503A5BA3F6B50C8A57F2035807BDB2E7C + +Count = 927 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB48A775141E8882CC4D961AFD82C912086FEDA9949C + +Count = 928 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBFC7E7827797CEB2064A4B1F564C24A1CAFA13CC43 + +Count = 929 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4940EE362BEF959711B240C3BC7E52C60AD791669 + +Count = 930 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BEB0D7611ADEE07BA96159FE1A8F8371F35F52FE7B + +Count = 931 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F79E512B9081AEEAD33C68AF7C6DE6C666CB289DE7 + +Count = 932 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96BE4B71D20FC28320D318C4D71C4976F96FD702E5 + +Count = 933 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E882CE8D6998603DDE922955CCB76D8725C2A2CAA + +Count = 934 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A00A00ED4499479CC1001F8341116AF9B24F7BEFE + +Count = 935 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9D02B5E20565DFFBE6544DA845804A8226104DE97 + +Count = 936 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF4339BF5601EDC543B6A92EFCBCEB8F0C9EF9BF0F + +Count = 937 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DFA134C1887884049A9AB0D8494AEBA8774CFF008C + +Count = 938 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D9B4B1E42A9D43B5C6CDA79A6A339824CB04987E35 + +Count = 939 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C2163B57F186A9822EA6C684361A395381A5E0BABDC + +Count = 940 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB83BDC9270712B41E8B77D57C4F114AE43E2E8EBA4 + +Count = 941 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C15B6F5071B9358EA104014C4CBE6D2CA19AC5B093 + +Count = 942 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E799183FF47AEE72E57C659F3C43FF6E8BE0A243BE3 + +Count = 943 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D4855C242BFC55AAD3EF3C5C00DC74A863A4E0DD28 + +Count = 944 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F603A9DE037533D8925587278CC5889B95D2D961B9 + +Count = 945 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF445D049BE21227510F979C4EDACB5E171055D9E22 + +Count = 946 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C289B5B7D9F5D9713031EA86095DB2680989F4A7DC5 + +Count = 947 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBBA91614508B32298E2C5067AC946C0177B6531346 + +Count = 948 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B6450226C5DF82E4819FEC617BE12785CC9912A737C0 + +Count = 949 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E84F3842627D1672771DDAD37804BDA50047078EF8D + +Count = 950 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07F8ACD05355BAE4472689D5A3E25F96806CDC128B5 + +Count = 951 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0000AF57D0A16DC3A871B0C9156386A2DFBFE949454B + +Count = 952 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B53582915228602BA6C8D90F610D6B809C130BDC6A58F4C1705 + +Count = 953 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1654BE1DB67AC2FC2C5775D4892733E716E9C3476DB + +Count = 954 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130C3C67E1D1D7692B93FFD21A5B09E836DE2ED82342 + +Count = 955 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B6473CD23FA90E8801038161C888FCCC61093ED97A6 + +Count = 956 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B48471435D21AC86405D8633B765DBA54CCFAEFC61D35 + +Count = 957 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24278C953900708D73678561D58F000B2947246B9520 + +Count = 958 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBB2FF61D6F4E46AE3E4E09C9086B8C0A1104674F7AB + +Count = 959 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1685526B32555045A364085E5A7F9862C1360E0D1F5DCA + +Count = 960 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB48A775141EED0A6E55536B55EE14E1CB0196756CD8EC + +Count = 961 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBFC7E7827786532AD1FDDFA552420E08917678E53782 + +Count = 962 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4940EE362E5EA5BCBF7C268164041E925D916E69775 + +Count = 963 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BEB0D7611A97E551CDDD5F8B13A65518F50CBA31970B + +Count = 964 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F79E512B90EDA50007834FFADEF42B3EF8C93FEF71A3 + +Count = 965 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96BE4B71D2413395545AAF23E2007276B2A690448759 + +Count = 966 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E882CE8D62AF57A18DE0800CC731FE304B6FD925626 + +Count = 967 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A00A00ED4EED52F7447E3DFFD19163A00B513B14C9F + +Count = 968 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9D02B5E20579595A3F38CBBD4F88EB7B967DD555BE1 + +Count = 969 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF4339BF56C32EDD79AF4098E217C976389DFFCE7190 + +Count = 970 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DFA134C18826640D8A06E581BD20620F8219A2A7B1DA + +Count = 971 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D9B4B1E42A067198E9F827C33E4B4192BA44A14748E9 + +Count = 972 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C2163B57F18FDBC34980E8700FDD27925921F631E33FB + +Count = 973 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB83BDC92708589EA0C1FA6EEFDCA2E628C91A4B7E2E8 + +Count = 974 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C15B6F5071C5A3046695D23283B89E72FA1079604955 + +Count = 975 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E799183FF4712B70ABA9ABFFCDF6212A43531BFDD71F0 + +Count = 976 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D4855C242BEA73A61A037F447346B0591A3B5A79535B + +Count = 977 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F603A9DE0353CF315A892C002CFC48B9A5E96E1D5FB7 + +Count = 978 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF445D049BE141486845D00714E0EC920905B9B8AEE7F + +Count = 979 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C289B5B7D9F85F731EAD083C51C1F3D4B702E0C5CEB8A + +Count = 980 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBBA91614501AC3E77839E574FA9D7ADD25FE6F70516A + +Count = 981 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B6450226C5DF36483C8C62E4347AB8939EF91DBB47E29C + +Count = 982 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E84F3842627AA9462AA1CC949204E5C7BB565D47D8238 + +Count = 983 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07F8ACD05359897E281CE65904E940FDEB9F1472FBB92 + +Count = 984 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0000AF57D0A11E96BA966040A7E04E6F7E0D014F3C6515 + +Count = 985 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B53582915228602BA6CD795773895DBA3FCF4EA8836A21DB04B6A + +Count = 986 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1654BE1DB67556C2D873888A7E654223E927F6A064F6B + +Count = 987 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130C3C67E1D148320CFD07E8103AFBF1B436434AF15E69 + +Count = 988 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B6473CD23FA74FC53C7842DD67EBF7F5A443257C81C1F + +Count = 989 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B48471435D21A4BA37315F5521B7B0FE1C20AC216D2496A + +Count = 990 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24278C953900F7A1D2BD913C2BF7824695CBB21E3EF7DC + +Count = 991 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBB2FF61D6F4AF017EE2449038D2610DA50AF512955078 + +Count = 992 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1685526B325550C2888702703F9E8ECF28D727BC5CAC20E6 + +Count = 993 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB48A775141EED5275E9D0A99AF622B0526FC1C079077DB6 + +Count = 994 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBFC7E7827786B1482B7778D63F6768E60E6B6AC078FD9C + +Count = 995 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4940EE362E51471602E2F397FDDBE404542D16EBD7CDC + +Count = 996 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BEB0D7611A97883E9CEC7D2C7D8378EC22088CFFCFC8BC + +Count = 997 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F79E512B90ED13545E44452CAA6A070AAC5555BDFA0CF8 + +Count = 998 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96BE4B71D241C5B74453EB6C5DE69604A0FF8E94E84EF0 + +Count = 999 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E882CE8D62A42D36D260AFEAF3363B5523F4A561A807F + +Count = 1000 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A00A00ED4EE6522FE27C32893043B5625C4C50EA5D1A2 + +Count = 1001 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9D02B5E20571DEE4659265D61E8499B053C90591BAA58 + +Count = 1002 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF4339BF56C3363C453C854963114871C7DAEBD139BBB3 + +Count = 1003 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DFA134C188268814511C0D1148B0E07D256E713DA67EBA + +Count = 1004 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D9B4B1E42A0623FD2B905CBC170833D50D2BFE8436CCFA + +Count = 1005 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C2163B57F18FD2275FAE299B8B2FB5A970C5676E97231D8 + +Count = 1006 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB83BDC927085C743CC8D3A1373B77AD91804DA26A402BD + +Count = 1007 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C15B6F5071C52EDF2ED1A8F42AA9F370C5F611C6C06ABD + +Count = 1008 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E799183FF4712DA93DDD7B5EC28FBC7C6242F91051821D9 + +Count = 1009 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D4855C242BEA3B8D49DCF1A6366E314C708FD8E6B3FF7E + +Count = 1010 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F603A9DE0353A13E4C3A6A221B3720A212A3B866913799 + +Count = 1011 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF445D049BE14381BC299EA05B4481E46065AC182BCF60A + +Count = 1012 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C289B5B7D9F8518872CA509FA76E955035282C573242703 + +Count = 1013 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBBA91614501AAB8689803462E0E58580F489F6C529D372 + +Count = 1014 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B6450226C5DF36AEB64B827270A0EAD105008A45A24A37A9 + +Count = 1015 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E84F3842627AA144AF2F85781552EE93145BA01E4020A8F + +Count = 1016 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07F8ACD053598B421E5F2028E64B6FA907D7A37511E4058 + +Count = 1017 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0000AF57D0A11E9124031834372432CE6A693F6DB0E253AF + +Count = 1018 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B53582915228602BA6CD7135CD10023C52AFE239ECE78413AD7E46E + +Count = 1019 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1654BE1DB67555B95DB6B4F84D1CC19F8BE142A7F2E012D + +Count = 1020 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130C3C67E1D148F4679B4FE8601AAA76BD9FA6793F657F94 + +Count = 1021 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B6473CD23FA74D3649987D35E8D373132D084182269125E + +Count = 1022 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B48471435D21A4BD75AB86AC0105848948354F920D474E05B + +Count = 1023 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24278C953900F7CBD0E7C86B2775ED893740A041479D898A + +Count = 1024 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBB2FF61D6F4AF86B4487791EF985543FC62B920A32D5891 + +Count = 1025 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1685526B325550C2BE70390D9190010FB275462464A8019DC3 + +Count = 1026 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB48A775141EED528FF293F9C0A63D6421C98DA23005D88BD6 + +Count = 1027 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBFC7E7827786B1B7738593C3A2AF4E1318875B4A27481931 + +Count = 1028 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4940EE362E5144C8C0B7BCDFA0EC8CD6B9B6C5D6B66DC15 + +Count = 1029 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BEB0D7611A978858CA5ED9D238262E040EF42B94DB0F4566 + +Count = 1030 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F79E512B90ED13983522822A1952C6C3795A333F0657FA20 + +Count = 1031 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96BE4B71D241C58DAAC585C9456E0CD88651336C8849A4E0 + +Count = 1032 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E882CE8D62A42E99900AF901916D83026474F09498B432B + +Count = 1033 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A00A00ED4EE657DE8EF08E606341F586F28328495A61CB0 + +Count = 1034 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9D02B5E20571DB566B98DA2E04702B9C488C0316972455E + +Count = 1035 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF4339BF56C3369A28A6312468EFCA8EF66EADC2D7282642 + +Count = 1036 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DFA134C1882688CC6A69405D54A0F504BF0F1E3A4031A4A5 + +Count = 1037 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D9B4B1E42A062323545D18A06584DE289E1303614434BB7C + +Count = 1038 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C2163B57F18FD2227D451072FF5A2664719C2E55D8F74EF78 + +Count = 1039 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB83BDC927085C77C069B4A612BFFE1D53FCFCBAA64D12D42 + +Count = 1040 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C15B6F5071C52EE183B4AA9658B50D79633B72E7013FC784 + +Count = 1041 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E799183FF4712DA18DFDEEFAE2CCFBE3C1B17D982B41EDA36 + +Count = 1042 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D4855C242BEA3B793C6DDA5F3D154D1AF8468AF02A1F125D + +Count = 1043 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F603A9DE0353A10710C69F6344BC51D01B7142891B4591F8 + +Count = 1044 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF445D049BE143855E305DBDC910636DF8DB92C255428AE9F + +Count = 1045 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C289B5B7D9F8518542F96982B89CA97B88DEB9E306B08C9E8 + +Count = 1046 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBBA91614501AAB1CFFE88BFB9D03018F51D37B4F4A6061B6 + +Count = 1047 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B6450226C5DF36AE5E99DD0D4202535D3BEE2ED815DCE93E1E + +Count = 1048 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E84F3842627AA1474FA5ECA07BCC05472D6EC3BF2F62CAB25 + +Count = 1049 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07F8ACD053598B4ABA8688E402E38277AAF976C124F35FB72 + +Count = 1050 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0000AF57D0A11E91720DE4DC24D92F10B549951AD9BEB0F561 + +Count = 1051 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B53582915228602BA6CD713EDE91AD1CC5CE85D46A8A3D078E9617218 + +Count = 1052 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1654BE1DB67555BF78B5D6BC65AD704F0779FEFF0F47040C1 + +Count = 1053 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130C3C67E1D148F43F8DE7699CF5DF4129F1CE5EA11139962A + +Count = 1054 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B6473CD23FA74D335D2D50641463E02E1FD1E7BAB4FBFDBE9 + +Count = 1055 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B48471435D21A4BD7EBB598412D1A117589F8606294035B855D + +Count = 1056 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24278C953900F7CB3971F76F659F3999021F4AE7E1F3E3D7AC + +Count = 1057 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = +CT = 35D7CEAD7DB14E4816787F46E9FB0E7F373E40A70386E7EBB2FF61D6F4AF86E9D34460C99B9E65BA9DBEAC265AC16889 + +Count = 1058 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00 +CT = A725E931A0E1C4F45A84F2B7556B2B87BB610283D41A1685526B325550C2BED6FBC22069E6D80CCF175DEED1F56F0139 + +Count = 1059 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001 +CT = 4426F96A072FA511D99063C6752B190896625506FD4BBB48A775141EED528F708B264324881CB8B45FC0F41D102116F2 + +Count = 1060 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102 +CT = B15378691AB46AC08404F4CD31EA3FE3FE0ADDE13BA74DBFC7E7827786B1B75630A2B38ABEFC851DE40C43CF316BEE42 + +Count = 1061 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203 +CT = B1B971ECE73E528CA0343B1E3910BFC4D31717318DC4E2C4940EE362E5144C04406FB1DC65ADE66562489C257796205F + +Count = 1062 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001020304 +CT = 36E0B2DB67E79F267E4943DD473D45D28344AB5AF38298BEB0D7611A978858D4655AD6E351DBED0BB4D51294F6C340AF + +Count = 1063 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405 +CT = 28D1565CED2D7E1B3866A9D58CEF1637CA6776771DBA02F79E512B90ED1398329C634BE68F9E1816431D11B2EFD5A0C5 + +Count = 1064 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203040506 +CT = 5A8DBE79CDF0A31891E65A604FB00D94FBB17315FFD05E96BE4B71D241C58D1FC2DBB15BAFDBACD4E79A75BDD488711E + +Count = 1065 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 0001020304050607 +CT = D60875BC195DDE295361AF0C74A70EC537A9D25745767F2E882CE8D62A42E9A23D30371A3FAD07DE79010463B0311B54 + +Count = 1066 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708 +CT = 64BB3CDA2ACC9DFF77E136EC480E4BF2418F9A54B9D7F69A00A00ED4EE657DECFFD493E2619535BC92345A9FAC1C61FA + +Count = 1067 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 00010203040506070809 +CT = CA1261316A9FCF24B26BD1FB2CF8F43D3071A6774BEE9DB9D02B5E20571DB56ACB882128019691C8A27C4C22307D7882 + +Count = 1068 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A +CT = DF24A5AF535A10459F0FB4B13C3B07C979E0FAEA9DB555DF4339BF56C3369A105689CC8EBE018DC080BB7C30B9C910DC + +Count = 1069 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B +CT = 7C053A5598BE0F1461BE5C3D7B9EA499A0A82863038494DFA134C1882688CCBE04483866F45FAB87E21FABB1DA7AA6AD + +Count = 1070 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C +CT = D82115EDF54811FC5B2501C21EF09C2CB9FE7184D57515D9B4B1E42A0623238CC5EA1557A019882B5111558C9A65F303 + +Count = 1071 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D +CT = 25D49F74D530C8657B6E67FAF68D78BF62F2E568C8C22C2163B57F18FD22271C85920F395DDC10181DC7B27F4AE9E3FE + +Count = 1072 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E +CT = D2ACC02E8C890319A395A786FAA564C24D88F7FE3FF02BB83BDC927085C77CFDA4BC593D2EDFF5A25644362D4B29E89F + +Count = 1073 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F +CT = 834287945F8B85B2BD01E4501A89C9A3B557F17F6F77C5C15B6F5071C52EE1C8BF4B74743A84F97570159901804467D1 + +Count = 1074 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10 +CT = 71C2F52B0D2D22FD6361252999CA8E420901998AED1F4E799183FF4712DA186D8B64187ED772D23C30A247E25885D1A7 + +Count = 1075 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011 +CT = 3602D400B36527FA6FF4571A328326C3A7C3C00CF2A9E8D4855C242BEA3B793131082B9C813D41EDF1458775B276568F + +Count = 1076 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112 +CT = 10397F03E5EE58663A4FA1734F328CC72E33D389366D60F603A9DE0353A10797EF26B3F639B05A4D890419AD95077999 + +Count = 1077 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213 +CT = DA68CBAF9861AF20C22EF5D7790813AA89B7D23264748DF445D049BE143855C5A6BE4E3C6D889706DE7734CB5F2F2802 + +Count = 1078 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011121314 +CT = CEE9C14898596B7989402F88DB9147E06DA191C59B750C289B5B7D9F851854B02770092F25F2508AE2766879E26E3D6C + +Count = 1079 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415 +CT = C679FEBD0374A93955EB199FA8520EF6D86D45711F72BDBBA91614501AAB1C80D325631EC2DC94B2124F2BF12824E3D0 + +Count = 1080 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213141516 +CT = F098972D35C3E57033E18CF8B978A711A854A61ED991B6450226C5DF36AE5E507BD48B571538A7FBE7CB93565184B622 + +Count = 1081 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F1011121314151617 +CT = B4989F21A51BA8D6624BEB66854826B903B454214B861E84F3842627AA1474B77EE5597812A7035E7E9BD7DB6B198E67 + +Count = 1082 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718 +CT = 5DA22F38625784A09A70A5C6E58B846133627CB30D08D07F8ACD053598B4AB036B72A04B3657E1BCF4DF2BBF0BCC8AE1 + +Count = 1083 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F10111213141516171819 +CT = 364BE352311ECD0CCFC1A4C891823F2A2B001649BABA0000AF57D0A11E91728DC9F227EA012535A4820E5F9F2BE6F10E + +Count = 1084 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A +CT = 44F7B2739F09F1EA67A9C43F5A7B3CF5EA9D6B53582915228602BA6CD713ED0CC60762D917BBD7C5C1B8D03922F8D226 + +Count = 1085 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B +CT = FBAEDA08A45B8830406CFF4C989F5A0AEBF4802B736FA1654BE1DB67555BF7ABF2FB4E3720402BF4A59A438025455A15 + +Count = 1086 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C +CT = A4D9F1F0DE9219098D817884852185CD455218630DBB130C3C67E1D148F43FB2BD8AE812BDE022539303BB374F311D7C + +Count = 1087 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D +CT = 64CA0AF494AA5B1FB9C12E65D48BA2E5D2763CFA6CB99B6473CD23FA74D33572C612A81860327DBAE215B83F75C3A824 + +Count = 1088 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E +CT = 427FC43D2F12E0099F5323297A255D247AA38FC42E4B48471435D21A4BD7EBCEE7CDB234E2E45347B47BE3E90975C2CD + +Count = 1089 +Key = 000102030405060708090A0B0C0D0E0F +Nonce = 000102030405060708090A0B +PT = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +AD = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F +CT = 8156BE5107696054B469FBB479A0FC46E9085C0AD01C24278C953900F7CB39717C224D92EF5A1F60421CFA077A764C69 + diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/aead-common.c b/hyena/Implementations/crypto_aead/hyenav2/rhys/aead-common.c new file mode 100644 index 0000000..84fc53a --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/aead-common.c @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2020 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "aead-common.h" + +int aead_check_tag + (unsigned char *plaintext, unsigned long long plaintext_len, + const unsigned char *tag1, const unsigned char *tag2, + unsigned size) +{ + /* Set "accum" to -1 if the tags match, or 0 if they don't match */ + int accum = 0; + while (size > 0) { + accum |= (*tag1++ ^ *tag2++); + --size; + } + accum = (accum - 1) >> 8; + + /* Destroy the plaintext if the tag match failed */ + while (plaintext_len > 0) { + *plaintext++ &= accum; + --plaintext_len; + } + + /* If "accum" is 0, return -1, otherwise return 0 */ + return ~accum; +} + +int aead_check_tag_precheck + (unsigned char *plaintext, unsigned long long plaintext_len, + const unsigned char *tag1, const unsigned char *tag2, + unsigned size, int precheck) +{ + /* Set "accum" to -1 if the tags match, or 0 if they don't match */ + int accum = 0; + while (size > 0) { + accum |= (*tag1++ ^ *tag2++); + --size; + } + accum = ((accum - 1) >> 8) & precheck; + + /* Destroy the plaintext if the tag match failed */ + while (plaintext_len > 0) { + *plaintext++ &= accum; + --plaintext_len; + } + + /* If "accum" is 0, return -1, otherwise return 0 */ + return ~accum; +} diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/aead-common.h b/hyena/Implementations/crypto_aead/hyenav2/rhys/aead-common.h new file mode 100644 index 0000000..2be95eb --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/aead-common.h @@ -0,0 +1,256 @@ +/* + * Copyright (C) 2020 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef LWCRYPTO_AEAD_COMMON_H +#define LWCRYPTO_AEAD_COMMON_H + +#include + +/** + * \file aead-common.h + * \brief Definitions that are common across AEAD schemes. + * + * AEAD stands for "Authenticated Encryption with Associated Data". + * It is a standard API pattern for securely encrypting and + * authenticating packets of data. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Encrypts and authenticates a packet with an AEAD scheme. + * + * \param c Buffer to receive the output. + * \param clen On exit, set to the length of the output which includes + * the ciphertext and the authentication tag. + * \param m Buffer that contains the plaintext message to encrypt. + * \param mlen Length of the plaintext message in bytes. + * \param ad Buffer that contains associated data to authenticate + * along with the packet but which does not need to be encrypted. + * \param adlen Length of the associated data in bytes. + * \param nsec Secret nonce - normally not used by AEAD schemes. + * \param npub Points to the public nonce for the packet. + * \param k Points to the key to use to encrypt the packet. + * + * \return 0 on success, or a negative value if there was an error in + * the parameters. + */ +typedef int (*aead_cipher_encrypt_t) + (unsigned char *c, unsigned long long *clen, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k); + +/** + * \brief Decrypts and authenticates a packet with an AEAD scheme. + * + * \param m Buffer to receive the plaintext message on output. + * \param mlen Receives the length of the plaintext message on output. + * \param nsec Secret nonce - normally not used by AEAD schemes. + * \param c Buffer that contains the ciphertext and authentication + * tag to decrypt. + * \param clen Length of the input data in bytes, which includes the + * ciphertext and the authentication tag. + * \param ad Buffer that contains associated data to authenticate + * along with the packet but which does not need to be encrypted. + * \param adlen Length of the associated data in bytes. + * \param npub Points to the public nonce for the packet. + * \param k Points to the key to use to decrypt the packet. + * + * \return 0 on success, -1 if the authentication tag was incorrect, + * or some other negative number if there was an error in the parameters. + */ +typedef int (*aead_cipher_decrypt_t) + (unsigned char *m, unsigned long long *mlen, + unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k); + +/** + * \brief Hashes a block of input data. + * + * \param out Buffer to receive the hash output. + * \param in Points to the input data to be hashed. + * \param inlen Length of the input data in bytes. + * + * \return Returns zero on success or -1 if there was an error in the + * parameters. + */ +typedef int (*aead_hash_t) + (unsigned char *out, const unsigned char *in, unsigned long long inlen); + +/** + * \brief Initializes the state for a hashing operation. + * + * \param state Hash state to be initialized. + */ +typedef void (*aead_hash_init_t)(void *state); + +/** + * \brief Updates a hash state with more input data. + * + * \param state Hash state to be updated. + * \param in Points to the input data to be incorporated into the state. + * \param inlen Length of the input data to be incorporated into the state. + */ +typedef void (*aead_hash_update_t) + (void *state, const unsigned char *in, unsigned long long inlen); + +/** + * \brief Returns the final hash value from a hashing operation. + * + * \param Hash state to be finalized. + * \param out Points to the output buffer to receive the hash value. + */ +typedef void (*aead_hash_finalize_t)(void *state, unsigned char *out); + +/** + * \brief Aborbs more input data into an XOF state. + * + * \param state XOF state to be updated. + * \param in Points to the input data to be absorbed into the state. + * \param inlen Length of the input data to be absorbed into the state. + * + * \sa ascon_xof_init(), ascon_xof_squeeze() + */ +typedef void (*aead_xof_absorb_t) + (void *state, const unsigned char *in, unsigned long long inlen); + +/** + * \brief Squeezes output data from an XOF state. + * + * \param state XOF state to squeeze the output data from. + * \param out Points to the output buffer to receive the squeezed data. + * \param outlen Number of bytes of data to squeeze out of the state. + */ +typedef void (*aead_xof_squeeze_t) + (void *state, unsigned char *out, unsigned long long outlen); + +/** + * \brief No special AEAD features. + */ +#define AEAD_FLAG_NONE 0x0000 + +/** + * \brief The natural byte order of the AEAD cipher is little-endian. + * + * If this flag is not present, then the natural byte order of the + * AEAD cipher should be assumed to be big-endian. + * + * The natural byte order may be useful when formatting packet sequence + * numbers as nonces. The application needs to know whether the sequence + * number should be packed into the leading or trailing bytes of the nonce. + */ +#define AEAD_FLAG_LITTLE_ENDIAN 0x0001 + +/** + * \brief Meta-information about an AEAD cipher. + */ +typedef struct +{ + const char *name; /**< Name of the cipher */ + unsigned key_len; /**< Length of the key in bytes */ + unsigned nonce_len; /**< Length of the nonce in bytes */ + unsigned tag_len; /**< Length of the tag in bytes */ + unsigned flags; /**< Flags for extra features */ + aead_cipher_encrypt_t encrypt; /**< AEAD encryption function */ + aead_cipher_decrypt_t decrypt; /**< AEAD decryption function */ + +} aead_cipher_t; + +/** + * \brief Meta-information about a hash algorithm that is related to an AEAD. + * + * Regular hash algorithms should provide the "hash", "init", "update", + * and "finalize" functions. Extensible Output Functions (XOF's) should + * proivde the "hash", "init", "absorb", and "squeeze" functions. + */ +typedef struct +{ + const char *name; /**< Name of the hash algorithm */ + size_t state_size; /**< Size of the incremental state structure */ + unsigned hash_len; /**< Length of the hash in bytes */ + unsigned flags; /**< Flags for extra features */ + aead_hash_t hash; /**< All in one hashing function */ + aead_hash_init_t init; /**< Incremental hash/XOF init function */ + aead_hash_update_t update; /**< Incremental hash update function */ + aead_hash_finalize_t finalize; /**< Incremental hash finalize function */ + aead_xof_absorb_t absorb; /**< Incremental XOF absorb function */ + aead_xof_squeeze_t squeeze; /**< Incremental XOF squeeze function */ + +} aead_hash_algorithm_t; + +/** + * \brief Check an authentication tag in constant time. + * + * \param plaintext Points to the plaintext data. + * \param plaintext_len Length of the plaintext in bytes. + * \param tag1 First tag to compare. + * \param tag2 Second tag to compare. + * \param tag_len Length of the tags in bytes. + * + * \return Returns -1 if the tag check failed or 0 if the check succeeded. + * + * If the tag check fails, then the \a plaintext will also be zeroed to + * prevent it from being used accidentally by the application when the + * ciphertext was invalid. + */ +int aead_check_tag + (unsigned char *plaintext, unsigned long long plaintext_len, + const unsigned char *tag1, const unsigned char *tag2, + unsigned tag_len); + +/** + * \brief Check an authentication tag in constant time with a previous check. + * + * \param plaintext Points to the plaintext data. + * \param plaintext_len Length of the plaintext in bytes. + * \param tag1 First tag to compare. + * \param tag2 Second tag to compare. + * \param tag_len Length of the tags in bytes. + * \param precheck Set to -1 if previous check succeeded or 0 if it failed. + * + * \return Returns -1 if the tag check failed or 0 if the check succeeded. + * + * If the tag check fails, then the \a plaintext will also be zeroed to + * prevent it from being used accidentally by the application when the + * ciphertext was invalid. + * + * This version can be used to incorporate other information about the + * correctness of the plaintext into the final result. + */ +int aead_check_tag_precheck + (unsigned char *plaintext, unsigned long long plaintext_len, + const unsigned char *tag1, const unsigned char *tag2, + unsigned tag_len, int precheck); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/api.h b/hyena/Implementations/crypto_aead/hyenav2/rhys/api.h new file mode 100644 index 0000000..c3c0a27 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/api.h @@ -0,0 +1,5 @@ +#define CRYPTO_KEYBYTES 16 +#define CRYPTO_NSECBYTES 0 +#define CRYPTO_NPUBBYTES 12 +#define CRYPTO_ABYTES 16 +#define CRYPTO_NOOVERLAP 1 diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/encrypt.c b/hyena/Implementations/crypto_aead/hyenav2/rhys/encrypt.c new file mode 100644 index 0000000..db50784 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/encrypt.c @@ -0,0 +1,26 @@ + +#include "hyena.h" + +int crypto_aead_encrypt + (unsigned char *c, unsigned long long *clen, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + return hyena_aead_encrypt + (c, clen, m, mlen, ad, adlen, nsec, npub, k); +} + +int crypto_aead_decrypt + (unsigned char *m, unsigned long long *mlen, + unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + return hyena_aead_decrypt + (m, mlen, nsec, c, clen, ad, adlen, npub, k); +} diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/hyena.c b/hyena/Implementations/crypto_aead/hyenav2/rhys/hyena.c new file mode 100644 index 0000000..db5ba2b --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/hyena.c @@ -0,0 +1,293 @@ +/* + * Copyright (C) 2020 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "hyena.h" +#include "internal-gift128.h" +#include "internal-util.h" +#include + +aead_cipher_t const hyena_cipher = { + "HYENA", + HYENA_KEY_SIZE, + HYENA_NONCE_SIZE, + HYENA_TAG_SIZE, + AEAD_FLAG_LITTLE_ENDIAN, + hyena_aead_encrypt, + hyena_aead_decrypt +}; + +/** + * \brief Doubles a delta value in the F(2^64) field. + * + * \param D The delta value to be doubled. + * + * D = D << 1 if the top-most bit is 0, or D = (D << 1) ^ 0x1B otherwise. + */ +static void hyena_double_delta(unsigned char D[8]) +{ + unsigned index; + unsigned char mask = (unsigned char)(((signed char)(D[0])) >> 7); + for (index = 0; index < 7; ++index) + D[index] = (D[index] << 1) | (D[index + 1] >> 7); + D[7] = (D[7] << 1) ^ (mask & 0x1B); +} + +/** + * \brief Triples a delta value in the F(2^64) field. + * + * \param D The delta value to be tripled. + * + * D' = D ^ (D << 1) if the top-most bit is 0, or D' = D ^ (D << 1) ^ 0x1B + * otherwise. + */ +static void hyena_triple_delta(unsigned char D[8]) +{ + unsigned index; + unsigned char mask = (unsigned char)(((signed char)(D[0])) >> 7); + for (index = 0; index < 7; ++index) + D[index] ^= (D[index] << 1) | (D[index + 1] >> 7); + D[7] ^= (D[7] << 1) ^ (mask & 0x1B); +} + +/** + * \brief Process the associated data for HYENA. + * + * \param ks Key schedule for the GIFT-128 cipher. + * \param Y Internal hash state of HYENA. + * \param D Internal hash state of HYENA. + * \param ad Points to the associated data. + * \param adlen Length of the associated data in bytes. + */ +static void hyena_process_ad + (const gift128n_key_schedule_t *ks, unsigned char Y[16], + unsigned char D[8], const unsigned char *ad, + unsigned long long adlen) +{ + unsigned char feedback[16]; + while (adlen > 16) { + hyena_double_delta(D); + memcpy(feedback, ad, 16); + lw_xor_block(feedback + 8, Y + 8, 8); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block(Y, feedback, 16); + gift128n_encrypt(ks, Y, Y); + ad += 16; + adlen -= 16; + } + if (adlen == 16) { + hyena_triple_delta(D); + memcpy(feedback, ad, 16); + lw_xor_block(feedback + 8, Y + 8, 8); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block(Y, feedback, 16); + } else { + unsigned temp = (unsigned)adlen; + hyena_triple_delta(D); + hyena_triple_delta(D); + memcpy(feedback, ad, temp); + feedback[temp] = 0x01; + memset(feedback + temp + 1, 0, 15 - temp); + if (temp > 8) + lw_xor_block(feedback + 8, Y + 8, temp - 8); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block(Y, feedback, 16); + } +} + +int hyena_aead_encrypt + (unsigned char *c, unsigned long long *clen, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) +{ + gift128n_key_schedule_t ks; + unsigned char Y[16]; + unsigned char D[8]; + unsigned char feedback[16]; + unsigned index; + (void)nsec; + + /* Set the length of the returned ciphertext */ + *clen = mlen + HYENA_TAG_SIZE; + + /* Set up the key schedule and use it to encrypt the nonce */ + gift128n_init(&ks, k); + Y[0] = 0; + if (adlen == 0) + Y[0] |= 0x01; + if (adlen == 0 && mlen == 0) + Y[0] |= 0x02; + Y[1] = 0; + Y[2] = 0; + Y[3] = 0; + memcpy(Y + 4, npub, HYENA_NONCE_SIZE); + gift128n_encrypt(&ks, Y, Y); + memcpy(D, Y + 8, 8); + + /* Process the associated data */ + hyena_process_ad(&ks, Y, D, ad, adlen); + + /* Encrypt the plaintext to produce the ciphertext */ + if (mlen > 0) { + while (mlen > 16) { + gift128n_encrypt(&ks, Y, Y); + hyena_double_delta(D); + memcpy(feedback, m, 16); + lw_xor_block(feedback + 8, Y + 8, 8); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block_2_src(c, m, Y, 16); + lw_xor_block(Y, feedback, 16); + c += 16; + m += 16; + mlen -= 16; + } + gift128n_encrypt(&ks, Y, Y); + if (mlen == 16) { + hyena_triple_delta(D); + memcpy(feedback, m, 16); + lw_xor_block(feedback + 8, Y + 8, 8); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block_2_src(c, m, Y, 16); + lw_xor_block(Y, feedback, 16); + c += 16; + } else { + unsigned temp = (unsigned)mlen; + hyena_triple_delta(D); + hyena_triple_delta(D); + memcpy(feedback, m, temp); + feedback[temp] = 0x01; + memset(feedback + temp + 1, 0, 15 - temp); + if (temp > 8) + lw_xor_block(feedback + 8, Y + 8, temp - 8); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block_2_src(c, m, Y, temp); + lw_xor_block(Y, feedback, 16); + c += temp; + } + } + + /* Swap the two halves of Y and generate the authentication tag */ + for (index = 0; index < 8; ++index) { + unsigned char temp1 = Y[index]; + unsigned char temp2 = Y[index + 8]; + Y[index] = temp2; + Y[index + 8] = temp1; + } + gift128n_encrypt(&ks, c, Y); + return 0; +} + +int hyena_aead_decrypt + (unsigned char *m, unsigned long long *mlen, + unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) +{ + gift128n_key_schedule_t ks; + unsigned char Y[16]; + unsigned char D[8]; + unsigned char feedback[16]; + unsigned char *mtemp; + unsigned index; + (void)nsec; + + /* Validate the ciphertext length and set the return "mlen" value */ + if (clen < HYENA_TAG_SIZE) + return -1; + *mlen = clen - HYENA_TAG_SIZE; + + /* Set up the key schedule and use it to encrypt the nonce */ + gift128n_init(&ks, k); + Y[0] = 0; + if (adlen == 0) + Y[0] |= 0x01; + if (adlen == 0 && clen == HYENA_TAG_SIZE) + Y[0] |= 0x02; + Y[1] = 0; + Y[2] = 0; + Y[3] = 0; + memcpy(Y + 4, npub, HYENA_NONCE_SIZE); + gift128n_encrypt(&ks, Y, Y); + memcpy(D, Y + 8, 8); + + /* Process the associated data */ + hyena_process_ad(&ks, Y, D, ad, adlen); + + /* Decrypt the ciphertext to produce the plaintext */ + clen -= HYENA_TAG_SIZE; + mtemp = m; + if (clen > 0) { + while (clen > 16) { + gift128n_encrypt(&ks, Y, Y); + hyena_double_delta(D); + memcpy(feedback + 8, c + 8, 8); + lw_xor_block_2_src(m, c, Y, 16); + memcpy(feedback, m, 8); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block(Y, feedback, 16); + c += 16; + m += 16; + clen -= 16; + } + gift128n_encrypt(&ks, Y, Y); + if (clen == 16) { + hyena_triple_delta(D); + memcpy(feedback + 8, c + 8, 8); + lw_xor_block_2_src(m, c, Y, 16); + memcpy(feedback, m, 8); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block(Y, feedback, 16); + c += 16; + } else { + unsigned temp = (unsigned)clen; + hyena_triple_delta(D); + hyena_triple_delta(D); + if (temp > 8) { + memcpy(feedback + 8, c + 8, temp - 8); + lw_xor_block_2_src(m, c, Y, temp); + memcpy(feedback, m, 8); + } else { + lw_xor_block_2_src(m, c, Y, temp); + memcpy(feedback, m, temp); + } + feedback[temp] = 0x01; + memset(feedback + temp + 1, 0, 15 - temp); + lw_xor_block(feedback + 8, D, 8); + lw_xor_block(Y, feedback, 16); + c += temp; + } + } + + /* Swap the two halves of Y and check the authentication tag */ + for (index = 0; index < 8; ++index) { + unsigned char temp1 = Y[index]; + unsigned char temp2 = Y[index + 8]; + Y[index] = temp2; + Y[index + 8] = temp1; + } + gift128n_encrypt(&ks, Y, Y); + return aead_check_tag(mtemp, *mlen, Y, c, HYENA_TAG_SIZE); +} diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/hyena.h b/hyena/Implementations/crypto_aead/hyenav2/rhys/hyena.h new file mode 100644 index 0000000..ee9bb9c --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/hyena.h @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2020 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef LWCRYPTO_HYENA_H +#define LWCRYPTO_HYENA_H + +#include "aead-common.h" + +/** + * \file hyena.h + * \brief HYENA authenticated encryption algorithm. + * + * HYENA is an authenticated encryption algorithm that is built around the + * GIFT-128 block cipher. The algorithm has a 128-bit key, a 96-bit nonce, + * and a 128-bit authentication tag. + * + * References: https://www.isical.ac.in/~lightweight/hyena/ + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Size of the key for HYENA. + */ +#define HYENA_KEY_SIZE 16 + +/** + * \brief Size of the authentication tag for HYENA. + */ +#define HYENA_TAG_SIZE 16 + +/** + * \brief Size of the nonce for HYENA. + */ +#define HYENA_NONCE_SIZE 12 + +/** + * \brief Meta-information block for the HYENA cipher. + */ +extern aead_cipher_t const hyena_cipher; + +/** + * \brief Encrypts and authenticates a packet with HYENA. + * + * \param c Buffer to receive the output. + * \param clen On exit, set to the length of the output which includes + * the ciphertext and the 16 byte authentication tag. + * \param m Buffer that contains the plaintext message to encrypt. + * \param mlen Length of the plaintext message in bytes. + * \param ad Buffer that contains associated data to authenticate + * along with the packet but which does not need to be encrypted. + * \param adlen Length of the associated data in bytes. + * \param nsec Secret nonce - not used by this algorithm. + * \param npub Points to the public nonce for the packet which must + * be 12 bytes in length. + * \param k Points to the 16 bytes of the key to use to encrypt the packet. + * + * \return 0 on success, or a negative value if there was an error in + * the parameters. + * + * \sa hyena_aead_decrypt() + */ +int hyena_aead_encrypt + (unsigned char *c, unsigned long long *clen, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k); + +/** + * \brief Decrypts and authenticates a packet with HYENA. + * + * \param m Buffer to receive the plaintext message on output. + * \param mlen Receives the length of the plaintext message on output. + * \param nsec Secret nonce - not used by this algorithm. + * \param c Buffer that contains the ciphertext and authentication + * tag to decrypt. + * \param clen Length of the input data in bytes, which includes the + * ciphertext and the 16 byte authentication tag. + * \param ad Buffer that contains associated data to authenticate + * along with the packet but which does not need to be encrypted. + * \param adlen Length of the associated data in bytes. + * \param npub Points to the public nonce for the packet which must + * be 12 bytes in length. + * \param k Points to the 16 bytes of the key to use to decrypt the packet. + * + * \return 0 on success, -1 if the authentication tag was incorrect, + * or some other negative number if there was an error in the parameters. + * + * \sa hyena_aead_encrypt() + */ +int hyena_aead_decrypt + (unsigned char *m, unsigned long long *mlen, + unsigned char *nsec, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128-config.h b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128-config.h new file mode 100644 index 0000000..62131ba --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128-config.h @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2020 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef LW_INTERNAL_GIFT128_CONFIG_H +#define LW_INTERNAL_GIFT128_CONFIG_H + +/** + * \file internal-gift128-config.h + * \brief Configures the variant of GIFT-128 to use. + */ + +/** + * \brief Select the full variant of GIFT-128. + * + * The full variant requires 320 bytes for the key schedule and uses the + * fixslicing method to implement encryption and decryption. + */ +#define GIFT128_VARIANT_FULL 0 + +/** + * \brief Select the small variant of GIFT-128. + * + * The small variant requires 80 bytes for the key schedule. The rest + * of the key schedule is expanded on the fly during encryption. + * + * The fixslicing method is used to implement encryption and the slower + * bitslicing method is used to implement decryption. The small variant + * is suitable when memory is at a premium, decryption is not needed, + * but encryption performance is still important. + */ +#define GIFT128_VARIANT_SMALL 1 + +/** + * \brief Select the tiny variant of GIFT-128. + * + * The tiny variant requires 16 bytes for the key schedule and uses the + * bitslicing method to implement encryption and decryption. It is suitable + * for use when memory is very tight and performance is not critical. + */ +#define GIFT128_VARIANT_TINY 2 + +/** + * \def GIFT128_VARIANT + * \brief Selects the default variant of GIFT-128 to use on this platform. + */ +/** + * \def GIFT128_VARIANT_ASM + * \brief Defined to 1 if the GIFT-128 implementation has been replaced + * with an assembly code version. + */ +#if defined(__AVR__) && !defined(GIFT128_VARIANT_ASM) +#define GIFT128_VARIANT_ASM 1 +#endif +#if !defined(GIFT128_VARIANT) +#define GIFT128_VARIANT GIFT128_VARIANT_FULL +#endif +#if !defined(GIFT128_VARIANT_ASM) +#define GIFT128_VARIANT_ASM 0 +#endif + +#endif diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128.c b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128.c new file mode 100644 index 0000000..c6ac5ec --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128.c @@ -0,0 +1,1498 @@ +/* + * Copyright (C) 2020 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include "internal-gift128.h" +#include "internal-util.h" + +#if !GIFT128_VARIANT_ASM + +#if GIFT128_VARIANT != GIFT128_VARIANT_TINY + +/* Round constants for GIFT-128 in the fixsliced representation */ +static uint32_t const GIFT128_RC_fixsliced[40] = { + 0x10000008, 0x80018000, 0x54000002, 0x01010181, 0x8000001f, 0x10888880, + 0x6001e000, 0x51500002, 0x03030180, 0x8000002f, 0x10088880, 0x60016000, + 0x41500002, 0x03030080, 0x80000027, 0x10008880, 0x4001e000, 0x11500002, + 0x03020180, 0x8000002b, 0x10080880, 0x60014000, 0x01400002, 0x02020080, + 0x80000021, 0x10000080, 0x0001c000, 0x51000002, 0x03010180, 0x8000002e, + 0x10088800, 0x60012000, 0x40500002, 0x01030080, 0x80000006, 0x10008808, + 0xc001a000, 0x14500002, 0x01020181, 0x8000001a +}; + +#endif + +#if GIFT128_VARIANT != GIFT128_VARIANT_FULL + +/* Round constants for GIFT-128 in the bitsliced representation */ +static uint8_t const GIFT128_RC[40] = { + 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3E, 0x3D, 0x3B, + 0x37, 0x2F, 0x1E, 0x3C, 0x39, 0x33, 0x27, 0x0E, + 0x1D, 0x3A, 0x35, 0x2B, 0x16, 0x2C, 0x18, 0x30, + 0x21, 0x02, 0x05, 0x0B, 0x17, 0x2E, 0x1C, 0x38, + 0x31, 0x23, 0x06, 0x0D, 0x1B, 0x36, 0x2D, 0x1A +}; + +#endif + +/* http://programming.sirrida.de/perm_fn.html#bit_permute_step */ +#define bit_permute_step(_y, mask, shift) \ + do { \ + uint32_t y = (_y); \ + uint32_t t = ((y >> (shift)) ^ y) & (mask); \ + (_y) = (y ^ t) ^ (t << (shift)); \ + } while (0) + +/* + * The permutation below was generated by the online permuation generator at + * "http://programming.sirrida.de/calcperm.php". + * + * All of the permutuations are essentially the same, except that each is + * rotated by 8 bits with respect to the next: + * + * P0: 0 24 16 8 1 25 17 9 2 26 18 10 3 27 19 11 4 28 20 12 5 29 21 13 6 30 22 14 7 31 23 15 + * P1: 8 0 24 16 9 1 25 17 10 2 26 18 11 3 27 19 12 4 28 20 13 5 29 21 14 6 30 22 15 7 31 23 + * P2: 16 8 0 24 17 9 1 25 18 10 2 26 19 11 3 27 20 12 4 28 21 13 5 29 22 14 6 30 23 15 7 31 + * P3: 24 16 8 0 25 17 9 1 26 18 10 2 27 19 11 3 28 20 12 4 29 21 13 5 30 22 14 6 31 23 15 7 + * + * The most efficient permutation from the online generator was P3, so we + * perform it as the core of the others, and then perform a final rotation. + * + * It is possible to do slightly better than "P3 then rotate" on desktop and + * server architectures for the other permutations. But the advantage isn't + * as evident on embedded platforms so we keep things simple. + */ +#define PERM3_INNER(x) \ + do { \ + bit_permute_step(x, 0x0a0a0a0a, 3); \ + bit_permute_step(x, 0x00cc00cc, 6); \ + bit_permute_step(x, 0x0000f0f0, 12); \ + bit_permute_step(x, 0x000000ff, 24); \ + } while (0) +#define PERM0(x) \ + do { \ + uint32_t _x = (x); \ + PERM3_INNER(_x); \ + (x) = leftRotate8(_x); \ + } while (0) +#define PERM1(x) \ + do { \ + uint32_t _x = (x); \ + PERM3_INNER(_x); \ + (x) = leftRotate16(_x); \ + } while (0) +#define PERM2(x) \ + do { \ + uint32_t _x = (x); \ + PERM3_INNER(_x); \ + (x) = leftRotate24(_x); \ + } while (0) +#define PERM3(x) \ + do { \ + uint32_t _x = (x); \ + PERM3_INNER(_x); \ + (x) = _x; \ + } while (0) + +#define INV_PERM3_INNER(x) \ + do { \ + bit_permute_step(x, 0x00550055, 9); \ + bit_permute_step(x, 0x00003333, 18); \ + bit_permute_step(x, 0x000f000f, 12); \ + bit_permute_step(x, 0x000000ff, 24); \ + } while (0) +#define INV_PERM0(x) \ + do { \ + uint32_t _x = rightRotate8(x); \ + INV_PERM3_INNER(_x); \ + (x) = _x; \ + } while (0) +#define INV_PERM1(x) \ + do { \ + uint32_t _x = rightRotate16(x); \ + INV_PERM3_INNER(_x); \ + (x) = _x; \ + } while (0) +#define INV_PERM2(x) \ + do { \ + uint32_t _x = rightRotate24(x); \ + INV_PERM3_INNER(_x); \ + (x) = _x; \ + } while (0) +#define INV_PERM3(x) \ + do { \ + uint32_t _x = (x); \ + INV_PERM3_INNER(_x); \ + (x) = _x; \ + } while (0) + +/** + * \brief Converts the GIFT-128 nibble-based representation into word-based. + * + * \param output Output buffer to write the word-based version to. + * \param input Input buffer to read the nibble-based version from. + * + * The \a input and \a output buffers can be the same buffer. + */ +static void gift128n_to_words + (unsigned char *output, const unsigned char *input) +{ + uint32_t s0, s1, s2, s3; + + /* Load the input buffer into 32-bit words. We use the nibble order + * from the HYENA submission to NIST which is byte-reversed with respect + * to the nibble order of the original GIFT-128 paper. Nibble zero is in + * the first byte instead of the last, which means little-endian order. */ + s0 = le_load_word32(input + 12); + s1 = le_load_word32(input + 8); + s2 = le_load_word32(input + 4); + s3 = le_load_word32(input); + + /* Rearrange the bits so that bits 0..3 of each nibble are + * scattered to bytes 0..3 of each word. The permutation is: + * + * 0 8 16 24 1 9 17 25 2 10 18 26 3 11 19 27 4 12 20 28 5 13 21 29 6 14 22 30 7 15 23 31 + * + * Generated with "http://programming.sirrida.de/calcperm.php". + */ + #define PERM_WORDS(_x) \ + do { \ + uint32_t x = (_x); \ + bit_permute_step(x, 0x0a0a0a0a, 3); \ + bit_permute_step(x, 0x00cc00cc, 6); \ + bit_permute_step(x, 0x0000f0f0, 12); \ + bit_permute_step(x, 0x0000ff00, 8); \ + (_x) = x; \ + } while (0) + PERM_WORDS(s0); + PERM_WORDS(s1); + PERM_WORDS(s2); + PERM_WORDS(s3); + + /* Rearrange the bytes and write them to the output buffer */ + output[0] = (uint8_t)s0; + output[1] = (uint8_t)s1; + output[2] = (uint8_t)s2; + output[3] = (uint8_t)s3; + output[4] = (uint8_t)(s0 >> 8); + output[5] = (uint8_t)(s1 >> 8); + output[6] = (uint8_t)(s2 >> 8); + output[7] = (uint8_t)(s3 >> 8); + output[8] = (uint8_t)(s0 >> 16); + output[9] = (uint8_t)(s1 >> 16); + output[10] = (uint8_t)(s2 >> 16); + output[11] = (uint8_t)(s3 >> 16); + output[12] = (uint8_t)(s0 >> 24); + output[13] = (uint8_t)(s1 >> 24); + output[14] = (uint8_t)(s2 >> 24); + output[15] = (uint8_t)(s3 >> 24); +} + +/** + * \brief Converts the GIFT-128 word-based representation into nibble-based. + * + * \param output Output buffer to write the nibble-based version to. + * \param input Input buffer to read the word-based version from. + */ +static void gift128n_to_nibbles + (unsigned char *output, const unsigned char *input) +{ + uint32_t s0, s1, s2, s3; + + /* Load the input bytes and rearrange them so that s0 contains the + * most significant nibbles and s3 contains the least significant */ + s0 = (((uint32_t)(input[12])) << 24) | + (((uint32_t)(input[8])) << 16) | + (((uint32_t)(input[4])) << 8) | + ((uint32_t)(input[0])); + s1 = (((uint32_t)(input[13])) << 24) | + (((uint32_t)(input[9])) << 16) | + (((uint32_t)(input[5])) << 8) | + ((uint32_t)(input[1])); + s2 = (((uint32_t)(input[14])) << 24) | + (((uint32_t)(input[10])) << 16) | + (((uint32_t)(input[6])) << 8) | + ((uint32_t)(input[2])); + s3 = (((uint32_t)(input[15])) << 24) | + (((uint32_t)(input[11])) << 16) | + (((uint32_t)(input[7])) << 8) | + ((uint32_t)(input[3])); + + /* Apply the inverse of PERM_WORDS() from the function above */ + #define INV_PERM_WORDS(_x) \ + do { \ + uint32_t x = (_x); \ + bit_permute_step(x, 0x00aa00aa, 7); \ + bit_permute_step(x, 0x0000cccc, 14); \ + bit_permute_step(x, 0x00f000f0, 4); \ + bit_permute_step(x, 0x0000ff00, 8); \ + (_x) = x; \ + } while (0) + INV_PERM_WORDS(s0); + INV_PERM_WORDS(s1); + INV_PERM_WORDS(s2); + INV_PERM_WORDS(s3); + + /* Store the result into the output buffer as 32-bit words */ + le_store_word32(output + 12, s0); + le_store_word32(output + 8, s1); + le_store_word32(output + 4, s2); + le_store_word32(output, s3); +} + +void gift128n_encrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input) +{ + gift128n_to_words(output, input); + gift128b_encrypt(ks, output, output); + gift128n_to_nibbles(output, output); +} + +void gift128n_decrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input) +{ + gift128n_to_words(output, input); + gift128b_decrypt(ks, output, output); + gift128n_to_nibbles(output, output); +} + +#if GIFT128_VARIANT != GIFT128_VARIANT_TINY + +/** + * \brief Swaps bits within two words. + * + * \param a The first word. + * \param b The second word. + * \param mask Mask for the bits to shift. + * \param shift Shift amount in bits. + */ +#define gift128b_swap_move(a, b, mask, shift) \ + do { \ + uint32_t tmp = ((b) ^ ((a) >> (shift))) & (mask); \ + (b) ^= tmp; \ + (a) ^= tmp << (shift); \ + } while (0) + +/** + * \brief Derives the next 10 fixsliced keys in the key schedule. + * + * \param next Points to the buffer to receive the next 10 keys. + * \param prev Points to the buffer holding the previous 10 keys. + * + * The \a next and \a prev buffers are allowed to be the same. + */ +#define gift128b_derive_keys(next, prev) \ + do { \ + /* Key 0 */ \ + uint32_t s = (prev)[0]; \ + uint32_t t = (prev)[1]; \ + gift128b_swap_move(t, t, 0x00003333U, 16); \ + gift128b_swap_move(t, t, 0x55554444U, 1); \ + (next)[0] = t; \ + /* Key 1 */ \ + s = leftRotate8(s & 0x33333333U) | leftRotate16(s & 0xCCCCCCCCU); \ + gift128b_swap_move(s, s, 0x55551100U, 1); \ + (next)[1] = s; \ + /* Key 2 */ \ + s = (prev)[2]; \ + t = (prev)[3]; \ + (next)[2] = ((t >> 4) & 0x0F000F00U) | ((t & 0x0F000F00U) << 4) | \ + ((t >> 6) & 0x00030003U) | ((t & 0x003F003FU) << 2); \ + /* Key 3 */ \ + (next)[3] = ((s >> 6) & 0x03000300U) | ((s & 0x3F003F00U) << 2) | \ + ((s >> 5) & 0x00070007U) | ((s & 0x001F001FU) << 3); \ + /* Key 4 */ \ + s = (prev)[4]; \ + t = (prev)[5]; \ + (next)[4] = leftRotate8(t & 0xAAAAAAAAU) | \ + leftRotate16(t & 0x55555555U); \ + /* Key 5 */ \ + (next)[5] = leftRotate8(s & 0x55555555U) | \ + leftRotate12(s & 0xAAAAAAAAU); \ + /* Key 6 */ \ + s = (prev)[6]; \ + t = (prev)[7]; \ + (next)[6] = ((t >> 2) & 0x03030303U) | ((t & 0x03030303U) << 2) | \ + ((t >> 1) & 0x70707070U) | ((t & 0x10101010U) << 3); \ + /* Key 7 */ \ + (next)[7] = ((s >> 18) & 0x00003030U) | ((s & 0x01010101U) << 3) | \ + ((s >> 14) & 0x0000C0C0U) | ((s & 0x0000E0E0U) << 15) | \ + ((s >> 1) & 0x07070707U) | ((s & 0x00001010U) << 19); \ + /* Key 8 */ \ + s = (prev)[8]; \ + t = (prev)[9]; \ + (next)[8] = ((t >> 4) & 0x0FFF0000U) | ((t & 0x000F0000U) << 12) | \ + ((t >> 8) & 0x000000FFU) | ((t & 0x000000FFU) << 8); \ + /* Key 9 */ \ + (next)[9] = ((s >> 6) & 0x03FF0000U) | ((s & 0x003F0000U) << 10) | \ + ((s >> 4) & 0x00000FFFU) | ((s & 0x0000000FU) << 12); \ + } while (0) + +/** + * \brief Compute the round keys for GIFT-128 in the fixsliced representation. + * + * \param ks Points to the key schedule to initialize. + * \param k0 First key word. + * \param k1 Second key word. + * \param k2 Third key word. + * \param k3 Fourth key word. + */ +static void gift128b_compute_round_keys + (gift128b_key_schedule_t *ks, + uint32_t k0, uint32_t k1, uint32_t k2, uint32_t k3) +{ + unsigned index; + uint32_t temp; + + /* Set the regular key with k0 and k3 pre-swapped for the round function */ + ks->k[0] = k3; + ks->k[1] = k1; + ks->k[2] = k2; + ks->k[3] = k0; + + /* Pre-compute the keys for rounds 3..10 and permute into fixsliced form */ + for (index = 4; index < 20; index += 2) { + ks->k[index] = ks->k[index - 3]; + temp = ks->k[index - 4]; + temp = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | + ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); + ks->k[index + 1] = temp; + } + for (index = 0; index < 20; index += 10) { + /* Keys 0 and 10 */ + temp = ks->k[index]; + gift128b_swap_move(temp, temp, 0x00550055U, 9); + gift128b_swap_move(temp, temp, 0x000F000FU, 12); + gift128b_swap_move(temp, temp, 0x00003333U, 18); + gift128b_swap_move(temp, temp, 0x000000FFU, 24); + ks->k[index] = temp; + + /* Keys 1 and 11 */ + temp = ks->k[index + 1]; + gift128b_swap_move(temp, temp, 0x00550055U, 9); + gift128b_swap_move(temp, temp, 0x000F000FU, 12); + gift128b_swap_move(temp, temp, 0x00003333U, 18); + gift128b_swap_move(temp, temp, 0x000000FFU, 24); + ks->k[index + 1] = temp; + + /* Keys 2 and 12 */ + temp = ks->k[index + 2]; + gift128b_swap_move(temp, temp, 0x11111111U, 3); + gift128b_swap_move(temp, temp, 0x03030303U, 6); + gift128b_swap_move(temp, temp, 0x000F000FU, 12); + gift128b_swap_move(temp, temp, 0x000000FFU, 24); + ks->k[index + 2] = temp; + + /* Keys 3 and 13 */ + temp = ks->k[index + 3]; + gift128b_swap_move(temp, temp, 0x11111111U, 3); + gift128b_swap_move(temp, temp, 0x03030303U, 6); + gift128b_swap_move(temp, temp, 0x000F000FU, 12); + gift128b_swap_move(temp, temp, 0x000000FFU, 24); + ks->k[index + 3] = temp; + + /* Keys 4 and 14 */ + temp = ks->k[index + 4]; + gift128b_swap_move(temp, temp, 0x0000AAAAU, 15); + gift128b_swap_move(temp, temp, 0x00003333U, 18); + gift128b_swap_move(temp, temp, 0x0000F0F0U, 12); + gift128b_swap_move(temp, temp, 0x000000FFU, 24); + ks->k[index + 4] = temp; + + /* Keys 5 and 15 */ + temp = ks->k[index + 5]; + gift128b_swap_move(temp, temp, 0x0000AAAAU, 15); + gift128b_swap_move(temp, temp, 0x00003333U, 18); + gift128b_swap_move(temp, temp, 0x0000F0F0U, 12); + gift128b_swap_move(temp, temp, 0x000000FFU, 24); + ks->k[index + 5] = temp; + + /* Keys 6 and 16 */ + temp = ks->k[index + 6]; + gift128b_swap_move(temp, temp, 0x0A0A0A0AU, 3); + gift128b_swap_move(temp, temp, 0x00CC00CCU, 6); + gift128b_swap_move(temp, temp, 0x0000F0F0U, 12); + gift128b_swap_move(temp, temp, 0x000000FFU, 24); + ks->k[index + 6] = temp; + + /* Keys 7 and 17 */ + temp = ks->k[index + 7]; + gift128b_swap_move(temp, temp, 0x0A0A0A0AU, 3); + gift128b_swap_move(temp, temp, 0x00CC00CCU, 6); + gift128b_swap_move(temp, temp, 0x0000F0F0U, 12); + gift128b_swap_move(temp, temp, 0x000000FFU, 24); + ks->k[index + 7] = temp; + + /* Keys 8, 9, 18, and 19 do not need any adjustment */ + } + +#if GIFT128_VARIANT == GIFT128_VARIANT_FULL + /* Derive the fixsliced keys for the remaining rounds 11..40 */ + for (index = 20; index < 80; index += 10) { + gift128b_derive_keys(ks->k + index, ks->k + index - 20); + } +#endif +} + +void gift128b_init(gift128b_key_schedule_t *ks, const unsigned char *key) +{ + gift128b_compute_round_keys + (ks, be_load_word32(key), be_load_word32(key + 4), + be_load_word32(key + 8), be_load_word32(key + 12)); +} + +void gift128n_init(gift128n_key_schedule_t *ks, const unsigned char *key) +{ + /* Use the little-endian key byte order from the HYENA submission */ + gift128b_compute_round_keys + (ks, le_load_word32(key + 12), le_load_word32(key + 8), + le_load_word32(key + 4), le_load_word32(key)); +} + +/** + * \brief Performs the GIFT-128 S-box on the bit-sliced state. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_sbox(s0, s1, s2, s3) \ + do { \ + s1 ^= s0 & s2; \ + s0 ^= s1 & s3; \ + s2 ^= s0 | s1; \ + s3 ^= s2; \ + s1 ^= s3; \ + s3 ^= 0xFFFFFFFFU; \ + s2 ^= s0 & s1; \ + } while (0) + +/** + * \brief Performs the inverse of the GIFT-128 S-box on the bit-sliced state. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_inv_sbox(s0, s1, s2, s3) \ + do { \ + s2 ^= s3 & s1; \ + s0 ^= 0xFFFFFFFFU; \ + s1 ^= s0; \ + s0 ^= s2; \ + s2 ^= s3 | s1; \ + s3 ^= s1 & s0; \ + s1 ^= s3 & s2; \ + } while (0) + +/** + * \brief Permutes the GIFT-128 state between the 1st and 2nd mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_permute_state_1(s0, s1, s2, s3) \ + do { \ + s1 = ((s1 >> 2) & 0x33333333U) | ((s1 & 0x33333333U) << 2); \ + s2 = ((s2 >> 3) & 0x11111111U) | ((s2 & 0x77777777U) << 1); \ + s3 = ((s3 >> 1) & 0x77777777U) | ((s3 & 0x11111111U) << 3); \ + } while (0); + +/** + * \brief Permutes the GIFT-128 state between the 2nd and 3rd mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_permute_state_2(s0, s1, s2, s3) \ + do { \ + s0 = ((s0 >> 4) & 0x0FFF0FFFU) | ((s0 & 0x000F000FU) << 12); \ + s1 = ((s1 >> 8) & 0x00FF00FFU) | ((s1 & 0x00FF00FFU) << 8); \ + s2 = ((s2 >> 12) & 0x000F000FU) | ((s2 & 0x0FFF0FFFU) << 4); \ + } while (0); + +/** + * \brief Permutes the GIFT-128 state between the 3rd and 4th mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_permute_state_3(s0, s1, s2, s3) \ + do { \ + gift128b_swap_move(s1, s1, 0x55555555U, 1); \ + s2 = leftRotate16(s2); \ + gift128b_swap_move(s2, s2, 0x00005555U, 1); \ + s3 = leftRotate16(s3); \ + gift128b_swap_move(s3, s3, 0x55550000U, 1); \ + } while (0); + +/** + * \brief Permutes the GIFT-128 state between the 4th and 5th mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_permute_state_4(s0, s1, s2, s3) \ + do { \ + s0 = ((s0 >> 6) & 0x03030303U) | ((s0 & 0x3F3F3F3FU) << 2); \ + s1 = ((s1 >> 4) & 0x0F0F0F0FU) | ((s1 & 0x0F0F0F0FU) << 4); \ + s2 = ((s2 >> 2) & 0x3F3F3F3FU) | ((s2 & 0x03030303U) << 6); \ + } while (0); + +/** + * \brief Permutes the GIFT-128 state between the 5th and 1st mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_permute_state_5(s0, s1, s2, s3) \ + do { \ + s1 = leftRotate16(s1); \ + s2 = rightRotate8(s2); \ + s3 = leftRotate8(s3); \ + } while (0); + +/** + * \brief Inverts the GIFT-128 state between the 1st and 2nd mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_inv_permute_state_1(s0, s1, s2, s3) \ + do { \ + s1 = ((s1 >> 2) & 0x33333333U) | ((s1 & 0x33333333U) << 2); \ + s2 = ((s2 >> 1) & 0x77777777U) | ((s2 & 0x11111111U) << 3); \ + s3 = ((s3 >> 3) & 0x11111111U) | ((s3 & 0x77777777U) << 1); \ + } while (0); + +/** + * \brief Inverts the GIFT-128 state between the 2nd and 3rd mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_inv_permute_state_2(s0, s1, s2, s3) \ + do { \ + s0 = ((s0 >> 12) & 0x000F000FU) | ((s0 & 0x0FFF0FFFU) << 4); \ + s1 = ((s1 >> 8) & 0x00FF00FFU) | ((s1 & 0x00FF00FFU) << 8); \ + s2 = ((s2 >> 4) & 0x0FFF0FFFU) | ((s2 & 0x000F000FU) << 12); \ + } while (0); + +/** + * \brief Inverts the GIFT-128 state between the 3rd and 4th mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_inv_permute_state_3(s0, s1, s2, s3) \ + do { \ + gift128b_swap_move(s1, s1, 0x55555555U, 1); \ + gift128b_swap_move(s2, s2, 0x00005555U, 1); \ + s2 = leftRotate16(s2); \ + gift128b_swap_move(s3, s3, 0x55550000U, 1); \ + s3 = leftRotate16(s3); \ + } while (0); + +/** + * \brief Inverts the GIFT-128 state between the 4th and 5th mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_inv_permute_state_4(s0, s1, s2, s3) \ + do { \ + s0 = ((s0 >> 2) & 0x3F3F3F3FU) | ((s0 & 0x03030303U) << 6); \ + s1 = ((s1 >> 4) & 0x0F0F0F0FU) | ((s1 & 0x0F0F0F0FU) << 4); \ + s2 = ((s2 >> 6) & 0x03030303U) | ((s2 & 0x3F3F3F3FU) << 2); \ + } while (0); + +/** + * \brief Inverts the GIFT-128 state between the 5th and 1st mini-rounds. + * + * \param s0 First word of the bit-sliced state. + * \param s1 Second word of the bit-sliced state. + * \param s2 Third word of the bit-sliced state. + * \param s3 Fourth word of the bit-sliced state. + */ +#define gift128b_inv_permute_state_5(s0, s1, s2, s3) \ + do { \ + s1 = leftRotate16(s1); \ + s2 = leftRotate8(s2); \ + s3 = rightRotate8(s3); \ + } while (0); + +/** + * \brief Performs five fixsliced encryption rounds for GIFT-128. + * + * \param rk Points to the 10 round keys for these rounds. + * \param rc Points to the round constants for these rounds. + * + * We perform all 40 rounds of the fixsliced GIFT-128 five at a time. + * + * The permutation is restructured so that one of the words each round + * does not need to be permuted, with the others rotating left, up, right, + * and down to keep the bits in line with their non-moving counterparts. + * This reduces the number of shifts required significantly. + * + * At the end of five rounds, the bit ordering will return to the + * original position. We then repeat the process for the next 5 rounds. + */ +#define gift128b_encrypt_5_rounds(rk, rc) \ + do { \ + /* 1st round - S-box, rotate left, add round key */ \ + gift128b_sbox(s0, s1, s2, s3); \ + gift128b_permute_state_1(s0, s1, s2, s3); \ + s1 ^= (rk)[0]; \ + s2 ^= (rk)[1]; \ + s0 ^= (rc)[0]; \ + \ + /* 2nd round - S-box, rotate up, add round key */ \ + gift128b_sbox(s3, s1, s2, s0); \ + gift128b_permute_state_2(s0, s1, s2, s3); \ + s1 ^= (rk)[2]; \ + s2 ^= (rk)[3]; \ + s3 ^= (rc)[1]; \ + \ + /* 3rd round - S-box, swap columns, add round key */ \ + gift128b_sbox(s0, s1, s2, s3); \ + gift128b_permute_state_3(s0, s1, s2, s3); \ + s1 ^= (rk)[4]; \ + s2 ^= (rk)[5]; \ + s0 ^= (rc)[2]; \ + \ + /* 4th round - S-box, rotate left and swap rows, add round key */ \ + gift128b_sbox(s3, s1, s2, s0); \ + gift128b_permute_state_4(s0, s1, s2, s3); \ + s1 ^= (rk)[6]; \ + s2 ^= (rk)[7]; \ + s3 ^= (rc)[3]; \ + \ + /* 5th round - S-box, rotate up, add round key */ \ + gift128b_sbox(s0, s1, s2, s3); \ + gift128b_permute_state_5(s0, s1, s2, s3); \ + s1 ^= (rk)[8]; \ + s2 ^= (rk)[9]; \ + s0 ^= (rc)[4]; \ + \ + /* Swap s0 and s3 in preparation for the next 1st round */ \ + s0 ^= s3; \ + s3 ^= s0; \ + s0 ^= s3; \ + } while (0) + +/** + * \brief Performs five fixsliced decryption rounds for GIFT-128. + * + * \param rk Points to the 10 round keys for these rounds. + * \param rc Points to the round constants for these rounds. + * + * We perform all 40 rounds of the fixsliced GIFT-128 five at a time. + */ +#define gift128b_decrypt_5_rounds(rk, rc) \ + do { \ + /* Swap s0 and s3 in preparation for the next 5th round */ \ + s0 ^= s3; \ + s3 ^= s0; \ + s0 ^= s3; \ + \ + /* 5th round - S-box, rotate down, add round key */ \ + s1 ^= (rk)[8]; \ + s2 ^= (rk)[9]; \ + s0 ^= (rc)[4]; \ + gift128b_inv_permute_state_5(s0, s1, s2, s3); \ + gift128b_inv_sbox(s3, s1, s2, s0); \ + \ + /* 4th round - S-box, rotate right and swap rows, add round key */ \ + s1 ^= (rk)[6]; \ + s2 ^= (rk)[7]; \ + s3 ^= (rc)[3]; \ + gift128b_inv_permute_state_4(s0, s1, s2, s3); \ + gift128b_inv_sbox(s0, s1, s2, s3); \ + \ + /* 3rd round - S-box, swap columns, add round key */ \ + s1 ^= (rk)[4]; \ + s2 ^= (rk)[5]; \ + s0 ^= (rc)[2]; \ + gift128b_inv_permute_state_3(s0, s1, s2, s3); \ + gift128b_inv_sbox(s3, s1, s2, s0); \ + \ + /* 2nd round - S-box, rotate down, add round key */ \ + s1 ^= (rk)[2]; \ + s2 ^= (rk)[3]; \ + s3 ^= (rc)[1]; \ + gift128b_inv_permute_state_2(s0, s1, s2, s3); \ + gift128b_inv_sbox(s0, s1, s2, s3); \ + \ + /* 1st round - S-box, rotate right, add round key */ \ + s1 ^= (rk)[0]; \ + s2 ^= (rk)[1]; \ + s0 ^= (rc)[0]; \ + gift128b_inv_permute_state_1(s0, s1, s2, s3); \ + gift128b_inv_sbox(s3, s1, s2, s0); \ + } while (0) + +#else /* GIFT128_VARIANT_TINY */ + +void gift128b_init(gift128b_key_schedule_t *ks, const unsigned char *key) +{ + /* Mirror the fixslicing word order of 3, 1, 2, 0 */ + ks->k[0] = be_load_word32(key + 12); + ks->k[1] = be_load_word32(key + 4); + ks->k[2] = be_load_word32(key + 8); + ks->k[3] = be_load_word32(key); +} + +void gift128n_init(gift128n_key_schedule_t *ks, const unsigned char *key) +{ + /* Use the little-endian key byte order from the HYENA submission + * and mirror the fixslicing word order of 3, 1, 2, 0 */ + ks->k[0] = le_load_word32(key); + ks->k[1] = le_load_word32(key + 8); + ks->k[2] = le_load_word32(key + 4); + ks->k[3] = le_load_word32(key + 12); +} + +#endif /* GIFT128_VARIANT_TINY */ + +#if GIFT128_VARIANT == GIFT128_VARIANT_SMALL + +void gift128b_encrypt + (const gift128b_key_schedule_t *ks, unsigned char *output, + const unsigned char *input) +{ + uint32_t s0, s1, s2, s3; + uint32_t k[20]; + + /* Copy the plaintext into the state buffer and convert from big endian */ + s0 = be_load_word32(input); + s1 = be_load_word32(input + 4); + s2 = be_load_word32(input + 8); + s3 = be_load_word32(input + 12); + + /* Perform all 40 rounds five at a time using the fixsliced method */ + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); + gift128b_derive_keys(k, ks->k); + gift128b_derive_keys(k + 10, ks->k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 10); + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 15); + gift128b_derive_keys(k, k); + gift128b_derive_keys(k + 10, k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 20); + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 25); + gift128b_derive_keys(k, k); + gift128b_derive_keys(k + 10, k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 30); + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 35); + + /* Pack the state into the ciphertext buffer in big endian */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); +} + +void gift128b_encrypt_preloaded + (const gift128b_key_schedule_t *ks, uint32_t output[4], + const uint32_t input[4]) +{ + uint32_t s0, s1, s2, s3; + uint32_t k[20]; + + /* Copy the plaintext into local variables */ + s0 = input[0]; + s1 = input[1]; + s2 = input[2]; + s3 = input[3]; + + /* Perform all 40 rounds five at a time using the fixsliced method */ + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); + gift128b_derive_keys(k, ks->k); + gift128b_derive_keys(k + 10, ks->k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 10); + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 15); + gift128b_derive_keys(k, k); + gift128b_derive_keys(k + 10, k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 20); + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 25); + gift128b_derive_keys(k, k); + gift128b_derive_keys(k + 10, k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 30); + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 35); + + /* Pack the state into the ciphertext buffer */ + output[0] = s0; + output[1] = s1; + output[2] = s2; + output[3] = s3; +} + +void gift128t_encrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input, uint32_t tweak) +{ + uint32_t s0, s1, s2, s3; + uint32_t k[20]; + + /* Copy the plaintext into the state buffer and convert from nibbles */ + gift128n_to_words(output, input); + s0 = be_load_word32(output); + s1 = be_load_word32(output + 4); + s2 = be_load_word32(output + 8); + s3 = be_load_word32(output + 12); + + /* Perform all 40 rounds five at a time using the fixsliced method. + * Every 5 rounds except the last we add the tweak value to the state */ + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + s0 ^= tweak; + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); + s0 ^= tweak; + gift128b_derive_keys(k, ks->k); + gift128b_derive_keys(k + 10, ks->k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 10); + s0 ^= tweak; + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 15); + s0 ^= tweak; + gift128b_derive_keys(k, k); + gift128b_derive_keys(k + 10, k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 20); + s0 ^= tweak; + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 25); + s0 ^= tweak; + gift128b_derive_keys(k, k); + gift128b_derive_keys(k + 10, k + 10); + gift128b_encrypt_5_rounds(k, GIFT128_RC_fixsliced + 30); + s0 ^= tweak; + gift128b_encrypt_5_rounds(k + 10, GIFT128_RC_fixsliced + 35); + + /* Pack the state into the ciphertext buffer in nibble form */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); + gift128n_to_nibbles(output, output); +} + +#elif GIFT128_VARIANT == GIFT128_VARIANT_FULL + +void gift128b_encrypt + (const gift128b_key_schedule_t *ks, unsigned char *output, + const unsigned char *input) +{ + uint32_t s0, s1, s2, s3; + + /* Copy the plaintext into the state buffer and convert from big endian */ + s0 = be_load_word32(input); + s1 = be_load_word32(input + 4); + s2 = be_load_word32(input + 8); + s3 = be_load_word32(input + 12); + + /* Perform all 40 rounds five at a time using the fixsliced method */ + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); + gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); + gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); + gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); + gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); + gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); + gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); + + /* Pack the state into the ciphertext buffer in big endian */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); +} + +void gift128b_encrypt_preloaded + (const gift128b_key_schedule_t *ks, uint32_t output[4], + const uint32_t input[4]) +{ + uint32_t s0, s1, s2, s3; + + /* Copy the plaintext into local variables */ + s0 = input[0]; + s1 = input[1]; + s2 = input[2]; + s3 = input[3]; + + /* Perform all 40 rounds five at a time using the fixsliced method */ + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); + gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); + gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); + gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); + gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); + gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); + gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); + + /* Pack the state into the ciphertext buffer */ + output[0] = s0; + output[1] = s1; + output[2] = s2; + output[3] = s3; +} + +void gift128t_encrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input, uint32_t tweak) +{ + uint32_t s0, s1, s2, s3; + + /* Copy the plaintext into the state buffer and convert from nibbles */ + gift128n_to_words(output, input); + s0 = be_load_word32(output); + s1 = be_load_word32(output + 4); + s2 = be_load_word32(output + 8); + s3 = be_load_word32(output + 12); + + /* Perform all 40 rounds five at a time using the fixsliced method. + * Every 5 rounds except the last we add the tweak value to the state */ + gift128b_encrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + s0 ^= tweak; + gift128b_encrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); + s0 ^= tweak; + gift128b_encrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); + s0 ^= tweak; + gift128b_encrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); + s0 ^= tweak; + gift128b_encrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); + s0 ^= tweak; + gift128b_encrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); + s0 ^= tweak; + gift128b_encrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); + s0 ^= tweak; + gift128b_encrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); + + /* Pack the state into the ciphertext buffer in nibble form */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); + gift128n_to_nibbles(output, output); +} + +#else /* GIFT128_VARIANT_TINY */ + +void gift128b_encrypt + (const gift128b_key_schedule_t *ks, unsigned char *output, + const unsigned char *input) +{ + uint32_t s0, s1, s2, s3; + uint32_t w0, w1, w2, w3; + uint32_t temp; + uint8_t round; + + /* Copy the plaintext into the state buffer and convert from big endian */ + s0 = be_load_word32(input); + s1 = be_load_word32(input + 4); + s2 = be_load_word32(input + 8); + s3 = be_load_word32(input + 12); + + /* The key schedule is initialized with the key itself */ + w0 = ks->k[3]; + w1 = ks->k[1]; + w2 = ks->k[2]; + w3 = ks->k[0]; + + /* Perform all 40 rounds */ + for (round = 0; round < 40; ++round) { + /* SubCells - apply the S-box */ + s1 ^= s0 & s2; + s0 ^= s1 & s3; + s2 ^= s0 | s1; + s3 ^= s2; + s1 ^= s3; + s3 ^= 0xFFFFFFFFU; + s2 ^= s0 & s1; + temp = s0; + s0 = s3; + s3 = temp; + + /* PermBits - apply the 128-bit permutation */ + PERM0(s0); + PERM1(s1); + PERM2(s2); + PERM3(s3); + + /* AddRoundKey - XOR in the key schedule and the round constant */ + s2 ^= w1; + s1 ^= w3; + s3 ^= 0x80000000U ^ GIFT128_RC[round]; + + /* Rotate the key schedule */ + temp = w3; + w3 = w2; + w2 = w1; + w1 = w0; + w0 = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | + ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); + } + + /* Pack the state into the ciphertext buffer in big endian */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); +} + +void gift128b_encrypt_preloaded + (const gift128b_key_schedule_t *ks, uint32_t output[4], + const uint32_t input[4]) +{ + uint32_t s0, s1, s2, s3; + uint32_t w0, w1, w2, w3; + uint32_t temp; + uint8_t round; + + /* Copy the plaintext into the state buffer */ + s0 = input[0]; + s1 = input[1]; + s2 = input[2]; + s3 = input[3]; + + /* The key schedule is initialized with the key itself */ + w0 = ks->k[3]; + w1 = ks->k[1]; + w2 = ks->k[2]; + w3 = ks->k[0]; + + /* Perform all 40 rounds */ + for (round = 0; round < 40; ++round) { + /* SubCells - apply the S-box */ + s1 ^= s0 & s2; + s0 ^= s1 & s3; + s2 ^= s0 | s1; + s3 ^= s2; + s1 ^= s3; + s3 ^= 0xFFFFFFFFU; + s2 ^= s0 & s1; + temp = s0; + s0 = s3; + s3 = temp; + + /* PermBits - apply the 128-bit permutation */ + PERM0(s0); + PERM1(s1); + PERM2(s2); + PERM3(s3); + + /* AddRoundKey - XOR in the key schedule and the round constant */ + s2 ^= w1; + s1 ^= w3; + s3 ^= 0x80000000U ^ GIFT128_RC[round]; + + /* Rotate the key schedule */ + temp = w3; + w3 = w2; + w2 = w1; + w1 = w0; + w0 = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | + ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); + } + + /* Pack the state into the ciphertext buffer */ + output[0] = s0; + output[1] = s1; + output[2] = s2; + output[3] = s3; +} + +void gift128t_encrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input, uint32_t tweak) +{ + uint32_t s0, s1, s2, s3; + uint32_t w0, w1, w2, w3; + uint32_t temp; + uint8_t round; + + /* Copy the plaintext into the state buffer and convert from nibbles */ + gift128n_to_words(output, input); + s0 = be_load_word32(output); + s1 = be_load_word32(output + 4); + s2 = be_load_word32(output + 8); + s3 = be_load_word32(output + 12); + + /* The key schedule is initialized with the key itself */ + w0 = ks->k[3]; + w1 = ks->k[1]; + w2 = ks->k[2]; + w3 = ks->k[0]; + + /* Perform all 40 rounds */ + for (round = 0; round < 40; ++round) { + /* SubCells - apply the S-box */ + s1 ^= s0 & s2; + s0 ^= s1 & s3; + s2 ^= s0 | s1; + s3 ^= s2; + s1 ^= s3; + s3 ^= 0xFFFFFFFFU; + s2 ^= s0 & s1; + temp = s0; + s0 = s3; + s3 = temp; + + /* PermBits - apply the 128-bit permutation */ + PERM0(s0); + PERM1(s1); + PERM2(s2); + PERM3(s3); + + /* AddRoundKey - XOR in the key schedule and the round constant */ + s2 ^= w1; + s1 ^= w3; + s3 ^= 0x80000000U ^ GIFT128_RC[round]; + + /* AddTweak - XOR in the tweak every 5 rounds except the last */ + if (((round + 1) % 5) == 0 && round < 39) + s0 ^= tweak; + + /* Rotate the key schedule */ + temp = w3; + w3 = w2; + w2 = w1; + w1 = w0; + w0 = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | + ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); + } + + /* Pack the state into the ciphertext buffer in nibble form */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); + gift128n_to_nibbles(output, output); +} + +#endif /* GIFT128_VARIANT_TINY */ + +#if GIFT128_VARIANT == GIFT128_VARIANT_FULL + +void gift128b_decrypt + (const gift128b_key_schedule_t *ks, unsigned char *output, + const unsigned char *input) +{ + uint32_t s0, s1, s2, s3; + + /* Copy the plaintext into the state buffer and convert from big endian */ + s0 = be_load_word32(input); + s1 = be_load_word32(input + 4); + s2 = be_load_word32(input + 8); + s3 = be_load_word32(input + 12); + + /* Perform all 40 rounds five at a time using the fixsliced method */ + gift128b_decrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); + gift128b_decrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); + gift128b_decrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); + gift128b_decrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); + gift128b_decrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); + gift128b_decrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); + gift128b_decrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); + gift128b_decrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + + /* Pack the state into the ciphertext buffer in big endian */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); +} + +void gift128t_decrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input, uint32_t tweak) +{ + uint32_t s0, s1, s2, s3; + + /* Copy the ciphertext into the state buffer and convert from nibbles */ + gift128n_to_words(output, input); + s0 = be_load_word32(output); + s1 = be_load_word32(output + 4); + s2 = be_load_word32(output + 8); + s3 = be_load_word32(output + 12); + + /* Perform all 40 rounds five at a time using the fixsliced method. + * Every 5 rounds except the first we add the tweak value to the state */ + gift128b_decrypt_5_rounds(ks->k + 70, GIFT128_RC_fixsliced + 35); + s0 ^= tweak; + gift128b_decrypt_5_rounds(ks->k + 60, GIFT128_RC_fixsliced + 30); + s0 ^= tweak; + gift128b_decrypt_5_rounds(ks->k + 50, GIFT128_RC_fixsliced + 25); + s0 ^= tweak; + gift128b_decrypt_5_rounds(ks->k + 40, GIFT128_RC_fixsliced + 20); + s0 ^= tweak; + gift128b_decrypt_5_rounds(ks->k + 30, GIFT128_RC_fixsliced + 15); + s0 ^= tweak; + gift128b_decrypt_5_rounds(ks->k + 20, GIFT128_RC_fixsliced + 10); + s0 ^= tweak; + gift128b_decrypt_5_rounds(ks->k + 10, GIFT128_RC_fixsliced + 5); + s0 ^= tweak; + gift128b_decrypt_5_rounds(ks->k, GIFT128_RC_fixsliced); + + /* Pack the state into the plaintext buffer in nibble form */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); + gift128n_to_nibbles(output, output); +} + +#else /* GIFT128_VARIANT_SMALL || GIFT128_VARIANT_TINY */ + +/* The small variant uses fixslicing for encryption, but we need to change + * to bitslicing for decryption because of the difficulty of fast-forwarding + * the fixsliced key schedule to the end. So the tiny variant is used for + * decryption when the small variant is selected. Since the NIST AEAD modes + * for GIFT-128 only use the block encrypt operation, the inefficiencies + * in decryption don't matter all that much */ + +/** + * \def gift128b_load_and_forward_schedule() + * \brief Generate the decryption key at the end of the last round. + * + * To do that, we run the block operation forward to determine the + * final state of the key schedule after the last round: + * + * w0 = ks->k[0]; + * w1 = ks->k[1]; + * w2 = ks->k[2]; + * w3 = ks->k[3]; + * for (round = 0; round < 40; ++round) { + * temp = w3; + * w3 = w2; + * w2 = w1; + * w1 = w0; + * w0 = ((temp & 0xFFFC0000U) >> 2) | ((temp & 0x00030000U) << 14) | + * ((temp & 0x00000FFFU) << 4) | ((temp & 0x0000F000U) >> 12); + * } + * + * We can short-cut all of the above by noticing that we don't need + * to do the word rotations. Every 4 rounds, the rotation alignment + * returns to the original position and each word has been rotated + * by applying the "2 right and 4 left" bit-rotation step to it. + * We then repeat that 10 times for the full 40 rounds. The overall + * effect is to apply a "20 right and 40 left" bit-rotation to every + * word in the key schedule. That is equivalent to "4 right and 8 left" + * on the 16-bit sub-words. + */ +#if GIFT128_VARIANT != GIFT128_VARIANT_SMALL +#define gift128b_load_and_forward_schedule() \ + do { \ + w0 = ks->k[3]; \ + w1 = ks->k[1]; \ + w2 = ks->k[2]; \ + w3 = ks->k[0]; \ + w0 = ((w0 & 0xFFF00000U) >> 4) | ((w0 & 0x000F0000U) << 12) | \ + ((w0 & 0x000000FFU) << 8) | ((w0 & 0x0000FF00U) >> 8); \ + w1 = ((w1 & 0xFFF00000U) >> 4) | ((w1 & 0x000F0000U) << 12) | \ + ((w1 & 0x000000FFU) << 8) | ((w1 & 0x0000FF00U) >> 8); \ + w2 = ((w2 & 0xFFF00000U) >> 4) | ((w2 & 0x000F0000U) << 12) | \ + ((w2 & 0x000000FFU) << 8) | ((w2 & 0x0000FF00U) >> 8); \ + w3 = ((w3 & 0xFFF00000U) >> 4) | ((w3 & 0x000F0000U) << 12) | \ + ((w3 & 0x000000FFU) << 8) | ((w3 & 0x0000FF00U) >> 8); \ + } while (0) +#else +/* The small variant needs to also undo some of the rotations that were + * done to generate the fixsliced version of the key schedule */ +#define gift128b_load_and_forward_schedule() \ + do { \ + w0 = ks->k[3]; \ + w1 = ks->k[1]; \ + w2 = ks->k[2]; \ + w3 = ks->k[0]; \ + gift128b_swap_move(w3, w3, 0x000000FFU, 24); \ + gift128b_swap_move(w3, w3, 0x00003333U, 18); \ + gift128b_swap_move(w3, w3, 0x000F000FU, 12); \ + gift128b_swap_move(w3, w3, 0x00550055U, 9); \ + gift128b_swap_move(w1, w1, 0x000000FFU, 24); \ + gift128b_swap_move(w1, w1, 0x00003333U, 18); \ + gift128b_swap_move(w1, w1, 0x000F000FU, 12); \ + gift128b_swap_move(w1, w1, 0x00550055U, 9); \ + gift128b_swap_move(w2, w2, 0x000000FFU, 24); \ + gift128b_swap_move(w2, w2, 0x000F000FU, 12); \ + gift128b_swap_move(w2, w2, 0x03030303U, 6); \ + gift128b_swap_move(w2, w2, 0x11111111U, 3); \ + gift128b_swap_move(w0, w0, 0x000000FFU, 24); \ + gift128b_swap_move(w0, w0, 0x000F000FU, 12); \ + gift128b_swap_move(w0, w0, 0x03030303U, 6); \ + gift128b_swap_move(w0, w0, 0x11111111U, 3); \ + w0 = ((w0 & 0xFFF00000U) >> 4) | ((w0 & 0x000F0000U) << 12) | \ + ((w0 & 0x000000FFU) << 8) | ((w0 & 0x0000FF00U) >> 8); \ + w1 = ((w1 & 0xFFF00000U) >> 4) | ((w1 & 0x000F0000U) << 12) | \ + ((w1 & 0x000000FFU) << 8) | ((w1 & 0x0000FF00U) >> 8); \ + w2 = ((w2 & 0xFFF00000U) >> 4) | ((w2 & 0x000F0000U) << 12) | \ + ((w2 & 0x000000FFU) << 8) | ((w2 & 0x0000FF00U) >> 8); \ + w3 = ((w3 & 0xFFF00000U) >> 4) | ((w3 & 0x000F0000U) << 12) | \ + ((w3 & 0x000000FFU) << 8) | ((w3 & 0x0000FF00U) >> 8); \ + } while (0) +#endif + +void gift128b_decrypt + (const gift128b_key_schedule_t *ks, unsigned char *output, + const unsigned char *input) +{ + uint32_t s0, s1, s2, s3; + uint32_t w0, w1, w2, w3; + uint32_t temp; + uint8_t round; + + /* Copy the ciphertext into the state buffer and convert from big endian */ + s0 = be_load_word32(input); + s1 = be_load_word32(input + 4); + s2 = be_load_word32(input + 8); + s3 = be_load_word32(input + 12); + + /* Generate the decryption key at the end of the last round */ + gift128b_load_and_forward_schedule(); + + /* Perform all 40 rounds */ + for (round = 40; round > 0; --round) { + /* Rotate the key schedule backwards */ + temp = w0; + w0 = w1; + w1 = w2; + w2 = w3; + w3 = ((temp & 0x3FFF0000U) << 2) | ((temp & 0xC0000000U) >> 14) | + ((temp & 0x0000FFF0U) >> 4) | ((temp & 0x0000000FU) << 12); + + /* AddRoundKey - XOR in the key schedule and the round constant */ + s2 ^= w1; + s1 ^= w3; + s3 ^= 0x80000000U ^ GIFT128_RC[round - 1]; + + /* InvPermBits - apply the inverse of the 128-bit permutation */ + INV_PERM0(s0); + INV_PERM1(s1); + INV_PERM2(s2); + INV_PERM3(s3); + + /* InvSubCells - apply the inverse of the S-box */ + temp = s0; + s0 = s3; + s3 = temp; + s2 ^= s0 & s1; + s3 ^= 0xFFFFFFFFU; + s1 ^= s3; + s3 ^= s2; + s2 ^= s0 | s1; + s0 ^= s1 & s3; + s1 ^= s0 & s2; + } + + /* Pack the state into the plaintext buffer in big endian */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); +} + +void gift128t_decrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input, uint32_t tweak) +{ + uint32_t s0, s1, s2, s3; + uint32_t w0, w1, w2, w3; + uint32_t temp; + uint8_t round; + + /* Copy the plaintext into the state buffer and convert from nibbles */ + gift128n_to_words(output, input); + s0 = be_load_word32(output); + s1 = be_load_word32(output + 4); + s2 = be_load_word32(output + 8); + s3 = be_load_word32(output + 12); + + /* Generate the decryption key at the end of the last round */ + gift128b_load_and_forward_schedule(); + + /* Perform all 40 rounds */ + for (round = 40; round > 0; --round) { + /* Rotate the key schedule backwards */ + temp = w0; + w0 = w1; + w1 = w2; + w2 = w3; + w3 = ((temp & 0x3FFF0000U) << 2) | ((temp & 0xC0000000U) >> 14) | + ((temp & 0x0000FFF0U) >> 4) | ((temp & 0x0000000FU) << 12); + + /* AddTweak - XOR in the tweak every 5 rounds except the last */ + if ((round % 5) == 0 && round < 40) + s0 ^= tweak; + + /* AddRoundKey - XOR in the key schedule and the round constant */ + s2 ^= w1; + s1 ^= w3; + s3 ^= 0x80000000U ^ GIFT128_RC[round - 1]; + + /* InvPermBits - apply the inverse of the 128-bit permutation */ + INV_PERM0(s0); + INV_PERM1(s1); + INV_PERM2(s2); + INV_PERM3(s3); + + /* InvSubCells - apply the inverse of the S-box */ + temp = s0; + s0 = s3; + s3 = temp; + s2 ^= s0 & s1; + s3 ^= 0xFFFFFFFFU; + s1 ^= s3; + s3 ^= s2; + s2 ^= s0 | s1; + s0 ^= s1 & s3; + s1 ^= s0 & s2; + } + + /* Pack the state into the plaintext buffer in nibble form */ + be_store_word32(output, s0); + be_store_word32(output + 4, s1); + be_store_word32(output + 8, s2); + be_store_word32(output + 12, s3); + gift128n_to_nibbles(output, output); +} + +#endif /* GIFT128_VARIANT_SMALL || GIFT128_VARIANT_TINY */ + +#endif /* !GIFT128_VARIANT_ASM */ diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128.h b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128.h new file mode 100644 index 0000000..f57d143 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128.h @@ -0,0 +1,246 @@ +/* + * Copyright (C) 2020 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef LW_INTERNAL_GIFT128_H +#define LW_INTERNAL_GIFT128_H + +/** + * \file internal-gift128.h + * \brief GIFT-128 block cipher. + * + * There are three versions of GIFT-128 in use within the second round + * submissions to the NIST lightweight cryptography competition. + * + * The most efficient version for 32-bit software implementation is the + * GIFT-128-b bit-sliced version from GIFT-COFB and SUNDAE-GIFT. + * + * The second is the nibble-based version from HYENA. We implement the + * HYENA version as a wrapper around the bit-sliced version. + * + * The third version is a variant on the HYENA nibble-based version that + * includes a 4-bit tweak value for domain separation. It is used by + * the ESTATE submission to NIST. + * + * Technically there is a fourth version of GIFT-128 which is the one that + * appeared in the original GIFT-128 paper. It is almost the same as the + * HYENA version except that the byte ordering is big-endian instead of + * HYENA's little-endian. The original version of GIFT-128 doesn't appear + * in any of the NIST submissions so we don't bother with it in this library. + * + * References: https://eprint.iacr.org/2017/622.pdf, + * https://eprint.iacr.org/2020/412.pdf, + * https://giftcipher.github.io/gift/ + */ + +#include +#include +#include "internal-gift128-config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Size of a GIFT-128 block in bytes. + */ +#define GIFT128_BLOCK_SIZE 16 + +/** + * \var GIFT128_ROUND_KEYS + * \brief Number of round keys for the GIFT-128 key schedule. + */ +#if GIFT128_VARIANT == GIFT128_VARIANT_TINY +#define GIFT128_ROUND_KEYS 4 +#elif GIFT128_VARIANT == GIFT128_VARIANT_SMALL +#define GIFT128_ROUND_KEYS 20 +#else +#define GIFT128_ROUND_KEYS 80 +#endif + +/** + * \brief Structure of the key schedule for GIFT-128 (bit-sliced). + */ +typedef struct +{ + /** Pre-computed round keys for bit-sliced GIFT-128 */ + uint32_t k[GIFT128_ROUND_KEYS]; + +} gift128b_key_schedule_t; + +/** + * \brief Initializes the key schedule for GIFT-128 (bit-sliced). + * + * \param ks Points to the key schedule to initialize. + * \param key Points to the 16 bytes of the key data. + */ +void gift128b_init(gift128b_key_schedule_t *ks, const unsigned char *key); + +/** + * \brief Encrypts a 128-bit block with GIFT-128 (bit-sliced). + * + * \param ks Points to the GIFT-128 key schedule. + * \param output Output buffer which must be at least 16 bytes in length. + * \param input Input buffer which must be at least 16 bytes in length. + * + * The \a input and \a output buffers can be the same buffer for + * in-place encryption. + */ +void gift128b_encrypt + (const gift128b_key_schedule_t *ks, unsigned char *output, + const unsigned char *input); + +/** + * \brief Encrypts a 128-bit block with GIFT-128 (bit-sliced and pre-loaded). + * + * \param ks Points to the GIFT-128 key schedule. + * \param output Output buffer which must be at least 16 bytes in length. + * \param input Input buffer which must be at least 16 bytes in length. + * + * The \a input and \a output buffers can be the same buffer for + * in-place encryption. + * + * This version assumes that the input has already been pre-loaded from + * big-endian into host byte order in the supplied word array. The output + * is delivered in the same way. + */ +void gift128b_encrypt_preloaded + (const gift128b_key_schedule_t *ks, uint32_t output[4], + const uint32_t input[4]); + +/** + * \brief Decrypts a 128-bit block with GIFT-128 (bit-sliced). + * + * \param ks Points to the GIFT-128 key schedule. + * \param output Output buffer which must be at least 16 bytes in length. + * \param input Input buffer which must be at least 16 bytes in length. + * + * The \a input and \a output buffers can be the same buffer for + * in-place decryption. + */ +void gift128b_decrypt + (const gift128b_key_schedule_t *ks, unsigned char *output, + const unsigned char *input); + +/** + * \brief Structure of the key schedule for GIFT-128 (nibble-based). + */ +typedef gift128b_key_schedule_t gift128n_key_schedule_t; + +/** + * \brief Initializes the key schedule for GIFT-128 (nibble-based). + * + * \param ks Points to the key schedule to initialize. + * \param key Points to the 16 bytes of the key data. + */ +void gift128n_init(gift128n_key_schedule_t *ks, const unsigned char *key); + +/** + * \brief Encrypts a 128-bit block with GIFT-128 (nibble-based). + * + * \param ks Points to the GIFT-128 key schedule. + * \param output Output buffer which must be at least 16 bytes in length. + * \param input Input buffer which must be at least 16 bytes in length. + * + * The \a input and \a output buffers can be the same buffer for + * in-place encryption. + */ +void gift128n_encrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input); + +/** + * \brief Decrypts a 128-bit block with GIFT-128 (nibble-based). + * + * \param ks Points to the GIFT-128 key schedule. + * \param output Output buffer which must be at least 16 bytes in length. + * \param input Input buffer which must be at least 16 bytes in length. + * + * The \a input and \a output buffers can be the same buffer for + * in-place decryption. + */ +void gift128n_decrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input); + +/* 4-bit tweak values expanded to 32-bit for TweGIFT-128 */ +#define GIFT128T_TWEAK_0 0x00000000 /**< TweGIFT-128 tweak value 0 */ +#define GIFT128T_TWEAK_1 0xe1e1e1e1 /**< TweGIFT-128 tweak value 1 */ +#define GIFT128T_TWEAK_2 0xd2d2d2d2 /**< TweGIFT-128 tweak value 2 */ +#define GIFT128T_TWEAK_3 0x33333333 /**< TweGIFT-128 tweak value 3 */ +#define GIFT128T_TWEAK_4 0xb4b4b4b4 /**< TweGIFT-128 tweak value 4 */ +#define GIFT128T_TWEAK_5 0x55555555 /**< TweGIFT-128 tweak value 5 */ +#define GIFT128T_TWEAK_6 0x66666666 /**< TweGIFT-128 tweak value 6 */ +#define GIFT128T_TWEAK_7 0x87878787 /**< TweGIFT-128 tweak value 7 */ +#define GIFT128T_TWEAK_8 0x78787878 /**< TweGIFT-128 tweak value 8 */ +#define GIFT128T_TWEAK_9 0x99999999 /**< TweGIFT-128 tweak value 9 */ +#define GIFT128T_TWEAK_10 0xaaaaaaaa /**< TweGIFT-128 tweak value 10 */ +#define GIFT128T_TWEAK_11 0x4b4b4b4b /**< TweGIFT-128 tweak value 11 */ +#define GIFT128T_TWEAK_12 0xcccccccc /**< TweGIFT-128 tweak value 12 */ +#define GIFT128T_TWEAK_13 0x2d2d2d2d /**< TweGIFT-128 tweak value 13 */ +#define GIFT128T_TWEAK_14 0x1e1e1e1e /**< TweGIFT-128 tweak value 14 */ +#define GIFT128T_TWEAK_15 0xffffffff /**< TweGIFT-128 tweak value 15 */ + +/** + * \brief Encrypts a 128-bit block with TweGIFT-128 (tweakable variant). + * + * \param ks Points to the GIFT-128 key schedule. + * \param output Output buffer which must be at least 16 bytes in length. + * \param input Input buffer which must be at least 16 bytes in length. + * \param tweak 4-bit tweak value expanded to 32-bit. + * + * The \a input and \a output buffers can be the same buffer for + * in-place encryption. + * + * This variant of GIFT-128 is used by the ESTATE submission to the + * NIST Lightweight Cryptography Competition. A 4-bit tweak is added to + * some of the rounds to provide domain separation. If the tweak is + * zero, then this function is identical to gift128n_encrypt(). + */ +void gift128t_encrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input, uint32_t tweak); + +/** + * \brief Decrypts a 128-bit block with TweGIFT-128 (tweakable variant). + * + * \param ks Points to the GIFT-128 key schedule. + * \param output Output buffer which must be at least 16 bytes in length. + * \param input Input buffer which must be at least 16 bytes in length. + * \param tweak 4-bit tweak value expanded to 32-bit. + * + * The \a input and \a output buffers can be the same buffer for + * in-place encryption. + * + * This variant of GIFT-128 is used by the ESTATE submission to the + * NIST Lightweight Cryptography Competition. A 4-bit tweak is added to + * some of the rounds to provide domain separation. If the tweak is + * zero, then this function is identical to gift128n_encrypt(). + */ +void gift128t_decrypt + (const gift128n_key_schedule_t *ks, unsigned char *output, + const unsigned char *input, uint32_t tweak); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-full-avr.S b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-full-avr.S new file mode 100644 index 0000000..3a7e6fb --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-full-avr.S @@ -0,0 +1,8173 @@ +#if defined(__AVR__) +#include +/* Automatically generated - do not edit */ + +#include "internal-gift128-config.h" + +#if GIFT128_VARIANT == GIFT128_VARIANT_FULL + + .section .progmem.data,"a",@progbits + .p2align 8 + .type table_0, @object + .size table_0, 160 +table_0: + .byte 8 + .byte 0 + .byte 0 + .byte 16 + .byte 0 + .byte 128 + .byte 1 + .byte 128 + .byte 2 + .byte 0 + .byte 0 + .byte 84 + .byte 129 + .byte 1 + .byte 1 + .byte 1 + .byte 31 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 136 + .byte 16 + .byte 0 + .byte 224 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 81 + .byte 128 + .byte 1 + .byte 3 + .byte 3 + .byte 47 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 8 + .byte 16 + .byte 0 + .byte 96 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 65 + .byte 128 + .byte 0 + .byte 3 + .byte 3 + .byte 39 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 0 + .byte 16 + .byte 0 + .byte 224 + .byte 1 + .byte 64 + .byte 2 + .byte 0 + .byte 80 + .byte 17 + .byte 128 + .byte 1 + .byte 2 + .byte 3 + .byte 43 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 8 + .byte 8 + .byte 16 + .byte 0 + .byte 64 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 64 + .byte 1 + .byte 128 + .byte 0 + .byte 2 + .byte 2 + .byte 33 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 0 + .byte 0 + .byte 16 + .byte 0 + .byte 192 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 81 + .byte 128 + .byte 1 + .byte 1 + .byte 3 + .byte 46 + .byte 0 + .byte 0 + .byte 128 + .byte 0 + .byte 136 + .byte 8 + .byte 16 + .byte 0 + .byte 32 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 64 + .byte 128 + .byte 0 + .byte 3 + .byte 1 + .byte 6 + .byte 0 + .byte 0 + .byte 128 + .byte 8 + .byte 136 + .byte 0 + .byte 16 + .byte 0 + .byte 160 + .byte 1 + .byte 192 + .byte 2 + .byte 0 + .byte 80 + .byte 20 + .byte 129 + .byte 1 + .byte 2 + .byte 1 + .byte 26 + .byte 0 + .byte 0 + .byte 128 + + .text +.global gift128n_init + .type gift128n_init, @function +gift128n_init: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + movw r30,r24 + movw r26,r22 +.L__stack_usage = 18 + ld r22,X+ + ld r23,X+ + ld r28,X+ + ld r29,X+ + ld r6,X+ + ld r7,X+ + ld r8,X+ + ld r9,X+ + ld r2,X+ + ld r3,X+ + ld r4,X+ + ld r5,X+ + ld r10,X+ + ld r11,X+ + ld r12,X+ + ld r13,X+ + st Z+,r22 + st Z+,r23 + st Z+,r28 + st Z+,r29 + st Z+,r2 + st Z+,r3 + st Z+,r4 + st Z+,r5 + st Z+,r6 + st Z+,r7 + st Z+,r8 + st Z+,r9 + st Z+,r10 + st Z+,r11 + st Z+,r12 + st Z+,r13 + ldi r24,4 +33: + st Z+,r2 + st Z+,r3 + st Z+,r4 + st Z+,r5 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + mov r0,r1 + lsr r29 + ror r28 + ror r0 + lsr r29 + ror r28 + ror r0 + or r29,r0 + st Z+,r22 + st Z+,r23 + st Z+,r28 + st Z+,r29 + mov r0,r22 + mov r22,r2 + mov r2,r0 + mov r0,r23 + mov r23,r3 + mov r3,r0 + mov r0,r28 + mov r28,r4 + mov r4,r0 + mov r0,r29 + mov r29,r5 + mov r5,r0 + st Z+,r10 + st Z+,r11 + st Z+,r12 + st Z+,r13 + lsl r6 + rol r7 + adc r6,r1 + lsl r6 + rol r7 + adc r6,r1 + lsl r6 + rol r7 + adc r6,r1 + lsl r6 + rol r7 + adc r6,r1 + mov r0,r1 + lsr r9 + ror r8 + ror r0 + lsr r9 + ror r8 + ror r0 + or r9,r0 + st Z+,r6 + st Z+,r7 + st Z+,r8 + st Z+,r9 + mov r0,r6 + mov r6,r10 + mov r10,r0 + mov r0,r7 + mov r7,r11 + mov r11,r0 + mov r0,r8 + mov r8,r12 + mov r12,r0 + mov r0,r9 + mov r9,r13 + mov r13,r0 + dec r24 + breq 5115f + rjmp 33b +5115: + subi r30,80 + sbc r31,r1 + ldi r24,2 +119: + ld r22,Z + ldd r23,Z+1 + ldd r28,Z+2 + ldd r29,Z+3 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,85 + mov r19,r1 + andi r20,85 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + st Z,r29 + std Z+1,r23 + std Z+2,r28 + std Z+3,r22 + ldd r22,Z+4 + ldd r23,Z+5 + ldd r28,Z+6 + ldd r29,Z+7 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,85 + mov r19,r1 + andi r20,85 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + std Z+4,r29 + std Z+5,r23 + std Z+6,r28 + std Z+7,r22 + ldd r22,Z+8 + ldd r23,Z+9 + ldd r28,Z+10 + ldd r29,Z+11 + movw r18,r22 + movw r20,r28 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,17 + andi r19,17 + andi r20,17 + andi r21,17 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + std Z+8,r29 + std Z+9,r23 + std Z+10,r28 + std Z+11,r22 + ldd r22,Z+12 + ldd r23,Z+13 + ldd r28,Z+14 + ldd r29,Z+15 + movw r18,r22 + movw r20,r28 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,17 + andi r19,17 + andi r20,17 + andi r21,17 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + std Z+12,r29 + std Z+13,r23 + std Z+14,r28 + std Z+15,r22 + ldd r22,Z+16 + ldd r23,Z+17 + ldd r28,Z+18 + ldd r29,Z+19 + movw r18,r22 + movw r20,r28 + mov r0,r1 + lsl r19 + rol r20 + rol r21 + rol r0 + movw r18,r20 + mov r20,r0 + mov r21,r1 + eor r18,r22 + eor r19,r23 + andi r18,170 + andi r19,170 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r0,r1 + lsr r20 + ror r19 + ror r18 + ror r0 + movw r20,r18 + mov r19,r0 + mov r18,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + std Z+16,r29 + std Z+17,r23 + std Z+18,r28 + std Z+19,r22 + ldd r22,Z+20 + ldd r23,Z+21 + ldd r28,Z+22 + ldd r29,Z+23 + movw r18,r22 + movw r20,r28 + mov r0,r1 + lsl r19 + rol r20 + rol r21 + rol r0 + movw r18,r20 + mov r20,r0 + mov r21,r1 + eor r18,r22 + eor r19,r23 + andi r18,170 + andi r19,170 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r0,r1 + lsr r20 + ror r19 + ror r18 + ror r0 + movw r20,r18 + mov r19,r0 + mov r18,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + std Z+20,r29 + std Z+21,r23 + std Z+22,r28 + std Z+23,r22 + ldd r22,Z+24 + ldd r23,Z+25 + ldd r28,Z+26 + ldd r29,Z+27 + movw r18,r22 + movw r20,r28 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,10 + andi r19,10 + andi r20,10 + andi r21,10 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,204 + mov r19,r1 + andi r20,204 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + std Z+24,r29 + std Z+25,r23 + std Z+26,r28 + std Z+27,r22 + ldd r22,Z+28 + ldd r23,Z+29 + ldd r28,Z+30 + ldd r29,Z+31 + movw r18,r22 + movw r20,r28 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,10 + andi r19,10 + andi r20,10 + andi r21,10 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r28 + eor r21,r29 + andi r18,204 + mov r19,r1 + andi r20,204 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + movw r18,r22 + movw r20,r28 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r28,r20 + eor r29,r21 + std Z+28,r29 + std Z+29,r23 + std Z+30,r28 + std Z+31,r22 + dec r24 + breq 1268f + adiw r30,40 + rjmp 119b +1268: + adiw r30,40 + movw r26,r30 + subi r26,80 + sbc r27,r1 + ldi r24,6 +1274: + ld r22,X+ + ld r23,X+ + ld r28,X+ + ld r29,X+ + ld r2,X+ + ld r3,X+ + ld r4,X+ + ld r5,X+ + movw r18,r2 + movw r20,r4 + movw r18,r20 + mov r20,r1 + mov r21,r1 + eor r18,r2 + eor r19,r3 + andi r18,51 + andi r19,51 + eor r2,r18 + eor r3,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + eor r2,r18 + eor r3,r19 + eor r4,r20 + eor r5,r21 + movw r18,r2 + movw r20,r4 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r2 + eor r19,r3 + eor r20,r4 + eor r21,r5 + andi r18,68 + andi r19,68 + andi r20,85 + andi r21,85 + eor r2,r18 + eor r3,r19 + eor r4,r20 + eor r5,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r2,r18 + eor r3,r19 + eor r4,r20 + eor r5,r21 + st Z,r2 + std Z+1,r3 + std Z+2,r4 + std Z+3,r5 + movw r18,r22 + movw r20,r28 + andi r18,51 + andi r19,51 + andi r20,51 + andi r21,51 + andi r22,204 + andi r23,204 + andi r28,204 + andi r29,204 + or r28,r21 + or r29,r18 + or r22,r19 + or r23,r20 + movw r18,r28 + movw r20,r22 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r28 + eor r19,r29 + eor r20,r22 + eor r21,r23 + mov r18,r1 + andi r19,17 + andi r20,85 + andi r21,85 + eor r28,r18 + eor r29,r19 + eor r22,r20 + eor r23,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r28,r18 + eor r29,r19 + eor r22,r20 + eor r23,r21 + std Z+4,r28 + std Z+5,r29 + std Z+6,r22 + std Z+7,r23 + ld r22,X+ + ld r23,X+ + ld r28,X+ + ld r29,X+ + ld r2,X+ + ld r3,X+ + ld r4,X+ + ld r5,X+ + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + swap r3 + lsl r4 + adc r4,r1 + lsl r4 + adc r4,r1 + swap r5 + std Z+8,r2 + std Z+9,r3 + std Z+10,r4 + std Z+11,r5 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r23 + adc r23,r1 + lsl r23 + adc r23,r1 + lsl r28 + adc r28,r1 + lsl r28 + adc r28,r1 + lsl r28 + adc r28,r1 + lsl r29 + adc r29,r1 + lsl r29 + adc r29,r1 + std Z+12,r22 + std Z+13,r23 + std Z+14,r28 + std Z+15,r29 + ld r22,X+ + ld r23,X+ + ld r28,X+ + ld r29,X+ + ld r2,X+ + ld r3,X+ + ld r4,X+ + ld r5,X+ + movw r18,r2 + movw r20,r4 + andi r18,170 + andi r19,170 + andi r20,170 + andi r21,170 + ldi r25,85 + and r2,r25 + and r3,r25 + and r4,r25 + and r5,r25 + or r2,r19 + or r3,r20 + or r4,r21 + or r5,r18 + std Z+16,r4 + std Z+17,r5 + std Z+18,r2 + std Z+19,r3 + movw r18,r22 + movw r20,r28 + andi r18,85 + andi r19,85 + andi r20,85 + andi r21,85 + andi r22,170 + andi r23,170 + andi r28,170 + andi r29,170 + lsl r22 + rol r23 + rol r28 + rol r29 + adc r22,r1 + lsl r22 + rol r23 + rol r28 + rol r29 + adc r22,r1 + lsl r22 + rol r23 + rol r28 + rol r29 + adc r22,r1 + lsl r22 + rol r23 + rol r28 + rol r29 + adc r22,r1 + or r22,r18 + or r23,r19 + or r28,r20 + or r29,r21 + std Z+20,r29 + std Z+21,r22 + std Z+22,r23 + std Z+23,r28 + ld r22,X+ + ld r23,X+ + ld r28,X+ + ld r29,X+ + ld r2,X+ + ld r3,X+ + ld r4,X+ + ld r5,X+ + movw r18,r2 + movw r20,r4 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r2 + eor r19,r3 + eor r20,r4 + eor r21,r5 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r2,r18 + eor r3,r19 + eor r4,r20 + eor r5,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r2,r18 + eor r3,r19 + eor r4,r20 + eor r5,r21 + movw r18,r2 + movw r20,r4 + lsr r21 + ror r20 + ror r19 + ror r18 + andi r18,120 + andi r19,120 + andi r20,120 + andi r21,120 + movw r14,r18 + movw r16,r20 + lsr r17 + ror r16 + ror r15 + ror r14 + lsr r17 + ror r16 + ror r15 + ror r14 + lsr r17 + ror r16 + ror r15 + ror r14 + lsr r17 + ror r16 + ror r15 + ror r14 + eor r14,r18 + eor r15,r19 + eor r16,r20 + eor r17,r21 + ldi r25,8 + and r14,r25 + and r15,r25 + andi r16,8 + andi r17,8 + eor r18,r14 + eor r19,r15 + eor r20,r16 + eor r21,r17 + lsl r14 + rol r15 + rol r16 + rol r17 + lsl r14 + rol r15 + rol r16 + rol r17 + lsl r14 + rol r15 + rol r16 + rol r17 + lsl r14 + rol r15 + rol r16 + rol r17 + eor r18,r14 + eor r19,r15 + eor r20,r16 + eor r21,r17 + ldi r17,15 + and r2,r17 + and r3,r17 + and r4,r17 + and r5,r17 + or r2,r18 + or r3,r19 + or r4,r20 + or r5,r21 + std Z+24,r2 + std Z+25,r3 + std Z+26,r4 + std Z+27,r5 + movw r18,r28 + lsr r19 + ror r18 + lsr r19 + ror r18 + andi r18,48 + andi r19,48 + movw r2,r22 + movw r4,r28 + ldi r16,1 + and r2,r16 + and r3,r16 + and r4,r16 + and r5,r16 + lsl r2 + rol r3 + rol r4 + rol r5 + lsl r2 + rol r3 + rol r4 + rol r5 + lsl r2 + rol r3 + rol r4 + rol r5 + or r2,r18 + or r3,r19 + movw r18,r28 + lsl r18 + rol r19 + lsl r18 + rol r19 + andi r18,192 + andi r19,192 + or r2,r18 + or r3,r19 + movw r18,r22 + andi r18,224 + andi r19,224 + lsr r19 + ror r18 + or r4,r18 + or r5,r19 + movw r18,r22 + movw r20,r28 + lsr r21 + ror r20 + ror r19 + ror r18 + andi r18,7 + andi r19,7 + andi r20,7 + andi r21,7 + or r2,r18 + or r3,r19 + or r4,r20 + or r5,r21 + andi r22,16 + andi r23,16 + lsl r22 + rol r23 + lsl r22 + rol r23 + lsl r22 + rol r23 + or r4,r22 + or r5,r23 + std Z+28,r2 + std Z+29,r3 + std Z+30,r4 + std Z+31,r5 + ld r22,X+ + ld r23,X+ + ld r28,X+ + ld r29,X+ + ld r2,X+ + ld r3,X+ + ld r4,X+ + ld r5,X+ + mov r0,r1 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + or r5,r0 + std Z+32,r3 + std Z+33,r2 + std Z+34,r4 + std Z+35,r5 + mov r0,r1 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + or r23,r0 + mov r0,r28 + mov r28,r29 + mov r29,r0 + lsl r28 + rol r29 + adc r28,r1 + lsl r28 + rol r29 + adc r28,r1 + std Z+36,r22 + std Z+37,r23 + std Z+38,r28 + std Z+39,r29 + dec r24 + breq 1733f + adiw r30,40 + rjmp 1274b +1733: + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128n_init, .-gift128n_init + + .text +.global gift128n_encrypt + .type gift128n_encrypt, @function +gift128n_encrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e +.L__stack_usage = 19 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r22,0 + bst r18,1 + bld r4,0 + bst r18,2 + bld r8,0 + bst r18,3 + bld r12,0 + bst r18,4 + bld r22,1 + bst r18,5 + bld r4,1 + bst r18,6 + bld r8,1 + bst r18,7 + bld r12,1 + bst r19,0 + bld r22,2 + bst r19,1 + bld r4,2 + bst r19,2 + bld r8,2 + bst r19,3 + bld r12,2 + bst r19,4 + bld r22,3 + bst r19,5 + bld r4,3 + bst r19,6 + bld r8,3 + bst r19,7 + bld r12,3 + bst r20,0 + bld r22,4 + bst r20,1 + bld r4,4 + bst r20,2 + bld r8,4 + bst r20,3 + bld r12,4 + bst r20,4 + bld r22,5 + bst r20,5 + bld r4,5 + bst r20,6 + bld r8,5 + bst r20,7 + bld r12,5 + bst r21,0 + bld r22,6 + bst r21,1 + bld r4,6 + bst r21,2 + bld r8,6 + bst r21,3 + bld r12,6 + bst r21,4 + bld r22,7 + bst r21,5 + bld r4,7 + bst r21,6 + bld r8,7 + bst r21,7 + bld r12,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r23,0 + bst r18,1 + bld r5,0 + bst r18,2 + bld r9,0 + bst r18,3 + bld r13,0 + bst r18,4 + bld r23,1 + bst r18,5 + bld r5,1 + bst r18,6 + bld r9,1 + bst r18,7 + bld r13,1 + bst r19,0 + bld r23,2 + bst r19,1 + bld r5,2 + bst r19,2 + bld r9,2 + bst r19,3 + bld r13,2 + bst r19,4 + bld r23,3 + bst r19,5 + bld r5,3 + bst r19,6 + bld r9,3 + bst r19,7 + bld r13,3 + bst r20,0 + bld r23,4 + bst r20,1 + bld r5,4 + bst r20,2 + bld r9,4 + bst r20,3 + bld r13,4 + bst r20,4 + bld r23,5 + bst r20,5 + bld r5,5 + bst r20,6 + bld r9,5 + bst r20,7 + bld r13,5 + bst r21,0 + bld r23,6 + bst r21,1 + bld r5,6 + bst r21,2 + bld r9,6 + bst r21,3 + bld r13,6 + bst r21,4 + bld r23,7 + bst r21,5 + bld r5,7 + bst r21,6 + bld r9,7 + bst r21,7 + bld r13,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r2,0 + bst r18,1 + bld r6,0 + bst r18,2 + bld r10,0 + bst r18,3 + bld r14,0 + bst r18,4 + bld r2,1 + bst r18,5 + bld r6,1 + bst r18,6 + bld r10,1 + bst r18,7 + bld r14,1 + bst r19,0 + bld r2,2 + bst r19,1 + bld r6,2 + bst r19,2 + bld r10,2 + bst r19,3 + bld r14,2 + bst r19,4 + bld r2,3 + bst r19,5 + bld r6,3 + bst r19,6 + bld r10,3 + bst r19,7 + bld r14,3 + bst r20,0 + bld r2,4 + bst r20,1 + bld r6,4 + bst r20,2 + bld r10,4 + bst r20,3 + bld r14,4 + bst r20,4 + bld r2,5 + bst r20,5 + bld r6,5 + bst r20,6 + bld r10,5 + bst r20,7 + bld r14,5 + bst r21,0 + bld r2,6 + bst r21,1 + bld r6,6 + bst r21,2 + bld r10,6 + bst r21,3 + bld r14,6 + bst r21,4 + bld r2,7 + bst r21,5 + bld r6,7 + bst r21,6 + bld r10,7 + bst r21,7 + bld r14,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r3,0 + bst r18,1 + bld r7,0 + bst r18,2 + bld r11,0 + bst r18,3 + bld r15,0 + bst r18,4 + bld r3,1 + bst r18,5 + bld r7,1 + bst r18,6 + bld r11,1 + bst r18,7 + bld r15,1 + bst r19,0 + bld r3,2 + bst r19,1 + bld r7,2 + bst r19,2 + bld r11,2 + bst r19,3 + bld r15,2 + bst r19,4 + bld r3,3 + bst r19,5 + bld r7,3 + bst r19,6 + bld r11,3 + bst r19,7 + bld r15,3 + bst r20,0 + bld r3,4 + bst r20,1 + bld r7,4 + bst r20,2 + bld r11,4 + bst r20,3 + bld r15,4 + bst r20,4 + bld r3,5 + bst r20,5 + bld r7,5 + bst r20,6 + bld r11,5 + bst r20,7 + bld r15,5 + bst r21,0 + bld r3,6 + bst r21,1 + bld r7,6 + bst r21,2 + bld r11,6 + bst r21,3 + bld r15,6 + bst r21,4 + bld r3,7 + bst r21,5 + bld r7,7 + bst r21,6 + bld r11,7 + bst r21,7 + bld r15,7 + movw r26,r30 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + rcall 283f + rcall 283f + rcall 283f + rcall 283f + rcall 283f + rcall 283f + rcall 283f + rcall 283f + rjmp 1021f +283: + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + movw r18,r4 + movw r20,r6 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,204 + andi r19,204 + andi r20,204 + andi r21,204 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + ldi r25,51 + and r4,r25 + and r5,r25 + and r6,r25 + and r7,r25 + or r4,r18 + or r5,r19 + or r6,r20 + or r7,r21 + movw r18,r8 + movw r20,r10 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,238 + andi r19,238 + andi r20,238 + andi r21,238 + lsr r11 + ror r10 + ror r9 + ror r8 + lsr r11 + ror r10 + ror r9 + ror r8 + lsr r11 + ror r10 + ror r9 + ror r8 + ldi r24,17 + and r8,r24 + and r9,r24 + and r10,r24 + and r11,r24 + or r8,r18 + or r9,r19 + or r10,r20 + or r11,r21 + movw r18,r12 + movw r20,r14 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,136 + andi r19,136 + andi r20,136 + andi r21,136 + lsr r15 + ror r14 + ror r13 + ror r12 + ldi r17,119 + and r12,r17 + and r13,r17 + and r14,r17 + and r15,r17 + or r12,r18 + or r13,r19 + or r14,r20 + or r15,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r12 + and r0,r8 + eor r4,r0 + mov r0,r13 + and r0,r9 + eor r5,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r22 + eor r12,r0 + mov r0,r5 + and r0,r23 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r12 + or r0,r4 + eor r8,r0 + mov r0,r13 + or r0,r5 + eor r9,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + eor r22,r8 + eor r23,r9 + eor r2,r10 + eor r3,r11 + eor r4,r22 + eor r5,r23 + eor r6,r2 + eor r7,r3 + com r22 + com r23 + com r2 + com r3 + mov r0,r12 + and r0,r4 + eor r8,r0 + mov r0,r13 + and r0,r5 + eor r9,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r1 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + or r23,r0 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + mov r0,r5 + mov r5,r4 + mov r4,r0 + mov r0,r7 + mov r7,r6 + mov r6,r0 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r12,r18 + eor r13,r19 + eor r14,r20 + eor r15,r21 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + movw r18,r4 + movw r20,r6 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r4 + eor r19,r5 + eor r20,r6 + eor r21,r7 + andi r18,85 + andi r19,85 + andi r20,85 + andi r21,85 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + mov r0,r10 + mov r10,r8 + mov r8,r0 + mov r0,r11 + mov r11,r9 + mov r9,r0 + movw r18,r8 + movw r20,r10 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r8 + eor r19,r9 + andi r18,85 + andi r19,85 + eor r8,r18 + eor r9,r19 + mov r20,r1 + mov r21,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + mov r0,r14 + mov r14,r12 + mov r12,r0 + mov r0,r15 + mov r15,r13 + mov r13,r0 + movw r18,r14 + lsr r19 + ror r18 + eor r18,r14 + eor r19,r15 + andi r18,85 + andi r19,85 + eor r14,r18 + eor r15,r19 + lsl r18 + rol r19 + eor r14,r18 + eor r15,r19 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r12 + and r0,r8 + eor r4,r0 + mov r0,r13 + and r0,r9 + eor r5,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r22 + eor r12,r0 + mov r0,r5 + and r0,r23 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r12 + or r0,r4 + eor r8,r0 + mov r0,r13 + or r0,r5 + eor r9,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + eor r22,r8 + eor r23,r9 + eor r2,r10 + eor r3,r11 + eor r4,r22 + eor r5,r23 + eor r6,r2 + eor r7,r3 + com r22 + com r23 + com r2 + com r3 + mov r0,r12 + and r0,r4 + eor r8,r0 + mov r0,r13 + and r0,r5 + eor r9,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r23 + adc r23,r1 + lsl r23 + adc r23,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + swap r4 + swap r5 + swap r6 + swap r7 + mov r0,r1 + lsr r8 + ror r0 + lsr r8 + ror r0 + or r8,r0 + mov r0,r1 + lsr r9 + ror r0 + lsr r9 + ror r0 + or r9,r0 + mov r0,r1 + lsr r10 + ror r0 + lsr r10 + ror r0 + or r10,r0 + mov r0,r1 + lsr r11 + ror r0 + lsr r11 + ror r0 + or r11,r0 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r12,r18 + eor r13,r19 + eor r14,r20 + eor r15,r21 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r6 + mov r6,r4 + mov r4,r0 + mov r0,r7 + mov r7,r5 + mov r5,r0 + mov r0,r8 + mov r8,r9 + mov r9,r10 + mov r10,r11 + mov r11,r0 + mov r0,r15 + mov r15,r14 + mov r14,r13 + mov r13,r12 + mov r12,r0 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + eor r22,r12 + eor r23,r13 + eor r2,r14 + eor r3,r15 + eor r12,r22 + eor r13,r23 + eor r14,r2 + eor r15,r3 + eor r22,r12 + eor r23,r13 + eor r2,r14 + eor r3,r15 + ret +1021: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + ldd r26,Y+1 + ldd r27,Y+2 + bst r22,0 + bld r18,0 + bst r4,0 + bld r18,1 + bst r8,0 + bld r18,2 + bst r12,0 + bld r18,3 + bst r22,1 + bld r18,4 + bst r4,1 + bld r18,5 + bst r8,1 + bld r18,6 + bst r12,1 + bld r18,7 + bst r22,2 + bld r19,0 + bst r4,2 + bld r19,1 + bst r8,2 + bld r19,2 + bst r12,2 + bld r19,3 + bst r22,3 + bld r19,4 + bst r4,3 + bld r19,5 + bst r8,3 + bld r19,6 + bst r12,3 + bld r19,7 + bst r22,4 + bld r20,0 + bst r4,4 + bld r20,1 + bst r8,4 + bld r20,2 + bst r12,4 + bld r20,3 + bst r22,5 + bld r20,4 + bst r4,5 + bld r20,5 + bst r8,5 + bld r20,6 + bst r12,5 + bld r20,7 + bst r22,6 + bld r21,0 + bst r4,6 + bld r21,1 + bst r8,6 + bld r21,2 + bst r12,6 + bld r21,3 + bst r22,7 + bld r21,4 + bst r4,7 + bld r21,5 + bst r8,7 + bld r21,6 + bst r12,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r23,0 + bld r18,0 + bst r5,0 + bld r18,1 + bst r9,0 + bld r18,2 + bst r13,0 + bld r18,3 + bst r23,1 + bld r18,4 + bst r5,1 + bld r18,5 + bst r9,1 + bld r18,6 + bst r13,1 + bld r18,7 + bst r23,2 + bld r19,0 + bst r5,2 + bld r19,1 + bst r9,2 + bld r19,2 + bst r13,2 + bld r19,3 + bst r23,3 + bld r19,4 + bst r5,3 + bld r19,5 + bst r9,3 + bld r19,6 + bst r13,3 + bld r19,7 + bst r23,4 + bld r20,0 + bst r5,4 + bld r20,1 + bst r9,4 + bld r20,2 + bst r13,4 + bld r20,3 + bst r23,5 + bld r20,4 + bst r5,5 + bld r20,5 + bst r9,5 + bld r20,6 + bst r13,5 + bld r20,7 + bst r23,6 + bld r21,0 + bst r5,6 + bld r21,1 + bst r9,6 + bld r21,2 + bst r13,6 + bld r21,3 + bst r23,7 + bld r21,4 + bst r5,7 + bld r21,5 + bst r9,7 + bld r21,6 + bst r13,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r2,0 + bld r18,0 + bst r6,0 + bld r18,1 + bst r10,0 + bld r18,2 + bst r14,0 + bld r18,3 + bst r2,1 + bld r18,4 + bst r6,1 + bld r18,5 + bst r10,1 + bld r18,6 + bst r14,1 + bld r18,7 + bst r2,2 + bld r19,0 + bst r6,2 + bld r19,1 + bst r10,2 + bld r19,2 + bst r14,2 + bld r19,3 + bst r2,3 + bld r19,4 + bst r6,3 + bld r19,5 + bst r10,3 + bld r19,6 + bst r14,3 + bld r19,7 + bst r2,4 + bld r20,0 + bst r6,4 + bld r20,1 + bst r10,4 + bld r20,2 + bst r14,4 + bld r20,3 + bst r2,5 + bld r20,4 + bst r6,5 + bld r20,5 + bst r10,5 + bld r20,6 + bst r14,5 + bld r20,7 + bst r2,6 + bld r21,0 + bst r6,6 + bld r21,1 + bst r10,6 + bld r21,2 + bst r14,6 + bld r21,3 + bst r2,7 + bld r21,4 + bst r6,7 + bld r21,5 + bst r10,7 + bld r21,6 + bst r14,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r3,0 + bld r18,0 + bst r7,0 + bld r18,1 + bst r11,0 + bld r18,2 + bst r15,0 + bld r18,3 + bst r3,1 + bld r18,4 + bst r7,1 + bld r18,5 + bst r11,1 + bld r18,6 + bst r15,1 + bld r18,7 + bst r3,2 + bld r19,0 + bst r7,2 + bld r19,1 + bst r11,2 + bld r19,2 + bst r15,2 + bld r19,3 + bst r3,3 + bld r19,4 + bst r7,3 + bld r19,5 + bst r11,3 + bld r19,6 + bst r15,3 + bld r19,7 + bst r3,4 + bld r20,0 + bst r7,4 + bld r20,1 + bst r11,4 + bld r20,2 + bst r15,4 + bld r20,3 + bst r3,5 + bld r20,4 + bst r7,5 + bld r20,5 + bst r11,5 + bld r20,6 + bst r15,5 + bld r20,7 + bst r3,6 + bld r21,0 + bst r7,6 + bld r21,1 + bst r11,6 + bld r21,2 + bst r15,6 + bld r21,3 + bst r3,7 + bld r21,4 + bst r7,7 + bld r21,5 + bst r11,7 + bld r21,6 + bst r15,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + pop r0 + pop r0 + pop r17 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128n_encrypt, .-gift128n_encrypt + + .text +.global gift128n_decrypt + .type gift128n_decrypt, @function +gift128n_decrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e +.L__stack_usage = 19 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r22,0 + bst r18,1 + bld r4,0 + bst r18,2 + bld r8,0 + bst r18,3 + bld r12,0 + bst r18,4 + bld r22,1 + bst r18,5 + bld r4,1 + bst r18,6 + bld r8,1 + bst r18,7 + bld r12,1 + bst r19,0 + bld r22,2 + bst r19,1 + bld r4,2 + bst r19,2 + bld r8,2 + bst r19,3 + bld r12,2 + bst r19,4 + bld r22,3 + bst r19,5 + bld r4,3 + bst r19,6 + bld r8,3 + bst r19,7 + bld r12,3 + bst r20,0 + bld r22,4 + bst r20,1 + bld r4,4 + bst r20,2 + bld r8,4 + bst r20,3 + bld r12,4 + bst r20,4 + bld r22,5 + bst r20,5 + bld r4,5 + bst r20,6 + bld r8,5 + bst r20,7 + bld r12,5 + bst r21,0 + bld r22,6 + bst r21,1 + bld r4,6 + bst r21,2 + bld r8,6 + bst r21,3 + bld r12,6 + bst r21,4 + bld r22,7 + bst r21,5 + bld r4,7 + bst r21,6 + bld r8,7 + bst r21,7 + bld r12,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r23,0 + bst r18,1 + bld r5,0 + bst r18,2 + bld r9,0 + bst r18,3 + bld r13,0 + bst r18,4 + bld r23,1 + bst r18,5 + bld r5,1 + bst r18,6 + bld r9,1 + bst r18,7 + bld r13,1 + bst r19,0 + bld r23,2 + bst r19,1 + bld r5,2 + bst r19,2 + bld r9,2 + bst r19,3 + bld r13,2 + bst r19,4 + bld r23,3 + bst r19,5 + bld r5,3 + bst r19,6 + bld r9,3 + bst r19,7 + bld r13,3 + bst r20,0 + bld r23,4 + bst r20,1 + bld r5,4 + bst r20,2 + bld r9,4 + bst r20,3 + bld r13,4 + bst r20,4 + bld r23,5 + bst r20,5 + bld r5,5 + bst r20,6 + bld r9,5 + bst r20,7 + bld r13,5 + bst r21,0 + bld r23,6 + bst r21,1 + bld r5,6 + bst r21,2 + bld r9,6 + bst r21,3 + bld r13,6 + bst r21,4 + bld r23,7 + bst r21,5 + bld r5,7 + bst r21,6 + bld r9,7 + bst r21,7 + bld r13,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r2,0 + bst r18,1 + bld r6,0 + bst r18,2 + bld r10,0 + bst r18,3 + bld r14,0 + bst r18,4 + bld r2,1 + bst r18,5 + bld r6,1 + bst r18,6 + bld r10,1 + bst r18,7 + bld r14,1 + bst r19,0 + bld r2,2 + bst r19,1 + bld r6,2 + bst r19,2 + bld r10,2 + bst r19,3 + bld r14,2 + bst r19,4 + bld r2,3 + bst r19,5 + bld r6,3 + bst r19,6 + bld r10,3 + bst r19,7 + bld r14,3 + bst r20,0 + bld r2,4 + bst r20,1 + bld r6,4 + bst r20,2 + bld r10,4 + bst r20,3 + bld r14,4 + bst r20,4 + bld r2,5 + bst r20,5 + bld r6,5 + bst r20,6 + bld r10,5 + bst r20,7 + bld r14,5 + bst r21,0 + bld r2,6 + bst r21,1 + bld r6,6 + bst r21,2 + bld r10,6 + bst r21,3 + bld r14,6 + bst r21,4 + bld r2,7 + bst r21,5 + bld r6,7 + bst r21,6 + bld r10,7 + bst r21,7 + bld r14,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r3,0 + bst r18,1 + bld r7,0 + bst r18,2 + bld r11,0 + bst r18,3 + bld r15,0 + bst r18,4 + bld r3,1 + bst r18,5 + bld r7,1 + bst r18,6 + bld r11,1 + bst r18,7 + bld r15,1 + bst r19,0 + bld r3,2 + bst r19,1 + bld r7,2 + bst r19,2 + bld r11,2 + bst r19,3 + bld r15,2 + bst r19,4 + bld r3,3 + bst r19,5 + bld r7,3 + bst r19,6 + bld r11,3 + bst r19,7 + bld r15,3 + bst r20,0 + bld r3,4 + bst r20,1 + bld r7,4 + bst r20,2 + bld r11,4 + bst r20,3 + bld r15,4 + bst r20,4 + bld r3,5 + bst r20,5 + bld r7,5 + bst r20,6 + bld r11,5 + bst r20,7 + bld r15,5 + bst r21,0 + bld r3,6 + bst r21,1 + bld r7,6 + bst r21,2 + bld r11,6 + bst r21,3 + bld r15,6 + bst r21,4 + bld r3,7 + bst r21,5 + bld r7,7 + bst r21,6 + bld r11,7 + bst r21,7 + bld r15,7 + movw r26,r30 + subi r26,192 + sbci r27,254 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,160 + rcall 286f + rcall 286f + rcall 286f + rcall 286f + rcall 286f + rcall 286f + rcall 286f + rcall 286f + rjmp 1024f +286: + eor r22,r12 + eor r23,r13 + eor r2,r14 + eor r3,r15 + eor r12,r22 + eor r13,r23 + eor r14,r2 + eor r15,r3 + eor r22,r12 + eor r23,r13 + eor r2,r14 + eor r3,r15 + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + mov r0,r6 + mov r6,r4 + mov r4,r0 + mov r0,r7 + mov r7,r5 + mov r5,r0 + mov r0,r11 + mov r11,r10 + mov r10,r9 + mov r9,r8 + mov r8,r0 + mov r0,r12 + mov r12,r13 + mov r13,r14 + mov r14,r15 + mov r15,r0 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + com r12 + com r13 + com r14 + com r15 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + eor r12,r18 + eor r13,r19 + eor r14,r20 + eor r15,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + mov r0,r1 + lsr r22 + ror r0 + lsr r22 + ror r0 + or r22,r0 + mov r0,r1 + lsr r23 + ror r0 + lsr r23 + ror r0 + or r23,r0 + mov r0,r1 + lsr r2 + ror r0 + lsr r2 + ror r0 + or r2,r0 + mov r0,r1 + lsr r3 + ror r0 + lsr r3 + ror r0 + or r3,r0 + swap r4 + swap r5 + swap r6 + swap r7 + lsl r8 + adc r8,r1 + lsl r8 + adc r8,r1 + lsl r9 + adc r9,r1 + lsl r9 + adc r9,r1 + lsl r10 + adc r10,r1 + lsl r10 + adc r10,r1 + lsl r11 + adc r11,r1 + lsl r11 + adc r11,r1 + mov r0,r12 + and r0,r4 + eor r8,r0 + mov r0,r13 + and r0,r5 + eor r9,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + com r22 + com r23 + com r2 + com r3 + eor r4,r22 + eor r5,r23 + eor r6,r2 + eor r7,r3 + eor r22,r8 + eor r23,r9 + eor r2,r10 + eor r3,r11 + mov r0,r12 + or r0,r4 + eor r8,r0 + mov r0,r13 + or r0,r5 + eor r9,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r22 + eor r12,r0 + mov r0,r5 + and r0,r23 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r12 + and r0,r8 + eor r4,r0 + mov r0,r13 + and r0,r9 + eor r5,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + movw r18,r4 + movw r20,r6 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r4 + eor r19,r5 + eor r20,r6 + eor r21,r7 + andi r18,85 + andi r19,85 + andi r20,85 + andi r21,85 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + movw r18,r8 + movw r20,r10 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r8 + eor r19,r9 + andi r18,85 + andi r19,85 + eor r8,r18 + eor r9,r19 + mov r20,r1 + mov r21,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + mov r0,r10 + mov r10,r8 + mov r8,r0 + mov r0,r11 + mov r11,r9 + mov r9,r0 + movw r18,r14 + lsr r19 + ror r18 + eor r18,r14 + eor r19,r15 + andi r18,85 + andi r19,85 + eor r14,r18 + eor r15,r19 + lsl r18 + rol r19 + eor r14,r18 + eor r15,r19 + mov r0,r14 + mov r14,r12 + mov r12,r0 + mov r0,r15 + mov r15,r13 + mov r13,r0 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + com r12 + com r13 + com r14 + com r15 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + eor r12,r18 + eor r13,r19 + eor r14,r20 + eor r15,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + mov r0,r5 + mov r5,r4 + mov r4,r0 + mov r0,r7 + mov r7,r6 + mov r6,r0 + mov r0,r1 + lsr r9 + ror r8 + ror r0 + lsr r9 + ror r8 + ror r0 + lsr r9 + ror r8 + ror r0 + lsr r9 + ror r8 + ror r0 + or r9,r0 + mov r0,r1 + lsr r11 + ror r10 + ror r0 + lsr r11 + ror r10 + ror r0 + lsr r11 + ror r10 + ror r0 + lsr r11 + ror r10 + ror r0 + or r11,r0 + mov r0,r12 + and r0,r4 + eor r8,r0 + mov r0,r13 + and r0,r5 + eor r9,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + com r22 + com r23 + com r2 + com r3 + eor r4,r22 + eor r5,r23 + eor r6,r2 + eor r7,r3 + eor r22,r8 + eor r23,r9 + eor r2,r10 + eor r3,r11 + mov r0,r12 + or r0,r4 + eor r8,r0 + mov r0,r13 + or r0,r5 + eor r9,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r22 + eor r12,r0 + mov r0,r5 + and r0,r23 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r12 + and r0,r8 + eor r4,r0 + mov r0,r13 + and r0,r9 + eor r5,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + ld r21,-X + ld r20,-X + ld r19,-X + ld r18,-X + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + movw r18,r4 + movw r20,r6 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,204 + andi r19,204 + andi r20,204 + andi r21,204 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + ldi r25,51 + and r4,r25 + and r5,r25 + and r6,r25 + and r7,r25 + or r4,r18 + or r5,r19 + or r6,r20 + or r7,r21 + movw r18,r8 + movw r20,r10 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,136 + andi r19,136 + andi r20,136 + andi r21,136 + lsr r11 + ror r10 + ror r9 + ror r8 + ldi r24,119 + and r8,r24 + and r9,r24 + and r10,r24 + and r11,r24 + or r8,r18 + or r9,r19 + or r10,r20 + or r11,r21 + movw r18,r12 + movw r20,r14 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,238 + andi r19,238 + andi r20,238 + andi r21,238 + lsr r15 + ror r14 + ror r13 + ror r12 + lsr r15 + ror r14 + ror r13 + ror r12 + lsr r15 + ror r14 + ror r13 + ror r12 + ldi r17,17 + and r12,r17 + and r13,r17 + and r14,r17 + and r15,r17 + or r12,r18 + or r13,r19 + or r14,r20 + or r15,r21 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + com r12 + com r13 + com r14 + com r15 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + ret +1024: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + ldd r26,Y+1 + ldd r27,Y+2 + bst r22,0 + bld r18,0 + bst r4,0 + bld r18,1 + bst r8,0 + bld r18,2 + bst r12,0 + bld r18,3 + bst r22,1 + bld r18,4 + bst r4,1 + bld r18,5 + bst r8,1 + bld r18,6 + bst r12,1 + bld r18,7 + bst r22,2 + bld r19,0 + bst r4,2 + bld r19,1 + bst r8,2 + bld r19,2 + bst r12,2 + bld r19,3 + bst r22,3 + bld r19,4 + bst r4,3 + bld r19,5 + bst r8,3 + bld r19,6 + bst r12,3 + bld r19,7 + bst r22,4 + bld r20,0 + bst r4,4 + bld r20,1 + bst r8,4 + bld r20,2 + bst r12,4 + bld r20,3 + bst r22,5 + bld r20,4 + bst r4,5 + bld r20,5 + bst r8,5 + bld r20,6 + bst r12,5 + bld r20,7 + bst r22,6 + bld r21,0 + bst r4,6 + bld r21,1 + bst r8,6 + bld r21,2 + bst r12,6 + bld r21,3 + bst r22,7 + bld r21,4 + bst r4,7 + bld r21,5 + bst r8,7 + bld r21,6 + bst r12,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r23,0 + bld r18,0 + bst r5,0 + bld r18,1 + bst r9,0 + bld r18,2 + bst r13,0 + bld r18,3 + bst r23,1 + bld r18,4 + bst r5,1 + bld r18,5 + bst r9,1 + bld r18,6 + bst r13,1 + bld r18,7 + bst r23,2 + bld r19,0 + bst r5,2 + bld r19,1 + bst r9,2 + bld r19,2 + bst r13,2 + bld r19,3 + bst r23,3 + bld r19,4 + bst r5,3 + bld r19,5 + bst r9,3 + bld r19,6 + bst r13,3 + bld r19,7 + bst r23,4 + bld r20,0 + bst r5,4 + bld r20,1 + bst r9,4 + bld r20,2 + bst r13,4 + bld r20,3 + bst r23,5 + bld r20,4 + bst r5,5 + bld r20,5 + bst r9,5 + bld r20,6 + bst r13,5 + bld r20,7 + bst r23,6 + bld r21,0 + bst r5,6 + bld r21,1 + bst r9,6 + bld r21,2 + bst r13,6 + bld r21,3 + bst r23,7 + bld r21,4 + bst r5,7 + bld r21,5 + bst r9,7 + bld r21,6 + bst r13,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r2,0 + bld r18,0 + bst r6,0 + bld r18,1 + bst r10,0 + bld r18,2 + bst r14,0 + bld r18,3 + bst r2,1 + bld r18,4 + bst r6,1 + bld r18,5 + bst r10,1 + bld r18,6 + bst r14,1 + bld r18,7 + bst r2,2 + bld r19,0 + bst r6,2 + bld r19,1 + bst r10,2 + bld r19,2 + bst r14,2 + bld r19,3 + bst r2,3 + bld r19,4 + bst r6,3 + bld r19,5 + bst r10,3 + bld r19,6 + bst r14,3 + bld r19,7 + bst r2,4 + bld r20,0 + bst r6,4 + bld r20,1 + bst r10,4 + bld r20,2 + bst r14,4 + bld r20,3 + bst r2,5 + bld r20,4 + bst r6,5 + bld r20,5 + bst r10,5 + bld r20,6 + bst r14,5 + bld r20,7 + bst r2,6 + bld r21,0 + bst r6,6 + bld r21,1 + bst r10,6 + bld r21,2 + bst r14,6 + bld r21,3 + bst r2,7 + bld r21,4 + bst r6,7 + bld r21,5 + bst r10,7 + bld r21,6 + bst r14,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r3,0 + bld r18,0 + bst r7,0 + bld r18,1 + bst r11,0 + bld r18,2 + bst r15,0 + bld r18,3 + bst r3,1 + bld r18,4 + bst r7,1 + bld r18,5 + bst r11,1 + bld r18,6 + bst r15,1 + bld r18,7 + bst r3,2 + bld r19,0 + bst r7,2 + bld r19,1 + bst r11,2 + bld r19,2 + bst r15,2 + bld r19,3 + bst r3,3 + bld r19,4 + bst r7,3 + bld r19,5 + bst r11,3 + bld r19,6 + bst r15,3 + bld r19,7 + bst r3,4 + bld r20,0 + bst r7,4 + bld r20,1 + bst r11,4 + bld r20,2 + bst r15,4 + bld r20,3 + bst r3,5 + bld r20,4 + bst r7,5 + bld r20,5 + bst r11,5 + bld r20,6 + bst r15,5 + bld r20,7 + bst r3,6 + bld r21,0 + bst r7,6 + bld r21,1 + bst r11,6 + bld r21,2 + bst r15,6 + bld r21,3 + bst r3,7 + bld r21,4 + bst r7,7 + bld r21,5 + bst r11,7 + bld r21,6 + bst r15,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + pop r0 + pop r0 + pop r17 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128n_decrypt, .-gift128n_decrypt + + .text +.global gift128t_encrypt + .type gift128t_encrypt, @function +gift128t_encrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e +.L__stack_usage = 20 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r2,0 + bst r20,1 + bld r6,0 + bst r20,2 + bld r10,0 + bst r20,3 + bld r14,0 + bst r20,4 + bld r2,1 + bst r20,5 + bld r6,1 + bst r20,6 + bld r10,1 + bst r20,7 + bld r14,1 + bst r21,0 + bld r2,2 + bst r21,1 + bld r6,2 + bst r21,2 + bld r10,2 + bst r21,3 + bld r14,2 + bst r21,4 + bld r2,3 + bst r21,5 + bld r6,3 + bst r21,6 + bld r10,3 + bst r21,7 + bld r14,3 + bst r22,0 + bld r2,4 + bst r22,1 + bld r6,4 + bst r22,2 + bld r10,4 + bst r22,3 + bld r14,4 + bst r22,4 + bld r2,5 + bst r22,5 + bld r6,5 + bst r22,6 + bld r10,5 + bst r22,7 + bld r14,5 + bst r23,0 + bld r2,6 + bst r23,1 + bld r6,6 + bst r23,2 + bld r10,6 + bst r23,3 + bld r14,6 + bst r23,4 + bld r2,7 + bst r23,5 + bld r6,7 + bst r23,6 + bld r10,7 + bst r23,7 + bld r14,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r3,0 + bst r20,1 + bld r7,0 + bst r20,2 + bld r11,0 + bst r20,3 + bld r15,0 + bst r20,4 + bld r3,1 + bst r20,5 + bld r7,1 + bst r20,6 + bld r11,1 + bst r20,7 + bld r15,1 + bst r21,0 + bld r3,2 + bst r21,1 + bld r7,2 + bst r21,2 + bld r11,2 + bst r21,3 + bld r15,2 + bst r21,4 + bld r3,3 + bst r21,5 + bld r7,3 + bst r21,6 + bld r11,3 + bst r21,7 + bld r15,3 + bst r22,0 + bld r3,4 + bst r22,1 + bld r7,4 + bst r22,2 + bld r11,4 + bst r22,3 + bld r15,4 + bst r22,4 + bld r3,5 + bst r22,5 + bld r7,5 + bst r22,6 + bld r11,5 + bst r22,7 + bld r15,5 + bst r23,0 + bld r3,6 + bst r23,1 + bld r7,6 + bst r23,2 + bld r11,6 + bst r23,3 + bld r15,6 + bst r23,4 + bld r3,7 + bst r23,5 + bld r7,7 + bst r23,6 + bld r11,7 + bst r23,7 + bld r15,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r4,0 + bst r20,1 + bld r8,0 + bst r20,2 + bld r12,0 + bst r20,3 + bld r24,0 + bst r20,4 + bld r4,1 + bst r20,5 + bld r8,1 + bst r20,6 + bld r12,1 + bst r20,7 + bld r24,1 + bst r21,0 + bld r4,2 + bst r21,1 + bld r8,2 + bst r21,2 + bld r12,2 + bst r21,3 + bld r24,2 + bst r21,4 + bld r4,3 + bst r21,5 + bld r8,3 + bst r21,6 + bld r12,3 + bst r21,7 + bld r24,3 + bst r22,0 + bld r4,4 + bst r22,1 + bld r8,4 + bst r22,2 + bld r12,4 + bst r22,3 + bld r24,4 + bst r22,4 + bld r4,5 + bst r22,5 + bld r8,5 + bst r22,6 + bld r12,5 + bst r22,7 + bld r24,5 + bst r23,0 + bld r4,6 + bst r23,1 + bld r8,6 + bst r23,2 + bld r12,6 + bst r23,3 + bld r24,6 + bst r23,4 + bld r4,7 + bst r23,5 + bld r8,7 + bst r23,6 + bld r12,7 + bst r23,7 + bld r24,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r5,0 + bst r20,1 + bld r9,0 + bst r20,2 + bld r13,0 + bst r20,3 + bld r25,0 + bst r20,4 + bld r5,1 + bst r20,5 + bld r9,1 + bst r20,6 + bld r13,1 + bst r20,7 + bld r25,1 + bst r21,0 + bld r5,2 + bst r21,1 + bld r9,2 + bst r21,2 + bld r13,2 + bst r21,3 + bld r25,2 + bst r21,4 + bld r5,3 + bst r21,5 + bld r9,3 + bst r21,6 + bld r13,3 + bst r21,7 + bld r25,3 + bst r22,0 + bld r5,4 + bst r22,1 + bld r9,4 + bst r22,2 + bld r13,4 + bst r22,3 + bld r25,4 + bst r22,4 + bld r5,5 + bst r22,5 + bld r9,5 + bst r22,6 + bld r13,5 + bst r22,7 + bld r25,5 + bst r23,0 + bld r5,6 + bst r23,1 + bld r9,6 + bst r23,2 + bld r13,6 + bst r23,3 + bld r25,6 + bst r23,4 + bld r5,7 + bst r23,5 + bld r9,7 + bst r23,6 + bld r13,7 + bst r23,7 + bld r25,7 + movw r26,r30 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + rcall 311f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 311f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 311f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 311f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 311f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 311f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 311f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 311f + rjmp 1049f +311: + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + movw r20,r6 + movw r22,r8 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,204 + andi r21,204 + andi r22,204 + andi r23,204 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + ldi r19,51 + and r6,r19 + and r7,r19 + and r8,r19 + and r9,r19 + or r6,r20 + or r7,r21 + or r8,r22 + or r9,r23 + movw r20,r10 + movw r22,r12 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,238 + andi r21,238 + andi r22,238 + andi r23,238 + lsr r13 + ror r12 + ror r11 + ror r10 + lsr r13 + ror r12 + ror r11 + ror r10 + lsr r13 + ror r12 + ror r11 + ror r10 + ldi r17,17 + and r10,r17 + and r11,r17 + and r12,r17 + and r13,r17 + or r10,r20 + or r11,r21 + or r12,r22 + or r13,r23 + movw r20,r14 + movw r22,r24 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,136 + andi r21,136 + andi r22,136 + andi r23,136 + lsr r25 + ror r24 + ror r15 + ror r14 + ldi r16,119 + and r14,r16 + and r15,r16 + andi r24,119 + andi r25,119 + or r14,r20 + or r15,r21 + or r24,r22 + or r25,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r24 + and r0,r12 + eor r8,r0 + mov r0,r25 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r8 + and r0,r4 + eor r24,r0 + mov r0,r9 + and r0,r5 + eor r25,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r24 + or r0,r8 + eor r12,r0 + mov r0,r25 + or r0,r9 + eor r13,r0 + eor r2,r10 + eor r3,r11 + eor r4,r12 + eor r5,r13 + eor r6,r2 + eor r7,r3 + eor r8,r4 + eor r9,r5 + com r2 + com r3 + com r4 + com r5 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r24 + and r0,r8 + eor r12,r0 + mov r0,r25 + and r0,r9 + eor r13,r0 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + mov r0,r1 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + or r5,r0 + mov r0,r7 + mov r7,r6 + mov r6,r0 + mov r0,r9 + mov r9,r8 + mov r8,r0 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r14,r20 + eor r15,r21 + eor r24,r22 + eor r25,r23 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + movw r20,r6 + movw r22,r8 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r6 + eor r21,r7 + eor r22,r8 + eor r23,r9 + andi r20,85 + andi r21,85 + andi r22,85 + andi r23,85 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + mov r0,r12 + mov r12,r10 + mov r10,r0 + mov r0,r13 + mov r13,r11 + mov r11,r0 + movw r20,r10 + movw r22,r12 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r10 + eor r21,r11 + andi r20,85 + andi r21,85 + eor r10,r20 + eor r11,r21 + mov r22,r1 + mov r23,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + mov r0,r24 + mov r24,r14 + mov r14,r0 + mov r0,r25 + mov r25,r15 + mov r15,r0 + movw r20,r24 + lsr r21 + ror r20 + eor r20,r24 + eor r21,r25 + andi r20,85 + andi r21,85 + eor r24,r20 + eor r25,r21 + lsl r20 + rol r21 + eor r24,r20 + eor r25,r21 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r24 + and r0,r12 + eor r8,r0 + mov r0,r25 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r8 + and r0,r4 + eor r24,r0 + mov r0,r9 + and r0,r5 + eor r25,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r24 + or r0,r8 + eor r12,r0 + mov r0,r25 + or r0,r9 + eor r13,r0 + eor r2,r10 + eor r3,r11 + eor r4,r12 + eor r5,r13 + eor r6,r2 + eor r7,r3 + eor r8,r4 + eor r9,r5 + com r2 + com r3 + com r4 + com r5 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r24 + and r0,r8 + eor r12,r0 + mov r0,r25 + and r0,r9 + eor r13,r0 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + lsl r4 + adc r4,r1 + lsl r4 + adc r4,r1 + lsl r5 + adc r5,r1 + lsl r5 + adc r5,r1 + swap r6 + swap r7 + swap r8 + swap r9 + mov r0,r1 + lsr r10 + ror r0 + lsr r10 + ror r0 + or r10,r0 + mov r0,r1 + lsr r11 + ror r0 + lsr r11 + ror r0 + or r11,r0 + mov r0,r1 + lsr r12 + ror r0 + lsr r12 + ror r0 + or r12,r0 + mov r0,r1 + lsr r13 + ror r0 + lsr r13 + ror r0 + or r13,r0 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r14,r20 + eor r15,r21 + eor r24,r22 + eor r25,r23 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + mov r0,r8 + mov r8,r6 + mov r6,r0 + mov r0,r9 + mov r9,r7 + mov r7,r0 + mov r0,r10 + mov r10,r11 + mov r11,r12 + mov r12,r13 + mov r13,r0 + mov r0,r25 + mov r25,r24 + mov r24,r15 + mov r15,r14 + mov r14,r0 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + eor r2,r14 + eor r3,r15 + eor r4,r24 + eor r5,r25 + eor r14,r2 + eor r15,r3 + eor r24,r4 + eor r25,r5 + eor r2,r14 + eor r3,r15 + eor r4,r24 + eor r5,r25 + ret +1049: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + ldd r26,Y+1 + ldd r27,Y+2 + bst r2,0 + bld r20,0 + bst r6,0 + bld r20,1 + bst r10,0 + bld r20,2 + bst r14,0 + bld r20,3 + bst r2,1 + bld r20,4 + bst r6,1 + bld r20,5 + bst r10,1 + bld r20,6 + bst r14,1 + bld r20,7 + bst r2,2 + bld r21,0 + bst r6,2 + bld r21,1 + bst r10,2 + bld r21,2 + bst r14,2 + bld r21,3 + bst r2,3 + bld r21,4 + bst r6,3 + bld r21,5 + bst r10,3 + bld r21,6 + bst r14,3 + bld r21,7 + bst r2,4 + bld r22,0 + bst r6,4 + bld r22,1 + bst r10,4 + bld r22,2 + bst r14,4 + bld r22,3 + bst r2,5 + bld r22,4 + bst r6,5 + bld r22,5 + bst r10,5 + bld r22,6 + bst r14,5 + bld r22,7 + bst r2,6 + bld r23,0 + bst r6,6 + bld r23,1 + bst r10,6 + bld r23,2 + bst r14,6 + bld r23,3 + bst r2,7 + bld r23,4 + bst r6,7 + bld r23,5 + bst r10,7 + bld r23,6 + bst r14,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r3,0 + bld r20,0 + bst r7,0 + bld r20,1 + bst r11,0 + bld r20,2 + bst r15,0 + bld r20,3 + bst r3,1 + bld r20,4 + bst r7,1 + bld r20,5 + bst r11,1 + bld r20,6 + bst r15,1 + bld r20,7 + bst r3,2 + bld r21,0 + bst r7,2 + bld r21,1 + bst r11,2 + bld r21,2 + bst r15,2 + bld r21,3 + bst r3,3 + bld r21,4 + bst r7,3 + bld r21,5 + bst r11,3 + bld r21,6 + bst r15,3 + bld r21,7 + bst r3,4 + bld r22,0 + bst r7,4 + bld r22,1 + bst r11,4 + bld r22,2 + bst r15,4 + bld r22,3 + bst r3,5 + bld r22,4 + bst r7,5 + bld r22,5 + bst r11,5 + bld r22,6 + bst r15,5 + bld r22,7 + bst r3,6 + bld r23,0 + bst r7,6 + bld r23,1 + bst r11,6 + bld r23,2 + bst r15,6 + bld r23,3 + bst r3,7 + bld r23,4 + bst r7,7 + bld r23,5 + bst r11,7 + bld r23,6 + bst r15,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r4,0 + bld r20,0 + bst r8,0 + bld r20,1 + bst r12,0 + bld r20,2 + bst r24,0 + bld r20,3 + bst r4,1 + bld r20,4 + bst r8,1 + bld r20,5 + bst r12,1 + bld r20,6 + bst r24,1 + bld r20,7 + bst r4,2 + bld r21,0 + bst r8,2 + bld r21,1 + bst r12,2 + bld r21,2 + bst r24,2 + bld r21,3 + bst r4,3 + bld r21,4 + bst r8,3 + bld r21,5 + bst r12,3 + bld r21,6 + bst r24,3 + bld r21,7 + bst r4,4 + bld r22,0 + bst r8,4 + bld r22,1 + bst r12,4 + bld r22,2 + bst r24,4 + bld r22,3 + bst r4,5 + bld r22,4 + bst r8,5 + bld r22,5 + bst r12,5 + bld r22,6 + bst r24,5 + bld r22,7 + bst r4,6 + bld r23,0 + bst r8,6 + bld r23,1 + bst r12,6 + bld r23,2 + bst r24,6 + bld r23,3 + bst r4,7 + bld r23,4 + bst r8,7 + bld r23,5 + bst r12,7 + bld r23,6 + bst r24,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r5,0 + bld r20,0 + bst r9,0 + bld r20,1 + bst r13,0 + bld r20,2 + bst r25,0 + bld r20,3 + bst r5,1 + bld r20,4 + bst r9,1 + bld r20,5 + bst r13,1 + bld r20,6 + bst r25,1 + bld r20,7 + bst r5,2 + bld r21,0 + bst r9,2 + bld r21,1 + bst r13,2 + bld r21,2 + bst r25,2 + bld r21,3 + bst r5,3 + bld r21,4 + bst r9,3 + bld r21,5 + bst r13,3 + bld r21,6 + bst r25,3 + bld r21,7 + bst r5,4 + bld r22,0 + bst r9,4 + bld r22,1 + bst r13,4 + bld r22,2 + bst r25,4 + bld r22,3 + bst r5,5 + bld r22,4 + bst r9,5 + bld r22,5 + bst r13,5 + bld r22,6 + bst r25,5 + bld r22,7 + bst r5,6 + bld r23,0 + bst r9,6 + bld r23,1 + bst r13,6 + bld r23,2 + bst r25,6 + bld r23,3 + bst r5,7 + bld r23,4 + bst r9,7 + bld r23,5 + bst r13,7 + bld r23,6 + bst r25,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + pop r0 + pop r0 + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128t_encrypt, .-gift128t_encrypt + + .text +.global gift128t_decrypt + .type gift128t_decrypt, @function +gift128t_decrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e +.L__stack_usage = 20 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r2,0 + bst r20,1 + bld r6,0 + bst r20,2 + bld r10,0 + bst r20,3 + bld r14,0 + bst r20,4 + bld r2,1 + bst r20,5 + bld r6,1 + bst r20,6 + bld r10,1 + bst r20,7 + bld r14,1 + bst r21,0 + bld r2,2 + bst r21,1 + bld r6,2 + bst r21,2 + bld r10,2 + bst r21,3 + bld r14,2 + bst r21,4 + bld r2,3 + bst r21,5 + bld r6,3 + bst r21,6 + bld r10,3 + bst r21,7 + bld r14,3 + bst r22,0 + bld r2,4 + bst r22,1 + bld r6,4 + bst r22,2 + bld r10,4 + bst r22,3 + bld r14,4 + bst r22,4 + bld r2,5 + bst r22,5 + bld r6,5 + bst r22,6 + bld r10,5 + bst r22,7 + bld r14,5 + bst r23,0 + bld r2,6 + bst r23,1 + bld r6,6 + bst r23,2 + bld r10,6 + bst r23,3 + bld r14,6 + bst r23,4 + bld r2,7 + bst r23,5 + bld r6,7 + bst r23,6 + bld r10,7 + bst r23,7 + bld r14,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r3,0 + bst r20,1 + bld r7,0 + bst r20,2 + bld r11,0 + bst r20,3 + bld r15,0 + bst r20,4 + bld r3,1 + bst r20,5 + bld r7,1 + bst r20,6 + bld r11,1 + bst r20,7 + bld r15,1 + bst r21,0 + bld r3,2 + bst r21,1 + bld r7,2 + bst r21,2 + bld r11,2 + bst r21,3 + bld r15,2 + bst r21,4 + bld r3,3 + bst r21,5 + bld r7,3 + bst r21,6 + bld r11,3 + bst r21,7 + bld r15,3 + bst r22,0 + bld r3,4 + bst r22,1 + bld r7,4 + bst r22,2 + bld r11,4 + bst r22,3 + bld r15,4 + bst r22,4 + bld r3,5 + bst r22,5 + bld r7,5 + bst r22,6 + bld r11,5 + bst r22,7 + bld r15,5 + bst r23,0 + bld r3,6 + bst r23,1 + bld r7,6 + bst r23,2 + bld r11,6 + bst r23,3 + bld r15,6 + bst r23,4 + bld r3,7 + bst r23,5 + bld r7,7 + bst r23,6 + bld r11,7 + bst r23,7 + bld r15,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r4,0 + bst r20,1 + bld r8,0 + bst r20,2 + bld r12,0 + bst r20,3 + bld r24,0 + bst r20,4 + bld r4,1 + bst r20,5 + bld r8,1 + bst r20,6 + bld r12,1 + bst r20,7 + bld r24,1 + bst r21,0 + bld r4,2 + bst r21,1 + bld r8,2 + bst r21,2 + bld r12,2 + bst r21,3 + bld r24,2 + bst r21,4 + bld r4,3 + bst r21,5 + bld r8,3 + bst r21,6 + bld r12,3 + bst r21,7 + bld r24,3 + bst r22,0 + bld r4,4 + bst r22,1 + bld r8,4 + bst r22,2 + bld r12,4 + bst r22,3 + bld r24,4 + bst r22,4 + bld r4,5 + bst r22,5 + bld r8,5 + bst r22,6 + bld r12,5 + bst r22,7 + bld r24,5 + bst r23,0 + bld r4,6 + bst r23,1 + bld r8,6 + bst r23,2 + bld r12,6 + bst r23,3 + bld r24,6 + bst r23,4 + bld r4,7 + bst r23,5 + bld r8,7 + bst r23,6 + bld r12,7 + bst r23,7 + bld r24,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r5,0 + bst r20,1 + bld r9,0 + bst r20,2 + bld r13,0 + bst r20,3 + bld r25,0 + bst r20,4 + bld r5,1 + bst r20,5 + bld r9,1 + bst r20,6 + bld r13,1 + bst r20,7 + bld r25,1 + bst r21,0 + bld r5,2 + bst r21,1 + bld r9,2 + bst r21,2 + bld r13,2 + bst r21,3 + bld r25,2 + bst r21,4 + bld r5,3 + bst r21,5 + bld r9,3 + bst r21,6 + bld r13,3 + bst r21,7 + bld r25,3 + bst r22,0 + bld r5,4 + bst r22,1 + bld r9,4 + bst r22,2 + bld r13,4 + bst r22,3 + bld r25,4 + bst r22,4 + bld r5,5 + bst r22,5 + bld r9,5 + bst r22,6 + bld r13,5 + bst r22,7 + bld r25,5 + bst r23,0 + bld r5,6 + bst r23,1 + bld r9,6 + bst r23,2 + bld r13,6 + bst r23,3 + bld r25,6 + bst r23,4 + bld r5,7 + bst r23,5 + bld r9,7 + bst r23,6 + bld r13,7 + bst r23,7 + bld r25,7 + movw r26,r30 + subi r26,192 + sbci r27,254 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,160 + rcall 314f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 314f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 314f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 314f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 314f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 314f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 314f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 314f + rjmp 1052f +314: + eor r2,r14 + eor r3,r15 + eor r4,r24 + eor r5,r25 + eor r14,r2 + eor r15,r3 + eor r24,r4 + eor r25,r5 + eor r2,r14 + eor r3,r15 + eor r4,r24 + eor r5,r25 + dec r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + mov r0,r8 + mov r8,r6 + mov r6,r0 + mov r0,r9 + mov r9,r7 + mov r7,r0 + mov r0,r13 + mov r13,r12 + mov r12,r11 + mov r11,r10 + mov r10,r0 + mov r0,r14 + mov r14,r15 + mov r15,r24 + mov r24,r25 + mov r25,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + com r14 + com r15 + com r24 + com r25 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + dec r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + eor r14,r20 + eor r15,r21 + eor r24,r22 + eor r25,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + mov r0,r1 + lsr r2 + ror r0 + lsr r2 + ror r0 + or r2,r0 + mov r0,r1 + lsr r3 + ror r0 + lsr r3 + ror r0 + or r3,r0 + mov r0,r1 + lsr r4 + ror r0 + lsr r4 + ror r0 + or r4,r0 + mov r0,r1 + lsr r5 + ror r0 + lsr r5 + ror r0 + or r5,r0 + swap r6 + swap r7 + swap r8 + swap r9 + lsl r10 + adc r10,r1 + lsl r10 + adc r10,r1 + lsl r11 + adc r11,r1 + lsl r11 + adc r11,r1 + lsl r12 + adc r12,r1 + lsl r12 + adc r12,r1 + lsl r13 + adc r13,r1 + lsl r13 + adc r13,r1 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r24 + and r0,r8 + eor r12,r0 + mov r0,r25 + and r0,r9 + eor r13,r0 + com r2 + com r3 + com r4 + com r5 + eor r6,r2 + eor r7,r3 + eor r8,r4 + eor r9,r5 + eor r2,r10 + eor r3,r11 + eor r4,r12 + eor r5,r13 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r24 + or r0,r8 + eor r12,r0 + mov r0,r25 + or r0,r9 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r8 + and r0,r4 + eor r24,r0 + mov r0,r9 + and r0,r5 + eor r25,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r24 + and r0,r12 + eor r8,r0 + mov r0,r25 + and r0,r13 + eor r9,r0 + dec r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + movw r20,r6 + movw r22,r8 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r6 + eor r21,r7 + eor r22,r8 + eor r23,r9 + andi r20,85 + andi r21,85 + andi r22,85 + andi r23,85 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + movw r20,r10 + movw r22,r12 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r10 + eor r21,r11 + andi r20,85 + andi r21,85 + eor r10,r20 + eor r11,r21 + mov r22,r1 + mov r23,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + mov r0,r12 + mov r12,r10 + mov r10,r0 + mov r0,r13 + mov r13,r11 + mov r11,r0 + movw r20,r24 + lsr r21 + ror r20 + eor r20,r24 + eor r21,r25 + andi r20,85 + andi r21,85 + eor r24,r20 + eor r25,r21 + lsl r20 + rol r21 + eor r24,r20 + eor r25,r21 + mov r0,r24 + mov r24,r14 + mov r14,r0 + mov r0,r25 + mov r25,r15 + mov r15,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + com r14 + com r15 + com r24 + com r25 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + dec r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + eor r14,r20 + eor r15,r21 + eor r24,r22 + eor r25,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + lsl r4 + rol r5 + adc r4,r1 + lsl r4 + rol r5 + adc r4,r1 + lsl r4 + rol r5 + adc r4,r1 + lsl r4 + rol r5 + adc r4,r1 + mov r0,r7 + mov r7,r6 + mov r6,r0 + mov r0,r9 + mov r9,r8 + mov r8,r0 + mov r0,r1 + lsr r11 + ror r10 + ror r0 + lsr r11 + ror r10 + ror r0 + lsr r11 + ror r10 + ror r0 + lsr r11 + ror r10 + ror r0 + or r11,r0 + mov r0,r1 + lsr r13 + ror r12 + ror r0 + lsr r13 + ror r12 + ror r0 + lsr r13 + ror r12 + ror r0 + lsr r13 + ror r12 + ror r0 + or r13,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r24 + and r0,r8 + eor r12,r0 + mov r0,r25 + and r0,r9 + eor r13,r0 + com r2 + com r3 + com r4 + com r5 + eor r6,r2 + eor r7,r3 + eor r8,r4 + eor r9,r5 + eor r2,r10 + eor r3,r11 + eor r4,r12 + eor r5,r13 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r24 + or r0,r8 + eor r12,r0 + mov r0,r25 + or r0,r9 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r8 + and r0,r4 + eor r24,r0 + mov r0,r9 + and r0,r5 + eor r25,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r24 + and r0,r12 + eor r8,r0 + mov r0,r25 + and r0,r13 + eor r9,r0 + dec r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + dec r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + ld r23,-X + ld r22,-X + ld r21,-X + ld r20,-X + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + movw r20,r6 + movw r22,r8 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,204 + andi r21,204 + andi r22,204 + andi r23,204 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + ldi r19,51 + and r6,r19 + and r7,r19 + and r8,r19 + and r9,r19 + or r6,r20 + or r7,r21 + or r8,r22 + or r9,r23 + movw r20,r10 + movw r22,r12 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,136 + andi r21,136 + andi r22,136 + andi r23,136 + lsr r13 + ror r12 + ror r11 + ror r10 + ldi r17,119 + and r10,r17 + and r11,r17 + and r12,r17 + and r13,r17 + or r10,r20 + or r11,r21 + or r12,r22 + or r13,r23 + movw r20,r14 + movw r22,r24 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,238 + andi r21,238 + andi r22,238 + andi r23,238 + lsr r25 + ror r24 + ror r15 + ror r14 + lsr r25 + ror r24 + ror r15 + ror r14 + lsr r25 + ror r24 + ror r15 + ror r14 + ldi r16,17 + and r14,r16 + and r15,r16 + andi r24,17 + andi r25,17 + or r14,r20 + or r15,r21 + or r24,r22 + or r25,r23 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + com r14 + com r15 + com r24 + com r25 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + ret +1052: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + ldd r26,Y+1 + ldd r27,Y+2 + bst r2,0 + bld r20,0 + bst r6,0 + bld r20,1 + bst r10,0 + bld r20,2 + bst r14,0 + bld r20,3 + bst r2,1 + bld r20,4 + bst r6,1 + bld r20,5 + bst r10,1 + bld r20,6 + bst r14,1 + bld r20,7 + bst r2,2 + bld r21,0 + bst r6,2 + bld r21,1 + bst r10,2 + bld r21,2 + bst r14,2 + bld r21,3 + bst r2,3 + bld r21,4 + bst r6,3 + bld r21,5 + bst r10,3 + bld r21,6 + bst r14,3 + bld r21,7 + bst r2,4 + bld r22,0 + bst r6,4 + bld r22,1 + bst r10,4 + bld r22,2 + bst r14,4 + bld r22,3 + bst r2,5 + bld r22,4 + bst r6,5 + bld r22,5 + bst r10,5 + bld r22,6 + bst r14,5 + bld r22,7 + bst r2,6 + bld r23,0 + bst r6,6 + bld r23,1 + bst r10,6 + bld r23,2 + bst r14,6 + bld r23,3 + bst r2,7 + bld r23,4 + bst r6,7 + bld r23,5 + bst r10,7 + bld r23,6 + bst r14,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r3,0 + bld r20,0 + bst r7,0 + bld r20,1 + bst r11,0 + bld r20,2 + bst r15,0 + bld r20,3 + bst r3,1 + bld r20,4 + bst r7,1 + bld r20,5 + bst r11,1 + bld r20,6 + bst r15,1 + bld r20,7 + bst r3,2 + bld r21,0 + bst r7,2 + bld r21,1 + bst r11,2 + bld r21,2 + bst r15,2 + bld r21,3 + bst r3,3 + bld r21,4 + bst r7,3 + bld r21,5 + bst r11,3 + bld r21,6 + bst r15,3 + bld r21,7 + bst r3,4 + bld r22,0 + bst r7,4 + bld r22,1 + bst r11,4 + bld r22,2 + bst r15,4 + bld r22,3 + bst r3,5 + bld r22,4 + bst r7,5 + bld r22,5 + bst r11,5 + bld r22,6 + bst r15,5 + bld r22,7 + bst r3,6 + bld r23,0 + bst r7,6 + bld r23,1 + bst r11,6 + bld r23,2 + bst r15,6 + bld r23,3 + bst r3,7 + bld r23,4 + bst r7,7 + bld r23,5 + bst r11,7 + bld r23,6 + bst r15,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r4,0 + bld r20,0 + bst r8,0 + bld r20,1 + bst r12,0 + bld r20,2 + bst r24,0 + bld r20,3 + bst r4,1 + bld r20,4 + bst r8,1 + bld r20,5 + bst r12,1 + bld r20,6 + bst r24,1 + bld r20,7 + bst r4,2 + bld r21,0 + bst r8,2 + bld r21,1 + bst r12,2 + bld r21,2 + bst r24,2 + bld r21,3 + bst r4,3 + bld r21,4 + bst r8,3 + bld r21,5 + bst r12,3 + bld r21,6 + bst r24,3 + bld r21,7 + bst r4,4 + bld r22,0 + bst r8,4 + bld r22,1 + bst r12,4 + bld r22,2 + bst r24,4 + bld r22,3 + bst r4,5 + bld r22,4 + bst r8,5 + bld r22,5 + bst r12,5 + bld r22,6 + bst r24,5 + bld r22,7 + bst r4,6 + bld r23,0 + bst r8,6 + bld r23,1 + bst r12,6 + bld r23,2 + bst r24,6 + bld r23,3 + bst r4,7 + bld r23,4 + bst r8,7 + bld r23,5 + bst r12,7 + bld r23,6 + bst r24,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r5,0 + bld r20,0 + bst r9,0 + bld r20,1 + bst r13,0 + bld r20,2 + bst r25,0 + bld r20,3 + bst r5,1 + bld r20,4 + bst r9,1 + bld r20,5 + bst r13,1 + bld r20,6 + bst r25,1 + bld r20,7 + bst r5,2 + bld r21,0 + bst r9,2 + bld r21,1 + bst r13,2 + bld r21,2 + bst r25,2 + bld r21,3 + bst r5,3 + bld r21,4 + bst r9,3 + bld r21,5 + bst r13,3 + bld r21,6 + bst r25,3 + bld r21,7 + bst r5,4 + bld r22,0 + bst r9,4 + bld r22,1 + bst r13,4 + bld r22,2 + bst r25,4 + bld r22,3 + bst r5,5 + bld r22,4 + bst r9,5 + bld r22,5 + bst r13,5 + bld r22,6 + bst r25,5 + bld r22,7 + bst r5,6 + bld r23,0 + bst r9,6 + bld r23,1 + bst r13,6 + bld r23,2 + bst r25,6 + bld r23,3 + bst r5,7 + bld r23,4 + bst r9,7 + bld r23,5 + bst r13,7 + bld r23,6 + bst r25,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + pop r0 + pop r0 + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128t_decrypt, .-gift128t_decrypt + +#endif + +#endif diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-small-avr.S b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-small-avr.S new file mode 100644 index 0000000..6f2d68b --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-small-avr.S @@ -0,0 +1,9331 @@ +#if defined(__AVR__) +#include +/* Automatically generated - do not edit */ + +#include "internal-gift128-config.h" + +#if GIFT128_VARIANT == GIFT128_VARIANT_SMALL + + .section .progmem.data,"a",@progbits + .p2align 8 + .type table_0, @object + .size table_0, 160 +table_0: + .byte 8 + .byte 0 + .byte 0 + .byte 16 + .byte 0 + .byte 128 + .byte 1 + .byte 128 + .byte 2 + .byte 0 + .byte 0 + .byte 84 + .byte 129 + .byte 1 + .byte 1 + .byte 1 + .byte 31 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 136 + .byte 16 + .byte 0 + .byte 224 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 81 + .byte 128 + .byte 1 + .byte 3 + .byte 3 + .byte 47 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 8 + .byte 16 + .byte 0 + .byte 96 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 65 + .byte 128 + .byte 0 + .byte 3 + .byte 3 + .byte 39 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 0 + .byte 16 + .byte 0 + .byte 224 + .byte 1 + .byte 64 + .byte 2 + .byte 0 + .byte 80 + .byte 17 + .byte 128 + .byte 1 + .byte 2 + .byte 3 + .byte 43 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 8 + .byte 8 + .byte 16 + .byte 0 + .byte 64 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 64 + .byte 1 + .byte 128 + .byte 0 + .byte 2 + .byte 2 + .byte 33 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 0 + .byte 0 + .byte 16 + .byte 0 + .byte 192 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 81 + .byte 128 + .byte 1 + .byte 1 + .byte 3 + .byte 46 + .byte 0 + .byte 0 + .byte 128 + .byte 0 + .byte 136 + .byte 8 + .byte 16 + .byte 0 + .byte 32 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 64 + .byte 128 + .byte 0 + .byte 3 + .byte 1 + .byte 6 + .byte 0 + .byte 0 + .byte 128 + .byte 8 + .byte 136 + .byte 0 + .byte 16 + .byte 0 + .byte 160 + .byte 1 + .byte 192 + .byte 2 + .byte 0 + .byte 80 + .byte 20 + .byte 129 + .byte 1 + .byte 2 + .byte 1 + .byte 26 + .byte 0 + .byte 0 + .byte 128 + + .text +.global gift128n_init + .type gift128n_init, @function +gift128n_init: + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + movw r30,r24 + movw r26,r22 +.L__stack_usage = 16 + ld r22,X+ + ld r23,X+ + ld r2,X+ + ld r3,X+ + ld r8,X+ + ld r9,X+ + ld r10,X+ + ld r11,X+ + ld r4,X+ + ld r5,X+ + ld r6,X+ + ld r7,X+ + ld r12,X+ + ld r13,X+ + ld r14,X+ + ld r15,X+ + st Z+,r22 + st Z+,r23 + st Z+,r2 + st Z+,r3 + st Z+,r4 + st Z+,r5 + st Z+,r6 + st Z+,r7 + st Z+,r8 + st Z+,r9 + st Z+,r10 + st Z+,r11 + st Z+,r12 + st Z+,r13 + st Z+,r14 + st Z+,r15 + ldi r24,4 +33: + st Z+,r4 + st Z+,r5 + st Z+,r6 + st Z+,r7 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + st Z+,r22 + st Z+,r23 + st Z+,r2 + st Z+,r3 + mov r0,r22 + mov r22,r4 + mov r4,r0 + mov r0,r23 + mov r23,r5 + mov r5,r0 + mov r0,r2 + mov r2,r6 + mov r6,r0 + mov r0,r3 + mov r3,r7 + mov r7,r0 + st Z+,r12 + st Z+,r13 + st Z+,r14 + st Z+,r15 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + mov r0,r1 + lsr r11 + ror r10 + ror r0 + lsr r11 + ror r10 + ror r0 + or r11,r0 + st Z+,r8 + st Z+,r9 + st Z+,r10 + st Z+,r11 + mov r0,r8 + mov r8,r12 + mov r12,r0 + mov r0,r9 + mov r9,r13 + mov r13,r0 + mov r0,r10 + mov r10,r14 + mov r14,r0 + mov r0,r11 + mov r11,r15 + mov r15,r0 + dec r24 + breq 5115f + rjmp 33b +5115: + subi r30,80 + sbc r31,r1 + ldi r24,2 +119: + ld r22,Z + ldd r23,Z+1 + ldd r2,Z+2 + ldd r3,Z+3 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,85 + mov r19,r1 + andi r20,85 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + st Z,r3 + std Z+1,r23 + std Z+2,r2 + std Z+3,r22 + ldd r22,Z+4 + ldd r23,Z+5 + ldd r2,Z+6 + ldd r3,Z+7 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,85 + mov r19,r1 + andi r20,85 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+4,r3 + std Z+5,r23 + std Z+6,r2 + std Z+7,r22 + ldd r22,Z+8 + ldd r23,Z+9 + ldd r2,Z+10 + ldd r3,Z+11 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,17 + andi r19,17 + andi r20,17 + andi r21,17 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+8,r3 + std Z+9,r23 + std Z+10,r2 + std Z+11,r22 + ldd r22,Z+12 + ldd r23,Z+13 + ldd r2,Z+14 + ldd r3,Z+15 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,17 + andi r19,17 + andi r20,17 + andi r21,17 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+12,r3 + std Z+13,r23 + std Z+14,r2 + std Z+15,r22 + ldd r22,Z+16 + ldd r23,Z+17 + ldd r2,Z+18 + ldd r3,Z+19 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r19 + rol r20 + rol r21 + rol r0 + movw r18,r20 + mov r20,r0 + mov r21,r1 + eor r18,r22 + eor r19,r23 + andi r18,170 + andi r19,170 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r0,r1 + lsr r20 + ror r19 + ror r18 + ror r0 + movw r20,r18 + mov r19,r0 + mov r18,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+16,r3 + std Z+17,r23 + std Z+18,r2 + std Z+19,r22 + ldd r22,Z+20 + ldd r23,Z+21 + ldd r2,Z+22 + ldd r3,Z+23 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r19 + rol r20 + rol r21 + rol r0 + movw r18,r20 + mov r20,r0 + mov r21,r1 + eor r18,r22 + eor r19,r23 + andi r18,170 + andi r19,170 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r0,r1 + lsr r20 + ror r19 + ror r18 + ror r0 + movw r20,r18 + mov r19,r0 + mov r18,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+20,r3 + std Z+21,r23 + std Z+22,r2 + std Z+23,r22 + ldd r22,Z+24 + ldd r23,Z+25 + ldd r2,Z+26 + ldd r3,Z+27 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,10 + andi r19,10 + andi r20,10 + andi r21,10 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,204 + mov r19,r1 + andi r20,204 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+24,r3 + std Z+25,r23 + std Z+26,r2 + std Z+27,r22 + ldd r22,Z+28 + ldd r23,Z+29 + ldd r2,Z+30 + ldd r3,Z+31 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,10 + andi r19,10 + andi r20,10 + andi r21,10 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,204 + mov r19,r1 + andi r20,204 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+28,r3 + std Z+29,r23 + std Z+30,r2 + std Z+31,r22 + dec r24 + breq 1268f + adiw r30,40 + rjmp 119b +1268: + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + ret + .size gift128n_init, .-gift128n_init + + .text +.global gift128n_encrypt + .type gift128n_encrypt, @function +gift128n_encrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e + subi r28,80 + sbci r29,0 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 100 + ldi r24,20 +1: + ld r22,Z+ + ld r23,Z+ + ld r2,Z+ + ld r3,Z+ + std Y+1,r22 + std Y+2,r23 + std Y+3,r2 + std Y+4,r3 + adiw r28,4 + dec r24 + brne 1b + subi r28,80 + sbc r29,r1 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r22,0 + bst r18,1 + bld r4,0 + bst r18,2 + bld r8,0 + bst r18,3 + bld r12,0 + bst r18,4 + bld r22,1 + bst r18,5 + bld r4,1 + bst r18,6 + bld r8,1 + bst r18,7 + bld r12,1 + bst r19,0 + bld r22,2 + bst r19,1 + bld r4,2 + bst r19,2 + bld r8,2 + bst r19,3 + bld r12,2 + bst r19,4 + bld r22,3 + bst r19,5 + bld r4,3 + bst r19,6 + bld r8,3 + bst r19,7 + bld r12,3 + bst r20,0 + bld r22,4 + bst r20,1 + bld r4,4 + bst r20,2 + bld r8,4 + bst r20,3 + bld r12,4 + bst r20,4 + bld r22,5 + bst r20,5 + bld r4,5 + bst r20,6 + bld r8,5 + bst r20,7 + bld r12,5 + bst r21,0 + bld r22,6 + bst r21,1 + bld r4,6 + bst r21,2 + bld r8,6 + bst r21,3 + bld r12,6 + bst r21,4 + bld r22,7 + bst r21,5 + bld r4,7 + bst r21,6 + bld r8,7 + bst r21,7 + bld r12,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r23,0 + bst r18,1 + bld r5,0 + bst r18,2 + bld r9,0 + bst r18,3 + bld r13,0 + bst r18,4 + bld r23,1 + bst r18,5 + bld r5,1 + bst r18,6 + bld r9,1 + bst r18,7 + bld r13,1 + bst r19,0 + bld r23,2 + bst r19,1 + bld r5,2 + bst r19,2 + bld r9,2 + bst r19,3 + bld r13,2 + bst r19,4 + bld r23,3 + bst r19,5 + bld r5,3 + bst r19,6 + bld r9,3 + bst r19,7 + bld r13,3 + bst r20,0 + bld r23,4 + bst r20,1 + bld r5,4 + bst r20,2 + bld r9,4 + bst r20,3 + bld r13,4 + bst r20,4 + bld r23,5 + bst r20,5 + bld r5,5 + bst r20,6 + bld r9,5 + bst r20,7 + bld r13,5 + bst r21,0 + bld r23,6 + bst r21,1 + bld r5,6 + bst r21,2 + bld r9,6 + bst r21,3 + bld r13,6 + bst r21,4 + bld r23,7 + bst r21,5 + bld r5,7 + bst r21,6 + bld r9,7 + bst r21,7 + bld r13,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r2,0 + bst r18,1 + bld r6,0 + bst r18,2 + bld r10,0 + bst r18,3 + bld r14,0 + bst r18,4 + bld r2,1 + bst r18,5 + bld r6,1 + bst r18,6 + bld r10,1 + bst r18,7 + bld r14,1 + bst r19,0 + bld r2,2 + bst r19,1 + bld r6,2 + bst r19,2 + bld r10,2 + bst r19,3 + bld r14,2 + bst r19,4 + bld r2,3 + bst r19,5 + bld r6,3 + bst r19,6 + bld r10,3 + bst r19,7 + bld r14,3 + bst r20,0 + bld r2,4 + bst r20,1 + bld r6,4 + bst r20,2 + bld r10,4 + bst r20,3 + bld r14,4 + bst r20,4 + bld r2,5 + bst r20,5 + bld r6,5 + bst r20,6 + bld r10,5 + bst r20,7 + bld r14,5 + bst r21,0 + bld r2,6 + bst r21,1 + bld r6,6 + bst r21,2 + bld r10,6 + bst r21,3 + bld r14,6 + bst r21,4 + bld r2,7 + bst r21,5 + bld r6,7 + bst r21,6 + bld r10,7 + bst r21,7 + bld r14,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r3,0 + bst r18,1 + bld r7,0 + bst r18,2 + bld r11,0 + bst r18,3 + bld r15,0 + bst r18,4 + bld r3,1 + bst r18,5 + bld r7,1 + bst r18,6 + bld r11,1 + bst r18,7 + bld r15,1 + bst r19,0 + bld r3,2 + bst r19,1 + bld r7,2 + bst r19,2 + bld r11,2 + bst r19,3 + bld r15,2 + bst r19,4 + bld r3,3 + bst r19,5 + bld r7,3 + bst r19,6 + bld r11,3 + bst r19,7 + bld r15,3 + bst r20,0 + bld r3,4 + bst r20,1 + bld r7,4 + bst r20,2 + bld r11,4 + bst r20,3 + bld r15,4 + bst r20,4 + bld r3,5 + bst r20,5 + bld r7,5 + bst r20,6 + bld r11,5 + bst r20,7 + bld r15,5 + bst r21,0 + bld r3,6 + bst r21,1 + bld r7,6 + bst r21,2 + bld r11,6 + bst r21,3 + bld r15,6 + bst r21,4 + bld r3,7 + bst r21,5 + bld r7,7 + bst r21,6 + bld r11,7 + bst r21,7 + bld r15,7 + movw r26,r28 + adiw r26,1 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + rcall 329f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1067f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,20 + adiw r26,40 + rcall 329f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1067f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,40 + sbiw r26,40 + rcall 329f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1067f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,60 + adiw r26,40 + rcall 329f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1067f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,80 + sbiw r26,40 + rcall 329f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1067f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,100 + adiw r26,40 + rcall 329f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1067f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,120 + sbiw r26,40 + rcall 329f + rcall 329f + rjmp 1541f +329: + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + movw r18,r4 + movw r20,r6 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,204 + andi r19,204 + andi r20,204 + andi r21,204 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + ldi r25,51 + and r4,r25 + and r5,r25 + and r6,r25 + and r7,r25 + or r4,r18 + or r5,r19 + or r6,r20 + or r7,r21 + movw r18,r8 + movw r20,r10 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,238 + andi r19,238 + andi r20,238 + andi r21,238 + lsr r11 + ror r10 + ror r9 + ror r8 + lsr r11 + ror r10 + ror r9 + ror r8 + lsr r11 + ror r10 + ror r9 + ror r8 + ldi r24,17 + and r8,r24 + and r9,r24 + and r10,r24 + and r11,r24 + or r8,r18 + or r9,r19 + or r10,r20 + or r11,r21 + movw r18,r12 + movw r20,r14 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,136 + andi r19,136 + andi r20,136 + andi r21,136 + lsr r15 + ror r14 + ror r13 + ror r12 + ldi r17,119 + and r12,r17 + and r13,r17 + and r14,r17 + and r15,r17 + or r12,r18 + or r13,r19 + or r14,r20 + or r15,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r12 + and r0,r8 + eor r4,r0 + mov r0,r13 + and r0,r9 + eor r5,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r22 + eor r12,r0 + mov r0,r5 + and r0,r23 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r12 + or r0,r4 + eor r8,r0 + mov r0,r13 + or r0,r5 + eor r9,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + eor r22,r8 + eor r23,r9 + eor r2,r10 + eor r3,r11 + eor r4,r22 + eor r5,r23 + eor r6,r2 + eor r7,r3 + com r22 + com r23 + com r2 + com r3 + mov r0,r12 + and r0,r4 + eor r8,r0 + mov r0,r13 + and r0,r5 + eor r9,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r1 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + or r23,r0 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + mov r0,r5 + mov r5,r4 + mov r4,r0 + mov r0,r7 + mov r7,r6 + mov r6,r0 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r12,r18 + eor r13,r19 + eor r14,r20 + eor r15,r21 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + movw r18,r4 + movw r20,r6 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r4 + eor r19,r5 + eor r20,r6 + eor r21,r7 + andi r18,85 + andi r19,85 + andi r20,85 + andi r21,85 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + mov r0,r10 + mov r10,r8 + mov r8,r0 + mov r0,r11 + mov r11,r9 + mov r9,r0 + movw r18,r8 + movw r20,r10 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r8 + eor r19,r9 + andi r18,85 + andi r19,85 + eor r8,r18 + eor r9,r19 + mov r20,r1 + mov r21,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + mov r0,r14 + mov r14,r12 + mov r12,r0 + mov r0,r15 + mov r15,r13 + mov r13,r0 + movw r18,r14 + lsr r19 + ror r18 + eor r18,r14 + eor r19,r15 + andi r18,85 + andi r19,85 + eor r14,r18 + eor r15,r19 + lsl r18 + rol r19 + eor r14,r18 + eor r15,r19 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r12 + and r0,r8 + eor r4,r0 + mov r0,r13 + and r0,r9 + eor r5,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r22 + eor r12,r0 + mov r0,r5 + and r0,r23 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r12 + or r0,r4 + eor r8,r0 + mov r0,r13 + or r0,r5 + eor r9,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + eor r22,r8 + eor r23,r9 + eor r2,r10 + eor r3,r11 + eor r4,r22 + eor r5,r23 + eor r6,r2 + eor r7,r3 + com r22 + com r23 + com r2 + com r3 + mov r0,r12 + and r0,r4 + eor r8,r0 + mov r0,r13 + and r0,r5 + eor r9,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r23 + adc r23,r1 + lsl r23 + adc r23,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + swap r4 + swap r5 + swap r6 + swap r7 + mov r0,r1 + lsr r8 + ror r0 + lsr r8 + ror r0 + or r8,r0 + mov r0,r1 + lsr r9 + ror r0 + lsr r9 + ror r0 + or r9,r0 + mov r0,r1 + lsr r10 + ror r0 + lsr r10 + ror r0 + or r10,r0 + mov r0,r1 + lsr r11 + ror r0 + lsr r11 + ror r0 + or r11,r0 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r12,r18 + eor r13,r19 + eor r14,r20 + eor r15,r21 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r6 + mov r6,r4 + mov r4,r0 + mov r0,r7 + mov r7,r5 + mov r5,r0 + mov r0,r8 + mov r8,r9 + mov r9,r10 + mov r10,r11 + mov r11,r0 + mov r0,r15 + mov r15,r14 + mov r14,r13 + mov r13,r12 + mov r12,r0 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + eor r22,r12 + eor r23,r13 + eor r2,r14 + eor r3,r15 + eor r12,r22 + eor r13,r23 + eor r14,r2 + eor r15,r3 + eor r22,r12 + eor r23,r13 + eor r2,r14 + eor r3,r15 + ret +1067: + movw r30,r26 + sbiw r30,40 + push r3 + push r2 + push r23 + push r22 + push r7 + push r6 + push r5 + push r4 + ld r22,Z + ldd r23,Z+1 + ldd r2,Z+2 + ldd r3,Z+3 + ldd r26,Z+4 + ldd r27,Z+5 + ldd r24,Z+6 + ldd r25,Z+7 + movw r18,r26 + movw r20,r24 + movw r18,r20 + mov r20,r1 + mov r21,r1 + eor r18,r26 + eor r19,r27 + andi r18,51 + andi r19,51 + eor r26,r18 + eor r27,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,68 + andi r19,68 + andi r20,85 + andi r21,85 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + st Z,r26 + std Z+1,r27 + std Z+2,r24 + std Z+3,r25 + movw r18,r22 + movw r20,r2 + andi r18,51 + andi r19,51 + andi r20,51 + andi r21,51 + andi r22,204 + andi r23,204 + ldi r17,204 + and r2,r17 + and r3,r17 + or r2,r21 + or r3,r18 + or r22,r19 + or r23,r20 + movw r18,r2 + movw r20,r22 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r2 + eor r19,r3 + eor r20,r22 + eor r21,r23 + mov r18,r1 + andi r19,17 + andi r20,85 + andi r21,85 + eor r2,r18 + eor r3,r19 + eor r22,r20 + eor r23,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r2,r18 + eor r3,r19 + eor r22,r20 + eor r23,r21 + std Z+4,r2 + std Z+5,r3 + std Z+6,r22 + std Z+7,r23 + ldd r22,Z+8 + ldd r23,Z+9 + ldd r2,Z+10 + ldd r3,Z+11 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r24,Z+14 + ldd r25,Z+15 + lsl r26 + adc r26,r1 + lsl r26 + adc r26,r1 + swap r27 + lsl r24 + adc r24,r1 + lsl r24 + adc r24,r1 + swap r25 + std Z+8,r26 + std Z+9,r27 + std Z+10,r24 + std Z+11,r25 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r23 + adc r23,r1 + lsl r23 + adc r23,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + std Z+12,r22 + std Z+13,r23 + std Z+14,r2 + std Z+15,r3 + ldd r22,Z+16 + ldd r23,Z+17 + ldd r2,Z+18 + ldd r3,Z+19 + ldd r26,Z+20 + ldd r27,Z+21 + ldd r24,Z+22 + ldd r25,Z+23 + movw r18,r26 + movw r20,r24 + andi r18,170 + andi r19,170 + andi r20,170 + andi r21,170 + andi r26,85 + andi r27,85 + andi r24,85 + andi r25,85 + or r26,r19 + or r27,r20 + or r24,r21 + or r25,r18 + std Z+16,r24 + std Z+17,r25 + std Z+18,r26 + std Z+19,r27 + movw r18,r22 + movw r20,r2 + andi r18,85 + andi r19,85 + andi r20,85 + andi r21,85 + andi r22,170 + andi r23,170 + ldi r16,170 + and r2,r16 + and r3,r16 + lsl r22 + rol r23 + rol r2 + rol r3 + adc r22,r1 + lsl r22 + rol r23 + rol r2 + rol r3 + adc r22,r1 + lsl r22 + rol r23 + rol r2 + rol r3 + adc r22,r1 + lsl r22 + rol r23 + rol r2 + rol r3 + adc r22,r1 + or r22,r18 + or r23,r19 + or r2,r20 + or r3,r21 + std Z+20,r3 + std Z+21,r22 + std Z+22,r23 + std Z+23,r2 + ldd r22,Z+24 + ldd r23,Z+25 + ldd r2,Z+26 + ldd r3,Z+27 + ldd r26,Z+28 + ldd r27,Z+29 + ldd r24,Z+30 + ldd r25,Z+31 + movw r18,r26 + movw r20,r24 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + lsr r21 + ror r20 + ror r19 + ror r18 + andi r18,120 + andi r19,120 + andi r20,120 + andi r21,120 + movw r4,r18 + movw r6,r20 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ldi r16,8 + and r4,r16 + and r5,r16 + and r6,r16 + and r7,r16 + eor r18,r4 + eor r19,r5 + eor r20,r6 + eor r21,r7 + lsl r4 + rol r5 + rol r6 + rol r7 + lsl r4 + rol r5 + rol r6 + rol r7 + lsl r4 + rol r5 + rol r6 + rol r7 + lsl r4 + rol r5 + rol r6 + rol r7 + eor r18,r4 + eor r19,r5 + eor r20,r6 + eor r21,r7 + andi r26,15 + andi r27,15 + andi r24,15 + andi r25,15 + or r26,r18 + or r27,r19 + or r24,r20 + or r25,r21 + std Z+24,r26 + std Z+25,r27 + std Z+26,r24 + std Z+27,r25 + movw r18,r2 + lsr r19 + ror r18 + lsr r19 + ror r18 + andi r18,48 + andi r19,48 + movw r26,r22 + movw r24,r2 + andi r26,1 + andi r27,1 + andi r24,1 + andi r25,1 + lsl r26 + rol r27 + rol r24 + rol r25 + lsl r26 + rol r27 + rol r24 + rol r25 + lsl r26 + rol r27 + rol r24 + rol r25 + or r26,r18 + or r27,r19 + movw r18,r2 + lsl r18 + rol r19 + lsl r18 + rol r19 + andi r18,192 + andi r19,192 + or r26,r18 + or r27,r19 + movw r18,r22 + andi r18,224 + andi r19,224 + lsr r19 + ror r18 + or r24,r18 + or r25,r19 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + andi r18,7 + andi r19,7 + andi r20,7 + andi r21,7 + or r26,r18 + or r27,r19 + or r24,r20 + or r25,r21 + andi r22,16 + andi r23,16 + lsl r22 + rol r23 + lsl r22 + rol r23 + lsl r22 + rol r23 + or r24,r22 + or r25,r23 + std Z+28,r26 + std Z+29,r27 + std Z+30,r24 + std Z+31,r25 + ldd r22,Z+32 + ldd r23,Z+33 + ldd r2,Z+34 + ldd r3,Z+35 + ldd r26,Z+36 + ldd r27,Z+37 + ldd r24,Z+38 + ldd r25,Z+39 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Z+32,r27 + std Z+33,r26 + std Z+34,r24 + std Z+35,r25 + mov r0,r1 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + or r23,r0 + mov r0,r2 + mov r2,r3 + mov r3,r0 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + std Z+36,r22 + std Z+37,r23 + std Z+38,r2 + std Z+39,r3 + pop r4 + pop r5 + pop r6 + pop r7 + pop r22 + pop r23 + pop r2 + pop r3 + movw r26,r30 + ret +1541: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + subi r28,175 + sbci r29,255 + ld r26,Y+ + ld r27,Y + subi r28,82 + sbc r29,r1 + bst r22,0 + bld r18,0 + bst r4,0 + bld r18,1 + bst r8,0 + bld r18,2 + bst r12,0 + bld r18,3 + bst r22,1 + bld r18,4 + bst r4,1 + bld r18,5 + bst r8,1 + bld r18,6 + bst r12,1 + bld r18,7 + bst r22,2 + bld r19,0 + bst r4,2 + bld r19,1 + bst r8,2 + bld r19,2 + bst r12,2 + bld r19,3 + bst r22,3 + bld r19,4 + bst r4,3 + bld r19,5 + bst r8,3 + bld r19,6 + bst r12,3 + bld r19,7 + bst r22,4 + bld r20,0 + bst r4,4 + bld r20,1 + bst r8,4 + bld r20,2 + bst r12,4 + bld r20,3 + bst r22,5 + bld r20,4 + bst r4,5 + bld r20,5 + bst r8,5 + bld r20,6 + bst r12,5 + bld r20,7 + bst r22,6 + bld r21,0 + bst r4,6 + bld r21,1 + bst r8,6 + bld r21,2 + bst r12,6 + bld r21,3 + bst r22,7 + bld r21,4 + bst r4,7 + bld r21,5 + bst r8,7 + bld r21,6 + bst r12,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r23,0 + bld r18,0 + bst r5,0 + bld r18,1 + bst r9,0 + bld r18,2 + bst r13,0 + bld r18,3 + bst r23,1 + bld r18,4 + bst r5,1 + bld r18,5 + bst r9,1 + bld r18,6 + bst r13,1 + bld r18,7 + bst r23,2 + bld r19,0 + bst r5,2 + bld r19,1 + bst r9,2 + bld r19,2 + bst r13,2 + bld r19,3 + bst r23,3 + bld r19,4 + bst r5,3 + bld r19,5 + bst r9,3 + bld r19,6 + bst r13,3 + bld r19,7 + bst r23,4 + bld r20,0 + bst r5,4 + bld r20,1 + bst r9,4 + bld r20,2 + bst r13,4 + bld r20,3 + bst r23,5 + bld r20,4 + bst r5,5 + bld r20,5 + bst r9,5 + bld r20,6 + bst r13,5 + bld r20,7 + bst r23,6 + bld r21,0 + bst r5,6 + bld r21,1 + bst r9,6 + bld r21,2 + bst r13,6 + bld r21,3 + bst r23,7 + bld r21,4 + bst r5,7 + bld r21,5 + bst r9,7 + bld r21,6 + bst r13,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r2,0 + bld r18,0 + bst r6,0 + bld r18,1 + bst r10,0 + bld r18,2 + bst r14,0 + bld r18,3 + bst r2,1 + bld r18,4 + bst r6,1 + bld r18,5 + bst r10,1 + bld r18,6 + bst r14,1 + bld r18,7 + bst r2,2 + bld r19,0 + bst r6,2 + bld r19,1 + bst r10,2 + bld r19,2 + bst r14,2 + bld r19,3 + bst r2,3 + bld r19,4 + bst r6,3 + bld r19,5 + bst r10,3 + bld r19,6 + bst r14,3 + bld r19,7 + bst r2,4 + bld r20,0 + bst r6,4 + bld r20,1 + bst r10,4 + bld r20,2 + bst r14,4 + bld r20,3 + bst r2,5 + bld r20,4 + bst r6,5 + bld r20,5 + bst r10,5 + bld r20,6 + bst r14,5 + bld r20,7 + bst r2,6 + bld r21,0 + bst r6,6 + bld r21,1 + bst r10,6 + bld r21,2 + bst r14,6 + bld r21,3 + bst r2,7 + bld r21,4 + bst r6,7 + bld r21,5 + bst r10,7 + bld r21,6 + bst r14,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r3,0 + bld r18,0 + bst r7,0 + bld r18,1 + bst r11,0 + bld r18,2 + bst r15,0 + bld r18,3 + bst r3,1 + bld r18,4 + bst r7,1 + bld r18,5 + bst r11,1 + bld r18,6 + bst r15,1 + bld r18,7 + bst r3,2 + bld r19,0 + bst r7,2 + bld r19,1 + bst r11,2 + bld r19,2 + bst r15,2 + bld r19,3 + bst r3,3 + bld r19,4 + bst r7,3 + bld r19,5 + bst r11,3 + bld r19,6 + bst r15,3 + bld r19,7 + bst r3,4 + bld r20,0 + bst r7,4 + bld r20,1 + bst r11,4 + bld r20,2 + bst r15,4 + bld r20,3 + bst r3,5 + bld r20,4 + bst r7,5 + bld r20,5 + bst r11,5 + bld r20,6 + bst r15,5 + bld r20,7 + bst r3,6 + bld r21,0 + bst r7,6 + bld r21,1 + bst r11,6 + bld r21,2 + bst r15,6 + bld r21,3 + bst r3,7 + bld r21,4 + bst r7,7 + bld r21,5 + bst r11,7 + bld r21,6 + bst r15,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + subi r28,174 + sbci r29,255 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128n_encrypt, .-gift128n_encrypt + + .section .progmem.data,"a",@progbits + .p2align 8 + .type table_1, @object + .size table_1, 40 +table_1: + .byte 1 + .byte 3 + .byte 7 + .byte 15 + .byte 31 + .byte 62 + .byte 61 + .byte 59 + .byte 55 + .byte 47 + .byte 30 + .byte 60 + .byte 57 + .byte 51 + .byte 39 + .byte 14 + .byte 29 + .byte 58 + .byte 53 + .byte 43 + .byte 22 + .byte 44 + .byte 24 + .byte 48 + .byte 33 + .byte 2 + .byte 5 + .byte 11 + .byte 23 + .byte 46 + .byte 28 + .byte 56 + .byte 49 + .byte 35 + .byte 6 + .byte 13 + .byte 27 + .byte 54 + .byte 45 + .byte 26 + + .text +.global gift128n_decrypt + .type gift128n_decrypt, @function +gift128n_decrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e + sbiw r28,16 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 35 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r22,0 + bst r18,1 + bld r4,0 + bst r18,2 + bld r8,0 + bst r18,3 + bld r12,0 + bst r18,4 + bld r22,1 + bst r18,5 + bld r4,1 + bst r18,6 + bld r8,1 + bst r18,7 + bld r12,1 + bst r19,0 + bld r22,2 + bst r19,1 + bld r4,2 + bst r19,2 + bld r8,2 + bst r19,3 + bld r12,2 + bst r19,4 + bld r22,3 + bst r19,5 + bld r4,3 + bst r19,6 + bld r8,3 + bst r19,7 + bld r12,3 + bst r20,0 + bld r22,4 + bst r20,1 + bld r4,4 + bst r20,2 + bld r8,4 + bst r20,3 + bld r12,4 + bst r20,4 + bld r22,5 + bst r20,5 + bld r4,5 + bst r20,6 + bld r8,5 + bst r20,7 + bld r12,5 + bst r21,0 + bld r22,6 + bst r21,1 + bld r4,6 + bst r21,2 + bld r8,6 + bst r21,3 + bld r12,6 + bst r21,4 + bld r22,7 + bst r21,5 + bld r4,7 + bst r21,6 + bld r8,7 + bst r21,7 + bld r12,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r23,0 + bst r18,1 + bld r5,0 + bst r18,2 + bld r9,0 + bst r18,3 + bld r13,0 + bst r18,4 + bld r23,1 + bst r18,5 + bld r5,1 + bst r18,6 + bld r9,1 + bst r18,7 + bld r13,1 + bst r19,0 + bld r23,2 + bst r19,1 + bld r5,2 + bst r19,2 + bld r9,2 + bst r19,3 + bld r13,2 + bst r19,4 + bld r23,3 + bst r19,5 + bld r5,3 + bst r19,6 + bld r9,3 + bst r19,7 + bld r13,3 + bst r20,0 + bld r23,4 + bst r20,1 + bld r5,4 + bst r20,2 + bld r9,4 + bst r20,3 + bld r13,4 + bst r20,4 + bld r23,5 + bst r20,5 + bld r5,5 + bst r20,6 + bld r9,5 + bst r20,7 + bld r13,5 + bst r21,0 + bld r23,6 + bst r21,1 + bld r5,6 + bst r21,2 + bld r9,6 + bst r21,3 + bld r13,6 + bst r21,4 + bld r23,7 + bst r21,5 + bld r5,7 + bst r21,6 + bld r9,7 + bst r21,7 + bld r13,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r2,0 + bst r18,1 + bld r6,0 + bst r18,2 + bld r10,0 + bst r18,3 + bld r14,0 + bst r18,4 + bld r2,1 + bst r18,5 + bld r6,1 + bst r18,6 + bld r10,1 + bst r18,7 + bld r14,1 + bst r19,0 + bld r2,2 + bst r19,1 + bld r6,2 + bst r19,2 + bld r10,2 + bst r19,3 + bld r14,2 + bst r19,4 + bld r2,3 + bst r19,5 + bld r6,3 + bst r19,6 + bld r10,3 + bst r19,7 + bld r14,3 + bst r20,0 + bld r2,4 + bst r20,1 + bld r6,4 + bst r20,2 + bld r10,4 + bst r20,3 + bld r14,4 + bst r20,4 + bld r2,5 + bst r20,5 + bld r6,5 + bst r20,6 + bld r10,5 + bst r20,7 + bld r14,5 + bst r21,0 + bld r2,6 + bst r21,1 + bld r6,6 + bst r21,2 + bld r10,6 + bst r21,3 + bld r14,6 + bst r21,4 + bld r2,7 + bst r21,5 + bld r6,7 + bst r21,6 + bld r10,7 + bst r21,7 + bld r14,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r3,0 + bst r18,1 + bld r7,0 + bst r18,2 + bld r11,0 + bst r18,3 + bld r15,0 + bst r18,4 + bld r3,1 + bst r18,5 + bld r7,1 + bst r18,6 + bld r11,1 + bst r18,7 + bld r15,1 + bst r19,0 + bld r3,2 + bst r19,1 + bld r7,2 + bst r19,2 + bld r11,2 + bst r19,3 + bld r15,2 + bst r19,4 + bld r3,3 + bst r19,5 + bld r7,3 + bst r19,6 + bld r11,3 + bst r19,7 + bld r15,3 + bst r20,0 + bld r3,4 + bst r20,1 + bld r7,4 + bst r20,2 + bld r11,4 + bst r20,3 + bld r15,4 + bst r20,4 + bld r3,5 + bst r20,5 + bld r7,5 + bst r20,6 + bld r11,5 + bst r20,7 + bld r15,5 + bst r21,0 + bld r3,6 + bst r21,1 + bld r7,6 + bst r21,2 + bld r11,6 + bst r21,3 + bld r15,6 + bst r21,4 + bld r3,7 + bst r21,5 + bld r7,7 + bst r21,6 + bld r11,7 + bst r21,7 + bld r15,7 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r24,Z+14 + ldd r25,Z+15 + mov r0,r25 + mov r25,r26 + mov r26,r0 + movw r18,r26 + movw r20,r24 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,17 + andi r19,17 + andi r20,17 + andi r21,17 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Y+1,r26 + std Y+2,r27 + std Y+3,r24 + std Y+4,r25 + ldd r26,Z+4 + ldd r27,Z+5 + ldd r24,Z+6 + ldd r25,Z+7 + mov r0,r25 + mov r25,r26 + mov r26,r0 + movw r18,r26 + movw r20,r24 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + andi r18,51 + andi r19,51 + eor r26,r18 + eor r27,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,85 + mov r19,r1 + andi r20,85 + mov r21,r1 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Y+5,r26 + std Y+6,r27 + std Y+7,r24 + std Y+8,r25 + ldd r26,Z+8 + ldd r27,Z+9 + ldd r24,Z+10 + ldd r25,Z+11 + mov r0,r25 + mov r25,r26 + mov r26,r0 + movw r18,r26 + movw r20,r24 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,17 + andi r19,17 + andi r20,17 + andi r21,17 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Y+9,r26 + std Y+10,r27 + std Y+11,r24 + std Y+12,r25 + ld r26,Z + ldd r27,Z+1 + ldd r24,Z+2 + ldd r25,Z+3 + mov r0,r25 + mov r25,r26 + mov r26,r0 + movw r18,r26 + movw r20,r24 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + andi r18,51 + andi r19,51 + eor r26,r18 + eor r27,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,85 + mov r19,r1 + andi r20,85 + mov r21,r1 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + ldi r30,lo8(table_1) + ldi r31,hi8(table_1) +#if defined(RAMPZ) + ldi r17,hh8(table_1) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r17 +#endif + ldi r16,40 +934: + ldd r0,Y+9 + eor r8,r0 + ldd r0,Y+10 + eor r9,r0 + ldd r0,Y+11 + eor r10,r0 + ldd r0,Y+12 + eor r11,r0 + std Y+13,r26 + std Y+14,r27 + std Y+15,r24 + std Y+16,r25 + ldd r26,Y+1 + ldd r27,Y+2 + ldd r24,Y+3 + ldd r25,Y+4 + mov r0,r1 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + or r27,r0 + lsl r24 + rol r25 + adc r24,r1 + lsl r24 + rol r25 + adc r24,r1 + rcall 1086f + ldd r0,Y+13 + eor r8,r0 + ldd r0,Y+14 + eor r9,r0 + ldd r0,Y+15 + eor r10,r0 + ldd r0,Y+16 + eor r11,r0 + std Y+1,r26 + std Y+2,r27 + std Y+3,r24 + std Y+4,r25 + ldd r26,Y+5 + ldd r27,Y+6 + ldd r24,Y+7 + ldd r25,Y+8 + mov r0,r1 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + or r27,r0 + lsl r24 + rol r25 + adc r24,r1 + lsl r24 + rol r25 + adc r24,r1 + rcall 1086f + ldd r0,Y+1 + eor r8,r0 + ldd r0,Y+2 + eor r9,r0 + ldd r0,Y+3 + eor r10,r0 + ldd r0,Y+4 + eor r11,r0 + std Y+5,r26 + std Y+6,r27 + std Y+7,r24 + std Y+8,r25 + ldd r26,Y+9 + ldd r27,Y+10 + ldd r24,Y+11 + ldd r25,Y+12 + mov r0,r1 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + or r27,r0 + lsl r24 + rol r25 + adc r24,r1 + lsl r24 + rol r25 + adc r24,r1 + rcall 1086f + ldd r0,Y+5 + eor r8,r0 + ldd r0,Y+6 + eor r9,r0 + ldd r0,Y+7 + eor r10,r0 + ldd r0,Y+8 + eor r11,r0 + std Y+9,r26 + std Y+10,r27 + std Y+11,r24 + std Y+12,r25 + ldd r26,Y+13 + ldd r27,Y+14 + ldd r24,Y+15 + ldd r25,Y+16 + mov r0,r1 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + or r27,r0 + lsl r24 + rol r25 + adc r24,r1 + lsl r24 + rol r25 + adc r24,r1 + rcall 1086f + cpse r16,r1 + rjmp 934b + rjmp 1431f +1086: + eor r4,r26 + eor r5,r27 + eor r6,r24 + eor r7,r25 + ldi r18,128 + eor r15,r18 + dec r16 + mov r30,r16 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + eor r12,r18 + bst r22,1 + bld r0,0 + bst r3,0 + bld r22,1 + bst r22,6 + bld r3,0 + bst r2,1 + bld r22,6 + bst r3,4 + bld r2,1 + bst r22,7 + bld r3,4 + bst r23,1 + bld r22,7 + bst r3,2 + bld r23,1 + bst r2,6 + bld r3,2 + bst r2,5 + bld r2,6 + bst r3,5 + bld r2,5 + bst r3,7 + bld r3,5 + bst r23,7 + bld r3,7 + bst r23,3 + bld r23,7 + bst r23,2 + bld r23,3 + bst r2,2 + bld r23,2 + bst r2,4 + bld r2,2 + bst r22,5 + bld r2,4 + bst r3,1 + bld r22,5 + bst r3,6 + bld r3,1 + bst r2,7 + bld r3,6 + bst r23,5 + bld r2,7 + bst r3,3 + bld r23,5 + bst r23,6 + bld r3,3 + bst r2,3 + bld r23,6 + bst r23,4 + bld r2,3 + bst r22,3 + bld r23,4 + bst r23,0 + bld r22,3 + bst r22,2 + bld r23,0 + bst r2,0 + bld r22,2 + bst r22,4 + bld r2,0 + bst r0,0 + bld r22,4 + bst r4,0 + bld r0,0 + bst r5,0 + bld r4,0 + bst r5,2 + bld r5,0 + bst r7,2 + bld r5,2 + bst r7,6 + bld r7,2 + bst r7,7 + bld r7,6 + bst r6,7 + bld r7,7 + bst r6,5 + bld r6,7 + bst r4,5 + bld r6,5 + bst r4,1 + bld r4,5 + bst r0,0 + bld r4,1 + bst r4,2 + bld r0,0 + bst r7,0 + bld r4,2 + bst r5,6 + bld r7,0 + bst r7,3 + bld r5,6 + bst r6,6 + bld r7,3 + bst r7,5 + bld r6,6 + bst r4,7 + bld r7,5 + bst r6,1 + bld r4,7 + bst r4,4 + bld r6,1 + bst r5,1 + bld r4,4 + bst r0,0 + bld r5,1 + bst r4,3 + bld r0,0 + bst r6,0 + bld r4,3 + bst r5,4 + bld r6,0 + bst r5,3 + bld r5,4 + bst r6,2 + bld r5,3 + bst r7,4 + bld r6,2 + bst r5,7 + bld r7,4 + bst r6,3 + bld r5,7 + bst r6,4 + bld r6,3 + bst r5,5 + bld r6,4 + bst r0,0 + bld r5,5 + bst r4,6 + bld r0,0 + bst r7,1 + bld r4,6 + bst r0,0 + bld r7,1 + bst r8,0 + bld r0,0 + bst r10,0 + bld r8,0 + bst r10,4 + bld r10,0 + bst r10,5 + bld r10,4 + bst r9,5 + bld r10,5 + bst r9,3 + bld r9,5 + bst r11,2 + bld r9,3 + bst r8,6 + bld r11,2 + bst r8,1 + bld r8,6 + bst r9,0 + bld r8,1 + bst r10,2 + bld r9,0 + bst r8,4 + bld r10,2 + bst r10,1 + bld r8,4 + bst r9,4 + bld r10,1 + bst r10,3 + bld r9,4 + bst r11,4 + bld r10,3 + bst r10,7 + bld r11,4 + bst r11,5 + bld r10,7 + bst r9,7 + bld r11,5 + bst r11,3 + bld r9,7 + bst r11,6 + bld r11,3 + bst r8,7 + bld r11,6 + bst r11,1 + bld r8,7 + bst r9,6 + bld r11,1 + bst r8,3 + bld r9,6 + bst r11,0 + bld r8,3 + bst r10,6 + bld r11,0 + bst r8,5 + bld r10,6 + bst r9,1 + bld r8,5 + bst r9,2 + bld r9,1 + bst r8,2 + bld r9,2 + bst r0,0 + bld r8,2 + bst r12,0 + bld r0,0 + bst r15,0 + bld r12,0 + bst r15,6 + bld r15,0 + bst r13,7 + bld r15,6 + bst r12,3 + bld r13,7 + bst r0,0 + bld r12,3 + bst r12,1 + bld r0,0 + bst r14,0 + bld r12,1 + bst r15,4 + bld r14,0 + bst r15,7 + bld r15,4 + bst r12,7 + bld r15,7 + bst r0,0 + bld r12,7 + bst r12,2 + bld r0,0 + bst r13,0 + bld r12,2 + bst r15,2 + bld r13,0 + bst r13,6 + bld r15,2 + bst r13,3 + bld r13,6 + bst r0,0 + bld r13,3 + bst r12,4 + bld r0,0 + bst r15,1 + bld r12,4 + bst r14,6 + bld r15,1 + bst r13,5 + bld r14,6 + bst r14,3 + bld r13,5 + bst r0,0 + bld r14,3 + bst r12,5 + bld r0,0 + bst r14,1 + bld r12,5 + bst r14,4 + bld r14,1 + bst r15,5 + bld r14,4 + bst r14,7 + bld r15,5 + bst r0,0 + bld r14,7 + bst r12,6 + bld r0,0 + bst r13,1 + bld r12,6 + bst r14,2 + bld r13,1 + bst r13,4 + bld r14,2 + bst r15,3 + bld r13,4 + bst r0,0 + bld r15,3 + movw r18,r12 + movw r20,r14 + movw r12,r22 + movw r14,r2 + movw r22,r18 + movw r2,r20 + and r18,r4 + and r19,r5 + and r20,r6 + and r21,r7 + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + com r12 + com r13 + com r14 + com r15 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + ret +1431: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + ldd r26,Y+17 + ldd r27,Y+18 + bst r22,0 + bld r18,0 + bst r4,0 + bld r18,1 + bst r8,0 + bld r18,2 + bst r12,0 + bld r18,3 + bst r22,1 + bld r18,4 + bst r4,1 + bld r18,5 + bst r8,1 + bld r18,6 + bst r12,1 + bld r18,7 + bst r22,2 + bld r19,0 + bst r4,2 + bld r19,1 + bst r8,2 + bld r19,2 + bst r12,2 + bld r19,3 + bst r22,3 + bld r19,4 + bst r4,3 + bld r19,5 + bst r8,3 + bld r19,6 + bst r12,3 + bld r19,7 + bst r22,4 + bld r20,0 + bst r4,4 + bld r20,1 + bst r8,4 + bld r20,2 + bst r12,4 + bld r20,3 + bst r22,5 + bld r20,4 + bst r4,5 + bld r20,5 + bst r8,5 + bld r20,6 + bst r12,5 + bld r20,7 + bst r22,6 + bld r21,0 + bst r4,6 + bld r21,1 + bst r8,6 + bld r21,2 + bst r12,6 + bld r21,3 + bst r22,7 + bld r21,4 + bst r4,7 + bld r21,5 + bst r8,7 + bld r21,6 + bst r12,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r23,0 + bld r18,0 + bst r5,0 + bld r18,1 + bst r9,0 + bld r18,2 + bst r13,0 + bld r18,3 + bst r23,1 + bld r18,4 + bst r5,1 + bld r18,5 + bst r9,1 + bld r18,6 + bst r13,1 + bld r18,7 + bst r23,2 + bld r19,0 + bst r5,2 + bld r19,1 + bst r9,2 + bld r19,2 + bst r13,2 + bld r19,3 + bst r23,3 + bld r19,4 + bst r5,3 + bld r19,5 + bst r9,3 + bld r19,6 + bst r13,3 + bld r19,7 + bst r23,4 + bld r20,0 + bst r5,4 + bld r20,1 + bst r9,4 + bld r20,2 + bst r13,4 + bld r20,3 + bst r23,5 + bld r20,4 + bst r5,5 + bld r20,5 + bst r9,5 + bld r20,6 + bst r13,5 + bld r20,7 + bst r23,6 + bld r21,0 + bst r5,6 + bld r21,1 + bst r9,6 + bld r21,2 + bst r13,6 + bld r21,3 + bst r23,7 + bld r21,4 + bst r5,7 + bld r21,5 + bst r9,7 + bld r21,6 + bst r13,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r2,0 + bld r18,0 + bst r6,0 + bld r18,1 + bst r10,0 + bld r18,2 + bst r14,0 + bld r18,3 + bst r2,1 + bld r18,4 + bst r6,1 + bld r18,5 + bst r10,1 + bld r18,6 + bst r14,1 + bld r18,7 + bst r2,2 + bld r19,0 + bst r6,2 + bld r19,1 + bst r10,2 + bld r19,2 + bst r14,2 + bld r19,3 + bst r2,3 + bld r19,4 + bst r6,3 + bld r19,5 + bst r10,3 + bld r19,6 + bst r14,3 + bld r19,7 + bst r2,4 + bld r20,0 + bst r6,4 + bld r20,1 + bst r10,4 + bld r20,2 + bst r14,4 + bld r20,3 + bst r2,5 + bld r20,4 + bst r6,5 + bld r20,5 + bst r10,5 + bld r20,6 + bst r14,5 + bld r20,7 + bst r2,6 + bld r21,0 + bst r6,6 + bld r21,1 + bst r10,6 + bld r21,2 + bst r14,6 + bld r21,3 + bst r2,7 + bld r21,4 + bst r6,7 + bld r21,5 + bst r10,7 + bld r21,6 + bst r14,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r3,0 + bld r18,0 + bst r7,0 + bld r18,1 + bst r11,0 + bld r18,2 + bst r15,0 + bld r18,3 + bst r3,1 + bld r18,4 + bst r7,1 + bld r18,5 + bst r11,1 + bld r18,6 + bst r15,1 + bld r18,7 + bst r3,2 + bld r19,0 + bst r7,2 + bld r19,1 + bst r11,2 + bld r19,2 + bst r15,2 + bld r19,3 + bst r3,3 + bld r19,4 + bst r7,3 + bld r19,5 + bst r11,3 + bld r19,6 + bst r15,3 + bld r19,7 + bst r3,4 + bld r20,0 + bst r7,4 + bld r20,1 + bst r11,4 + bld r20,2 + bst r15,4 + bld r20,3 + bst r3,5 + bld r20,4 + bst r7,5 + bld r20,5 + bst r11,5 + bld r20,6 + bst r15,5 + bld r20,7 + bst r3,6 + bld r21,0 + bst r7,6 + bld r21,1 + bst r11,6 + bld r21,2 + bst r15,6 + bld r21,3 + bst r3,7 + bld r21,4 + bst r7,7 + bld r21,5 + bst r11,7 + bld r21,6 + bst r15,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + adiw r28,18 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128n_decrypt, .-gift128n_decrypt + + .text +.global gift128t_encrypt + .type gift128t_encrypt, @function +gift128t_encrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e + subi r28,80 + sbci r29,0 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 100 + ldi r19,20 +1: + ld r2,Z+ + ld r3,Z+ + ld r4,Z+ + ld r5,Z+ + std Y+1,r2 + std Y+2,r3 + std Y+3,r4 + std Y+4,r5 + adiw r28,4 + dec r19 + brne 1b + subi r28,80 + sbc r29,r1 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r2,0 + bst r20,1 + bld r6,0 + bst r20,2 + bld r10,0 + bst r20,3 + bld r14,0 + bst r20,4 + bld r2,1 + bst r20,5 + bld r6,1 + bst r20,6 + bld r10,1 + bst r20,7 + bld r14,1 + bst r21,0 + bld r2,2 + bst r21,1 + bld r6,2 + bst r21,2 + bld r10,2 + bst r21,3 + bld r14,2 + bst r21,4 + bld r2,3 + bst r21,5 + bld r6,3 + bst r21,6 + bld r10,3 + bst r21,7 + bld r14,3 + bst r22,0 + bld r2,4 + bst r22,1 + bld r6,4 + bst r22,2 + bld r10,4 + bst r22,3 + bld r14,4 + bst r22,4 + bld r2,5 + bst r22,5 + bld r6,5 + bst r22,6 + bld r10,5 + bst r22,7 + bld r14,5 + bst r23,0 + bld r2,6 + bst r23,1 + bld r6,6 + bst r23,2 + bld r10,6 + bst r23,3 + bld r14,6 + bst r23,4 + bld r2,7 + bst r23,5 + bld r6,7 + bst r23,6 + bld r10,7 + bst r23,7 + bld r14,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r3,0 + bst r20,1 + bld r7,0 + bst r20,2 + bld r11,0 + bst r20,3 + bld r15,0 + bst r20,4 + bld r3,1 + bst r20,5 + bld r7,1 + bst r20,6 + bld r11,1 + bst r20,7 + bld r15,1 + bst r21,0 + bld r3,2 + bst r21,1 + bld r7,2 + bst r21,2 + bld r11,2 + bst r21,3 + bld r15,2 + bst r21,4 + bld r3,3 + bst r21,5 + bld r7,3 + bst r21,6 + bld r11,3 + bst r21,7 + bld r15,3 + bst r22,0 + bld r3,4 + bst r22,1 + bld r7,4 + bst r22,2 + bld r11,4 + bst r22,3 + bld r15,4 + bst r22,4 + bld r3,5 + bst r22,5 + bld r7,5 + bst r22,6 + bld r11,5 + bst r22,7 + bld r15,5 + bst r23,0 + bld r3,6 + bst r23,1 + bld r7,6 + bst r23,2 + bld r11,6 + bst r23,3 + bld r15,6 + bst r23,4 + bld r3,7 + bst r23,5 + bld r7,7 + bst r23,6 + bld r11,7 + bst r23,7 + bld r15,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r4,0 + bst r20,1 + bld r8,0 + bst r20,2 + bld r12,0 + bst r20,3 + bld r24,0 + bst r20,4 + bld r4,1 + bst r20,5 + bld r8,1 + bst r20,6 + bld r12,1 + bst r20,7 + bld r24,1 + bst r21,0 + bld r4,2 + bst r21,1 + bld r8,2 + bst r21,2 + bld r12,2 + bst r21,3 + bld r24,2 + bst r21,4 + bld r4,3 + bst r21,5 + bld r8,3 + bst r21,6 + bld r12,3 + bst r21,7 + bld r24,3 + bst r22,0 + bld r4,4 + bst r22,1 + bld r8,4 + bst r22,2 + bld r12,4 + bst r22,3 + bld r24,4 + bst r22,4 + bld r4,5 + bst r22,5 + bld r8,5 + bst r22,6 + bld r12,5 + bst r22,7 + bld r24,5 + bst r23,0 + bld r4,6 + bst r23,1 + bld r8,6 + bst r23,2 + bld r12,6 + bst r23,3 + bld r24,6 + bst r23,4 + bld r4,7 + bst r23,5 + bld r8,7 + bst r23,6 + bld r12,7 + bst r23,7 + bld r24,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r5,0 + bst r20,1 + bld r9,0 + bst r20,2 + bld r13,0 + bst r20,3 + bld r25,0 + bst r20,4 + bld r5,1 + bst r20,5 + bld r9,1 + bst r20,6 + bld r13,1 + bst r20,7 + bld r25,1 + bst r21,0 + bld r5,2 + bst r21,1 + bld r9,2 + bst r21,2 + bld r13,2 + bst r21,3 + bld r25,2 + bst r21,4 + bld r5,3 + bst r21,5 + bld r9,3 + bst r21,6 + bld r13,3 + bst r21,7 + bld r25,3 + bst r22,0 + bld r5,4 + bst r22,1 + bld r9,4 + bst r22,2 + bld r13,4 + bst r22,3 + bld r25,4 + bst r22,4 + bld r5,5 + bst r22,5 + bld r9,5 + bst r22,6 + bld r13,5 + bst r22,7 + bld r25,5 + bst r23,0 + bld r5,6 + bst r23,1 + bld r9,6 + bst r23,2 + bld r13,6 + bst r23,3 + bld r25,6 + bst r23,4 + bld r5,7 + bst r23,5 + bld r9,7 + bst r23,6 + bld r13,7 + bst r23,7 + bld r25,7 + movw r26,r28 + adiw r26,1 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + rcall 357f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1095f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,20 + adiw r26,40 + rcall 357f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1095f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,40 + sbiw r26,40 + rcall 357f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1095f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,60 + adiw r26,40 + rcall 357f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1095f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,80 + sbiw r26,40 + rcall 357f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1095f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,100 + adiw r26,40 + rcall 357f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 1095f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,120 + sbiw r26,40 + rcall 357f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 357f + rjmp 1570f +357: + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + movw r20,r6 + movw r22,r8 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,204 + andi r21,204 + andi r22,204 + andi r23,204 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + ldi r19,51 + and r6,r19 + and r7,r19 + and r8,r19 + and r9,r19 + or r6,r20 + or r7,r21 + or r8,r22 + or r9,r23 + movw r20,r10 + movw r22,r12 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,238 + andi r21,238 + andi r22,238 + andi r23,238 + lsr r13 + ror r12 + ror r11 + ror r10 + lsr r13 + ror r12 + ror r11 + ror r10 + lsr r13 + ror r12 + ror r11 + ror r10 + ldi r17,17 + and r10,r17 + and r11,r17 + and r12,r17 + and r13,r17 + or r10,r20 + or r11,r21 + or r12,r22 + or r13,r23 + movw r20,r14 + movw r22,r24 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,136 + andi r21,136 + andi r22,136 + andi r23,136 + lsr r25 + ror r24 + ror r15 + ror r14 + ldi r16,119 + and r14,r16 + and r15,r16 + andi r24,119 + andi r25,119 + or r14,r20 + or r15,r21 + or r24,r22 + or r25,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r24 + and r0,r12 + eor r8,r0 + mov r0,r25 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r8 + and r0,r4 + eor r24,r0 + mov r0,r9 + and r0,r5 + eor r25,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r24 + or r0,r8 + eor r12,r0 + mov r0,r25 + or r0,r9 + eor r13,r0 + eor r2,r10 + eor r3,r11 + eor r4,r12 + eor r5,r13 + eor r6,r2 + eor r7,r3 + eor r8,r4 + eor r9,r5 + com r2 + com r3 + com r4 + com r5 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r24 + and r0,r8 + eor r12,r0 + mov r0,r25 + and r0,r9 + eor r13,r0 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + mov r0,r1 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + or r5,r0 + mov r0,r7 + mov r7,r6 + mov r6,r0 + mov r0,r9 + mov r9,r8 + mov r8,r0 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r14,r20 + eor r15,r21 + eor r24,r22 + eor r25,r23 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + movw r20,r6 + movw r22,r8 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r6 + eor r21,r7 + eor r22,r8 + eor r23,r9 + andi r20,85 + andi r21,85 + andi r22,85 + andi r23,85 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + mov r0,r12 + mov r12,r10 + mov r10,r0 + mov r0,r13 + mov r13,r11 + mov r11,r0 + movw r20,r10 + movw r22,r12 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r10 + eor r21,r11 + andi r20,85 + andi r21,85 + eor r10,r20 + eor r11,r21 + mov r22,r1 + mov r23,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + mov r0,r24 + mov r24,r14 + mov r14,r0 + mov r0,r25 + mov r25,r15 + mov r15,r0 + movw r20,r24 + lsr r21 + ror r20 + eor r20,r24 + eor r21,r25 + andi r20,85 + andi r21,85 + eor r24,r20 + eor r25,r21 + lsl r20 + rol r21 + eor r24,r20 + eor r25,r21 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r24 + and r0,r12 + eor r8,r0 + mov r0,r25 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r8 + and r0,r4 + eor r24,r0 + mov r0,r9 + and r0,r5 + eor r25,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r24 + or r0,r8 + eor r12,r0 + mov r0,r25 + or r0,r9 + eor r13,r0 + eor r2,r10 + eor r3,r11 + eor r4,r12 + eor r5,r13 + eor r6,r2 + eor r7,r3 + eor r8,r4 + eor r9,r5 + com r2 + com r3 + com r4 + com r5 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r24 + and r0,r8 + eor r12,r0 + mov r0,r25 + and r0,r9 + eor r13,r0 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + lsl r4 + adc r4,r1 + lsl r4 + adc r4,r1 + lsl r5 + adc r5,r1 + lsl r5 + adc r5,r1 + swap r6 + swap r7 + swap r8 + swap r9 + mov r0,r1 + lsr r10 + ror r0 + lsr r10 + ror r0 + or r10,r0 + mov r0,r1 + lsr r11 + ror r0 + lsr r11 + ror r0 + or r11,r0 + mov r0,r1 + lsr r12 + ror r0 + lsr r12 + ror r0 + or r12,r0 + mov r0,r1 + lsr r13 + ror r0 + lsr r13 + ror r0 + or r13,r0 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r14,r20 + eor r15,r21 + eor r24,r22 + eor r25,r23 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + mov r0,r8 + mov r8,r6 + mov r6,r0 + mov r0,r9 + mov r9,r7 + mov r7,r0 + mov r0,r10 + mov r10,r11 + mov r11,r12 + mov r12,r13 + mov r13,r0 + mov r0,r25 + mov r25,r24 + mov r24,r15 + mov r15,r14 + mov r14,r0 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + eor r2,r14 + eor r3,r15 + eor r4,r24 + eor r5,r25 + eor r14,r2 + eor r15,r3 + eor r24,r4 + eor r25,r5 + eor r2,r14 + eor r3,r15 + eor r4,r24 + eor r5,r25 + ret +1095: + movw r30,r26 + sbiw r30,40 + push r5 + push r4 + push r3 + push r2 + push r9 + push r8 + push r7 + push r6 + ld r2,Z + ldd r3,Z+1 + ldd r4,Z+2 + ldd r5,Z+3 + ldd r26,Z+4 + ldd r27,Z+5 + ldd r16,Z+6 + ldd r17,Z+7 + movw r20,r26 + movw r22,r16 + movw r20,r22 + mov r22,r1 + mov r23,r1 + eor r20,r26 + eor r21,r27 + andi r20,51 + andi r21,51 + eor r26,r20 + eor r27,r21 + mov r22,r1 + mov r23,r1 + movw r22,r20 + mov r20,r1 + mov r21,r1 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,68 + andi r21,68 + andi r22,85 + andi r23,85 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + st Z,r26 + std Z+1,r27 + std Z+2,r16 + std Z+3,r17 + movw r20,r2 + movw r22,r4 + andi r20,51 + andi r21,51 + andi r22,51 + andi r23,51 + ldi r19,204 + and r2,r19 + and r3,r19 + and r4,r19 + and r5,r19 + or r4,r23 + or r5,r20 + or r2,r21 + or r3,r22 + movw r20,r4 + movw r22,r2 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r4 + eor r21,r5 + eor r22,r2 + eor r23,r3 + mov r20,r1 + andi r21,17 + andi r22,85 + andi r23,85 + eor r4,r20 + eor r5,r21 + eor r2,r22 + eor r3,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r4,r20 + eor r5,r21 + eor r2,r22 + eor r3,r23 + std Z+4,r4 + std Z+5,r5 + std Z+6,r2 + std Z+7,r3 + ldd r2,Z+8 + ldd r3,Z+9 + ldd r4,Z+10 + ldd r5,Z+11 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r16,Z+14 + ldd r17,Z+15 + lsl r26 + adc r26,r1 + lsl r26 + adc r26,r1 + swap r27 + lsl r16 + adc r16,r1 + lsl r16 + adc r16,r1 + swap r17 + std Z+8,r26 + std Z+9,r27 + std Z+10,r16 + std Z+11,r17 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + lsl r4 + adc r4,r1 + lsl r4 + adc r4,r1 + lsl r4 + adc r4,r1 + lsl r5 + adc r5,r1 + lsl r5 + adc r5,r1 + std Z+12,r2 + std Z+13,r3 + std Z+14,r4 + std Z+15,r5 + ldd r2,Z+16 + ldd r3,Z+17 + ldd r4,Z+18 + ldd r5,Z+19 + ldd r26,Z+20 + ldd r27,Z+21 + ldd r16,Z+22 + ldd r17,Z+23 + movw r20,r26 + movw r22,r16 + andi r20,170 + andi r21,170 + andi r22,170 + andi r23,170 + andi r26,85 + andi r27,85 + andi r16,85 + andi r17,85 + or r26,r21 + or r27,r22 + or r16,r23 + or r17,r20 + std Z+16,r16 + std Z+17,r17 + std Z+18,r26 + std Z+19,r27 + movw r20,r2 + movw r22,r4 + andi r20,85 + andi r21,85 + andi r22,85 + andi r23,85 + ldi r19,170 + and r2,r19 + and r3,r19 + and r4,r19 + and r5,r19 + lsl r2 + rol r3 + rol r4 + rol r5 + adc r2,r1 + lsl r2 + rol r3 + rol r4 + rol r5 + adc r2,r1 + lsl r2 + rol r3 + rol r4 + rol r5 + adc r2,r1 + lsl r2 + rol r3 + rol r4 + rol r5 + adc r2,r1 + or r2,r20 + or r3,r21 + or r4,r22 + or r5,r23 + std Z+20,r5 + std Z+21,r2 + std Z+22,r3 + std Z+23,r4 + ldd r2,Z+24 + ldd r3,Z+25 + ldd r4,Z+26 + ldd r5,Z+27 + ldd r26,Z+28 + ldd r27,Z+29 + ldd r16,Z+30 + ldd r17,Z+31 + movw r20,r26 + movw r22,r16 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,3 + andi r21,3 + andi r22,3 + andi r23,3 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + lsr r23 + ror r22 + ror r21 + ror r20 + andi r20,120 + andi r21,120 + andi r22,120 + andi r23,120 + movw r6,r20 + movw r8,r22 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ldi r19,8 + and r6,r19 + and r7,r19 + and r8,r19 + and r9,r19 + eor r20,r6 + eor r21,r7 + eor r22,r8 + eor r23,r9 + lsl r6 + rol r7 + rol r8 + rol r9 + lsl r6 + rol r7 + rol r8 + rol r9 + lsl r6 + rol r7 + rol r8 + rol r9 + lsl r6 + rol r7 + rol r8 + rol r9 + eor r20,r6 + eor r21,r7 + eor r22,r8 + eor r23,r9 + andi r26,15 + andi r27,15 + andi r16,15 + andi r17,15 + or r26,r20 + or r27,r21 + or r16,r22 + or r17,r23 + std Z+24,r26 + std Z+25,r27 + std Z+26,r16 + std Z+27,r17 + movw r20,r4 + lsr r21 + ror r20 + lsr r21 + ror r20 + andi r20,48 + andi r21,48 + movw r26,r2 + movw r16,r4 + andi r26,1 + andi r27,1 + andi r16,1 + andi r17,1 + lsl r26 + rol r27 + rol r16 + rol r17 + lsl r26 + rol r27 + rol r16 + rol r17 + lsl r26 + rol r27 + rol r16 + rol r17 + or r26,r20 + or r27,r21 + movw r20,r4 + lsl r20 + rol r21 + lsl r20 + rol r21 + andi r20,192 + andi r21,192 + or r26,r20 + or r27,r21 + movw r20,r2 + andi r20,224 + andi r21,224 + lsr r21 + ror r20 + or r16,r20 + or r17,r21 + movw r20,r2 + movw r22,r4 + lsr r23 + ror r22 + ror r21 + ror r20 + andi r20,7 + andi r21,7 + andi r22,7 + andi r23,7 + or r26,r20 + or r27,r21 + or r16,r22 + or r17,r23 + ldi r19,16 + and r2,r19 + and r3,r19 + lsl r2 + rol r3 + lsl r2 + rol r3 + lsl r2 + rol r3 + or r16,r2 + or r17,r3 + std Z+28,r26 + std Z+29,r27 + std Z+30,r16 + std Z+31,r17 + ldd r2,Z+32 + ldd r3,Z+33 + ldd r4,Z+34 + ldd r5,Z+35 + ldd r26,Z+36 + ldd r27,Z+37 + ldd r16,Z+38 + ldd r17,Z+39 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Z+32,r27 + std Z+33,r26 + std Z+34,r16 + std Z+35,r17 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + mov r0,r4 + mov r4,r5 + mov r5,r0 + lsl r4 + rol r5 + adc r4,r1 + lsl r4 + rol r5 + adc r4,r1 + std Z+36,r2 + std Z+37,r3 + std Z+38,r4 + std Z+39,r5 + pop r6 + pop r7 + pop r8 + pop r9 + pop r2 + pop r3 + pop r4 + pop r5 + movw r26,r30 + ret +1570: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + subi r28,175 + sbci r29,255 + ld r26,Y+ + ld r27,Y + subi r28,82 + sbc r29,r1 + bst r2,0 + bld r20,0 + bst r6,0 + bld r20,1 + bst r10,0 + bld r20,2 + bst r14,0 + bld r20,3 + bst r2,1 + bld r20,4 + bst r6,1 + bld r20,5 + bst r10,1 + bld r20,6 + bst r14,1 + bld r20,7 + bst r2,2 + bld r21,0 + bst r6,2 + bld r21,1 + bst r10,2 + bld r21,2 + bst r14,2 + bld r21,3 + bst r2,3 + bld r21,4 + bst r6,3 + bld r21,5 + bst r10,3 + bld r21,6 + bst r14,3 + bld r21,7 + bst r2,4 + bld r22,0 + bst r6,4 + bld r22,1 + bst r10,4 + bld r22,2 + bst r14,4 + bld r22,3 + bst r2,5 + bld r22,4 + bst r6,5 + bld r22,5 + bst r10,5 + bld r22,6 + bst r14,5 + bld r22,7 + bst r2,6 + bld r23,0 + bst r6,6 + bld r23,1 + bst r10,6 + bld r23,2 + bst r14,6 + bld r23,3 + bst r2,7 + bld r23,4 + bst r6,7 + bld r23,5 + bst r10,7 + bld r23,6 + bst r14,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r3,0 + bld r20,0 + bst r7,0 + bld r20,1 + bst r11,0 + bld r20,2 + bst r15,0 + bld r20,3 + bst r3,1 + bld r20,4 + bst r7,1 + bld r20,5 + bst r11,1 + bld r20,6 + bst r15,1 + bld r20,7 + bst r3,2 + bld r21,0 + bst r7,2 + bld r21,1 + bst r11,2 + bld r21,2 + bst r15,2 + bld r21,3 + bst r3,3 + bld r21,4 + bst r7,3 + bld r21,5 + bst r11,3 + bld r21,6 + bst r15,3 + bld r21,7 + bst r3,4 + bld r22,0 + bst r7,4 + bld r22,1 + bst r11,4 + bld r22,2 + bst r15,4 + bld r22,3 + bst r3,5 + bld r22,4 + bst r7,5 + bld r22,5 + bst r11,5 + bld r22,6 + bst r15,5 + bld r22,7 + bst r3,6 + bld r23,0 + bst r7,6 + bld r23,1 + bst r11,6 + bld r23,2 + bst r15,6 + bld r23,3 + bst r3,7 + bld r23,4 + bst r7,7 + bld r23,5 + bst r11,7 + bld r23,6 + bst r15,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r4,0 + bld r20,0 + bst r8,0 + bld r20,1 + bst r12,0 + bld r20,2 + bst r24,0 + bld r20,3 + bst r4,1 + bld r20,4 + bst r8,1 + bld r20,5 + bst r12,1 + bld r20,6 + bst r24,1 + bld r20,7 + bst r4,2 + bld r21,0 + bst r8,2 + bld r21,1 + bst r12,2 + bld r21,2 + bst r24,2 + bld r21,3 + bst r4,3 + bld r21,4 + bst r8,3 + bld r21,5 + bst r12,3 + bld r21,6 + bst r24,3 + bld r21,7 + bst r4,4 + bld r22,0 + bst r8,4 + bld r22,1 + bst r12,4 + bld r22,2 + bst r24,4 + bld r22,3 + bst r4,5 + bld r22,4 + bst r8,5 + bld r22,5 + bst r12,5 + bld r22,6 + bst r24,5 + bld r22,7 + bst r4,6 + bld r23,0 + bst r8,6 + bld r23,1 + bst r12,6 + bld r23,2 + bst r24,6 + bld r23,3 + bst r4,7 + bld r23,4 + bst r8,7 + bld r23,5 + bst r12,7 + bld r23,6 + bst r24,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r5,0 + bld r20,0 + bst r9,0 + bld r20,1 + bst r13,0 + bld r20,2 + bst r25,0 + bld r20,3 + bst r5,1 + bld r20,4 + bst r9,1 + bld r20,5 + bst r13,1 + bld r20,6 + bst r25,1 + bld r20,7 + bst r5,2 + bld r21,0 + bst r9,2 + bld r21,1 + bst r13,2 + bld r21,2 + bst r25,2 + bld r21,3 + bst r5,3 + bld r21,4 + bst r9,3 + bld r21,5 + bst r13,3 + bld r21,6 + bst r25,3 + bld r21,7 + bst r5,4 + bld r22,0 + bst r9,4 + bld r22,1 + bst r13,4 + bld r22,2 + bst r25,4 + bld r22,3 + bst r5,5 + bld r22,4 + bst r9,5 + bld r22,5 + bst r13,5 + bld r22,6 + bst r25,5 + bld r22,7 + bst r5,6 + bld r23,0 + bst r9,6 + bld r23,1 + bst r13,6 + bld r23,2 + bst r25,6 + bld r23,3 + bst r5,7 + bld r23,4 + bst r9,7 + bld r23,5 + bst r13,7 + bld r23,6 + bst r25,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + subi r28,174 + sbci r29,255 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128t_encrypt, .-gift128t_encrypt + + .text +.global gift128t_decrypt + .type gift128t_decrypt, @function +gift128t_decrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e + sbiw r28,16 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 36 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r2,0 + bst r20,1 + bld r6,0 + bst r20,2 + bld r10,0 + bst r20,3 + bld r14,0 + bst r20,4 + bld r2,1 + bst r20,5 + bld r6,1 + bst r20,6 + bld r10,1 + bst r20,7 + bld r14,1 + bst r21,0 + bld r2,2 + bst r21,1 + bld r6,2 + bst r21,2 + bld r10,2 + bst r21,3 + bld r14,2 + bst r21,4 + bld r2,3 + bst r21,5 + bld r6,3 + bst r21,6 + bld r10,3 + bst r21,7 + bld r14,3 + bst r22,0 + bld r2,4 + bst r22,1 + bld r6,4 + bst r22,2 + bld r10,4 + bst r22,3 + bld r14,4 + bst r22,4 + bld r2,5 + bst r22,5 + bld r6,5 + bst r22,6 + bld r10,5 + bst r22,7 + bld r14,5 + bst r23,0 + bld r2,6 + bst r23,1 + bld r6,6 + bst r23,2 + bld r10,6 + bst r23,3 + bld r14,6 + bst r23,4 + bld r2,7 + bst r23,5 + bld r6,7 + bst r23,6 + bld r10,7 + bst r23,7 + bld r14,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r3,0 + bst r20,1 + bld r7,0 + bst r20,2 + bld r11,0 + bst r20,3 + bld r15,0 + bst r20,4 + bld r3,1 + bst r20,5 + bld r7,1 + bst r20,6 + bld r11,1 + bst r20,7 + bld r15,1 + bst r21,0 + bld r3,2 + bst r21,1 + bld r7,2 + bst r21,2 + bld r11,2 + bst r21,3 + bld r15,2 + bst r21,4 + bld r3,3 + bst r21,5 + bld r7,3 + bst r21,6 + bld r11,3 + bst r21,7 + bld r15,3 + bst r22,0 + bld r3,4 + bst r22,1 + bld r7,4 + bst r22,2 + bld r11,4 + bst r22,3 + bld r15,4 + bst r22,4 + bld r3,5 + bst r22,5 + bld r7,5 + bst r22,6 + bld r11,5 + bst r22,7 + bld r15,5 + bst r23,0 + bld r3,6 + bst r23,1 + bld r7,6 + bst r23,2 + bld r11,6 + bst r23,3 + bld r15,6 + bst r23,4 + bld r3,7 + bst r23,5 + bld r7,7 + bst r23,6 + bld r11,7 + bst r23,7 + bld r15,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r4,0 + bst r20,1 + bld r8,0 + bst r20,2 + bld r12,0 + bst r20,3 + bld r24,0 + bst r20,4 + bld r4,1 + bst r20,5 + bld r8,1 + bst r20,6 + bld r12,1 + bst r20,7 + bld r24,1 + bst r21,0 + bld r4,2 + bst r21,1 + bld r8,2 + bst r21,2 + bld r12,2 + bst r21,3 + bld r24,2 + bst r21,4 + bld r4,3 + bst r21,5 + bld r8,3 + bst r21,6 + bld r12,3 + bst r21,7 + bld r24,3 + bst r22,0 + bld r4,4 + bst r22,1 + bld r8,4 + bst r22,2 + bld r12,4 + bst r22,3 + bld r24,4 + bst r22,4 + bld r4,5 + bst r22,5 + bld r8,5 + bst r22,6 + bld r12,5 + bst r22,7 + bld r24,5 + bst r23,0 + bld r4,6 + bst r23,1 + bld r8,6 + bst r23,2 + bld r12,6 + bst r23,3 + bld r24,6 + bst r23,4 + bld r4,7 + bst r23,5 + bld r8,7 + bst r23,6 + bld r12,7 + bst r23,7 + bld r24,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r5,0 + bst r20,1 + bld r9,0 + bst r20,2 + bld r13,0 + bst r20,3 + bld r25,0 + bst r20,4 + bld r5,1 + bst r20,5 + bld r9,1 + bst r20,6 + bld r13,1 + bst r20,7 + bld r25,1 + bst r21,0 + bld r5,2 + bst r21,1 + bld r9,2 + bst r21,2 + bld r13,2 + bst r21,3 + bld r25,2 + bst r21,4 + bld r5,3 + bst r21,5 + bld r9,3 + bst r21,6 + bld r13,3 + bst r21,7 + bld r25,3 + bst r22,0 + bld r5,4 + bst r22,1 + bld r9,4 + bst r22,2 + bld r13,4 + bst r22,3 + bld r25,4 + bst r22,4 + bld r5,5 + bst r22,5 + bld r9,5 + bst r22,6 + bld r13,5 + bst r22,7 + bld r25,5 + bst r23,0 + bld r5,6 + bst r23,1 + bld r9,6 + bst r23,2 + bld r13,6 + bst r23,3 + bld r25,6 + bst r23,4 + bld r5,7 + bst r23,5 + bld r9,7 + bst r23,6 + bld r13,7 + bst r23,7 + bld r25,7 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r16,Z+14 + ldd r17,Z+15 + mov r0,r17 + mov r17,r26 + mov r26,r0 + movw r20,r26 + movw r22,r16 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,15 + mov r21,r1 + andi r22,15 + mov r23,r1 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + mov r0,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r0 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,3 + andi r21,3 + andi r22,3 + andi r23,3 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r0,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r0 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,17 + andi r21,17 + andi r22,17 + andi r23,17 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Y+1,r26 + std Y+2,r27 + std Y+3,r16 + std Y+4,r17 + ldd r26,Z+4 + ldd r27,Z+5 + ldd r16,Z+6 + ldd r17,Z+7 + mov r0,r17 + mov r17,r26 + mov r26,r0 + movw r20,r26 + movw r22,r16 + movw r20,r22 + mov r22,r1 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + andi r20,51 + andi r21,51 + eor r26,r20 + eor r27,r21 + mov r22,r1 + mov r23,r1 + movw r22,r20 + mov r20,r1 + mov r21,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,15 + mov r21,r1 + andi r22,15 + mov r23,r1 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,85 + mov r21,r1 + andi r22,85 + mov r23,r1 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Y+5,r26 + std Y+6,r27 + std Y+7,r16 + std Y+8,r17 + ldd r26,Z+8 + ldd r27,Z+9 + ldd r16,Z+10 + ldd r17,Z+11 + mov r0,r17 + mov r17,r26 + mov r26,r0 + movw r20,r26 + movw r22,r16 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,15 + mov r21,r1 + andi r22,15 + mov r23,r1 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + mov r0,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r0 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,3 + andi r21,3 + andi r22,3 + andi r23,3 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r0,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r0 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,17 + andi r21,17 + andi r22,17 + andi r23,17 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Y+9,r26 + std Y+10,r27 + std Y+11,r16 + std Y+12,r17 + ld r26,Z + ldd r27,Z+1 + ldd r16,Z+2 + ldd r17,Z+3 + mov r0,r17 + mov r17,r26 + mov r26,r0 + movw r20,r26 + movw r22,r16 + movw r20,r22 + mov r22,r1 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + andi r20,51 + andi r21,51 + eor r26,r20 + eor r27,r21 + mov r22,r1 + mov r23,r1 + movw r22,r20 + mov r20,r1 + mov r21,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,15 + mov r21,r1 + andi r22,15 + mov r23,r1 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,85 + mov r21,r1 + andi r22,85 + mov r23,r1 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Y+13,r26 + std Y+14,r27 + std Y+15,r16 + std Y+16,r17 + ldi r30,lo8(table_1) + ldi r31,hi8(table_1) +#if defined(RAMPZ) + ldi r26,hh8(table_1) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r26 +#endif + ldi r19,40 + mov r26,r1 +939: + ldd r0,Y+13 + ldd r20,Y+9 + std Y+9,r0 + ldd r0,Y+5 + std Y+5,r20 + ldd r20,Y+1 + std Y+1,r0 + ldd r0,Y+14 + ldd r21,Y+10 + std Y+10,r0 + ldd r0,Y+6 + std Y+6,r21 + ldd r21,Y+2 + std Y+2,r0 + ldd r0,Y+15 + ldd r22,Y+11 + std Y+11,r0 + ldd r0,Y+7 + std Y+7,r22 + ldd r22,Y+3 + std Y+3,r0 + ldd r0,Y+16 + ldd r23,Y+12 + std Y+12,r0 + ldd r0,Y+8 + std Y+8,r23 + ldd r23,Y+4 + std Y+4,r0 + mov r0,r1 + lsr r21 + ror r20 + ror r0 + lsr r21 + ror r20 + ror r0 + lsr r21 + ror r20 + ror r0 + lsr r21 + ror r20 + ror r0 + or r21,r0 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + std Y+13,r20 + std Y+14,r21 + std Y+15,r22 + std Y+16,r23 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ldd r0,Y+5 + eor r10,r0 + ldd r0,Y+6 + eor r11,r0 + ldd r0,Y+7 + eor r12,r0 + ldd r0,Y+8 + eor r13,r0 + ldi r20,128 + eor r25,r20 + dec r19 + mov r30,r19 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + eor r14,r20 + bst r2,1 + bld r0,0 + bst r5,0 + bld r2,1 + bst r2,6 + bld r5,0 + bst r4,1 + bld r2,6 + bst r5,4 + bld r4,1 + bst r2,7 + bld r5,4 + bst r3,1 + bld r2,7 + bst r5,2 + bld r3,1 + bst r4,6 + bld r5,2 + bst r4,5 + bld r4,6 + bst r5,5 + bld r4,5 + bst r5,7 + bld r5,5 + bst r3,7 + bld r5,7 + bst r3,3 + bld r3,7 + bst r3,2 + bld r3,3 + bst r4,2 + bld r3,2 + bst r4,4 + bld r4,2 + bst r2,5 + bld r4,4 + bst r5,1 + bld r2,5 + bst r5,6 + bld r5,1 + bst r4,7 + bld r5,6 + bst r3,5 + bld r4,7 + bst r5,3 + bld r3,5 + bst r3,6 + bld r5,3 + bst r4,3 + bld r3,6 + bst r3,4 + bld r4,3 + bst r2,3 + bld r3,4 + bst r3,0 + bld r2,3 + bst r2,2 + bld r3,0 + bst r4,0 + bld r2,2 + bst r2,4 + bld r4,0 + bst r0,0 + bld r2,4 + bst r6,0 + bld r0,0 + bst r7,0 + bld r6,0 + bst r7,2 + bld r7,0 + bst r9,2 + bld r7,2 + bst r9,6 + bld r9,2 + bst r9,7 + bld r9,6 + bst r8,7 + bld r9,7 + bst r8,5 + bld r8,7 + bst r6,5 + bld r8,5 + bst r6,1 + bld r6,5 + bst r0,0 + bld r6,1 + bst r6,2 + bld r0,0 + bst r9,0 + bld r6,2 + bst r7,6 + bld r9,0 + bst r9,3 + bld r7,6 + bst r8,6 + bld r9,3 + bst r9,5 + bld r8,6 + bst r6,7 + bld r9,5 + bst r8,1 + bld r6,7 + bst r6,4 + bld r8,1 + bst r7,1 + bld r6,4 + bst r0,0 + bld r7,1 + bst r6,3 + bld r0,0 + bst r8,0 + bld r6,3 + bst r7,4 + bld r8,0 + bst r7,3 + bld r7,4 + bst r8,2 + bld r7,3 + bst r9,4 + bld r8,2 + bst r7,7 + bld r9,4 + bst r8,3 + bld r7,7 + bst r8,4 + bld r8,3 + bst r7,5 + bld r8,4 + bst r0,0 + bld r7,5 + bst r6,6 + bld r0,0 + bst r9,1 + bld r6,6 + bst r0,0 + bld r9,1 + bst r10,0 + bld r0,0 + bst r12,0 + bld r10,0 + bst r12,4 + bld r12,0 + bst r12,5 + bld r12,4 + bst r11,5 + bld r12,5 + bst r11,3 + bld r11,5 + bst r13,2 + bld r11,3 + bst r10,6 + bld r13,2 + bst r10,1 + bld r10,6 + bst r11,0 + bld r10,1 + bst r12,2 + bld r11,0 + bst r10,4 + bld r12,2 + bst r12,1 + bld r10,4 + bst r11,4 + bld r12,1 + bst r12,3 + bld r11,4 + bst r13,4 + bld r12,3 + bst r12,7 + bld r13,4 + bst r13,5 + bld r12,7 + bst r11,7 + bld r13,5 + bst r13,3 + bld r11,7 + bst r13,6 + bld r13,3 + bst r10,7 + bld r13,6 + bst r13,1 + bld r10,7 + bst r11,6 + bld r13,1 + bst r10,3 + bld r11,6 + bst r13,0 + bld r10,3 + bst r12,6 + bld r13,0 + bst r10,5 + bld r12,6 + bst r11,1 + bld r10,5 + bst r11,2 + bld r11,1 + bst r10,2 + bld r11,2 + bst r0,0 + bld r10,2 + bst r14,0 + bld r0,0 + bst r25,0 + bld r14,0 + bst r25,6 + bld r25,0 + bst r15,7 + bld r25,6 + bst r14,3 + bld r15,7 + bst r0,0 + bld r14,3 + bst r14,1 + bld r0,0 + bst r24,0 + bld r14,1 + bst r25,4 + bld r24,0 + bst r25,7 + bld r25,4 + bst r14,7 + bld r25,7 + bst r0,0 + bld r14,7 + bst r14,2 + bld r0,0 + bst r15,0 + bld r14,2 + bst r25,2 + bld r15,0 + bst r15,6 + bld r25,2 + bst r15,3 + bld r15,6 + bst r0,0 + bld r15,3 + bst r14,4 + bld r0,0 + bst r25,1 + bld r14,4 + bst r24,6 + bld r25,1 + bst r15,5 + bld r24,6 + bst r24,3 + bld r15,5 + bst r0,0 + bld r24,3 + bst r14,5 + bld r0,0 + bst r24,1 + bld r14,5 + bst r24,4 + bld r24,1 + bst r25,5 + bld r24,4 + bst r24,7 + bld r25,5 + bst r0,0 + bld r24,7 + bst r14,6 + bld r0,0 + bst r15,1 + bld r14,6 + bst r24,2 + bld r15,1 + bst r15,4 + bld r24,2 + bst r25,3 + bld r15,4 + bst r0,0 + bld r25,3 + movw r20,r14 + movw r22,r24 + movw r14,r2 + movw r24,r4 + movw r2,r20 + movw r4,r22 + and r20,r6 + and r21,r7 + and r22,r8 + and r23,r9 + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + com r14 + com r15 + com r24 + com r25 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + cp r19,r1 + breq 1355f + inc r26 + ldi r27,5 + cpse r26,r27 + rjmp 939b + mov r26,r1 + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rjmp 939b +1355: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + ldd r26,Y+17 + ldd r27,Y+18 + bst r2,0 + bld r20,0 + bst r6,0 + bld r20,1 + bst r10,0 + bld r20,2 + bst r14,0 + bld r20,3 + bst r2,1 + bld r20,4 + bst r6,1 + bld r20,5 + bst r10,1 + bld r20,6 + bst r14,1 + bld r20,7 + bst r2,2 + bld r21,0 + bst r6,2 + bld r21,1 + bst r10,2 + bld r21,2 + bst r14,2 + bld r21,3 + bst r2,3 + bld r21,4 + bst r6,3 + bld r21,5 + bst r10,3 + bld r21,6 + bst r14,3 + bld r21,7 + bst r2,4 + bld r22,0 + bst r6,4 + bld r22,1 + bst r10,4 + bld r22,2 + bst r14,4 + bld r22,3 + bst r2,5 + bld r22,4 + bst r6,5 + bld r22,5 + bst r10,5 + bld r22,6 + bst r14,5 + bld r22,7 + bst r2,6 + bld r23,0 + bst r6,6 + bld r23,1 + bst r10,6 + bld r23,2 + bst r14,6 + bld r23,3 + bst r2,7 + bld r23,4 + bst r6,7 + bld r23,5 + bst r10,7 + bld r23,6 + bst r14,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r3,0 + bld r20,0 + bst r7,0 + bld r20,1 + bst r11,0 + bld r20,2 + bst r15,0 + bld r20,3 + bst r3,1 + bld r20,4 + bst r7,1 + bld r20,5 + bst r11,1 + bld r20,6 + bst r15,1 + bld r20,7 + bst r3,2 + bld r21,0 + bst r7,2 + bld r21,1 + bst r11,2 + bld r21,2 + bst r15,2 + bld r21,3 + bst r3,3 + bld r21,4 + bst r7,3 + bld r21,5 + bst r11,3 + bld r21,6 + bst r15,3 + bld r21,7 + bst r3,4 + bld r22,0 + bst r7,4 + bld r22,1 + bst r11,4 + bld r22,2 + bst r15,4 + bld r22,3 + bst r3,5 + bld r22,4 + bst r7,5 + bld r22,5 + bst r11,5 + bld r22,6 + bst r15,5 + bld r22,7 + bst r3,6 + bld r23,0 + bst r7,6 + bld r23,1 + bst r11,6 + bld r23,2 + bst r15,6 + bld r23,3 + bst r3,7 + bld r23,4 + bst r7,7 + bld r23,5 + bst r11,7 + bld r23,6 + bst r15,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r4,0 + bld r20,0 + bst r8,0 + bld r20,1 + bst r12,0 + bld r20,2 + bst r24,0 + bld r20,3 + bst r4,1 + bld r20,4 + bst r8,1 + bld r20,5 + bst r12,1 + bld r20,6 + bst r24,1 + bld r20,7 + bst r4,2 + bld r21,0 + bst r8,2 + bld r21,1 + bst r12,2 + bld r21,2 + bst r24,2 + bld r21,3 + bst r4,3 + bld r21,4 + bst r8,3 + bld r21,5 + bst r12,3 + bld r21,6 + bst r24,3 + bld r21,7 + bst r4,4 + bld r22,0 + bst r8,4 + bld r22,1 + bst r12,4 + bld r22,2 + bst r24,4 + bld r22,3 + bst r4,5 + bld r22,4 + bst r8,5 + bld r22,5 + bst r12,5 + bld r22,6 + bst r24,5 + bld r22,7 + bst r4,6 + bld r23,0 + bst r8,6 + bld r23,1 + bst r12,6 + bld r23,2 + bst r24,6 + bld r23,3 + bst r4,7 + bld r23,4 + bst r8,7 + bld r23,5 + bst r12,7 + bld r23,6 + bst r24,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r5,0 + bld r20,0 + bst r9,0 + bld r20,1 + bst r13,0 + bld r20,2 + bst r25,0 + bld r20,3 + bst r5,1 + bld r20,4 + bst r9,1 + bld r20,5 + bst r13,1 + bld r20,6 + bst r25,1 + bld r20,7 + bst r5,2 + bld r21,0 + bst r9,2 + bld r21,1 + bst r13,2 + bld r21,2 + bst r25,2 + bld r21,3 + bst r5,3 + bld r21,4 + bst r9,3 + bld r21,5 + bst r13,3 + bld r21,6 + bst r25,3 + bld r21,7 + bst r5,4 + bld r22,0 + bst r9,4 + bld r22,1 + bst r13,4 + bld r22,2 + bst r25,4 + bld r22,3 + bst r5,5 + bld r22,4 + bst r9,5 + bld r22,5 + bst r13,5 + bld r22,6 + bst r25,5 + bld r22,7 + bst r5,6 + bld r23,0 + bst r9,6 + bld r23,1 + bst r13,6 + bld r23,2 + bst r25,6 + bld r23,3 + bst r5,7 + bld r23,4 + bst r9,7 + bld r23,5 + bst r13,7 + bld r23,6 + bst r25,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + adiw r28,18 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128t_decrypt, .-gift128t_decrypt + +#endif + +#endif diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-tiny-avr.S b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-tiny-avr.S new file mode 100644 index 0000000..dd1f7b9 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-gift128n-tiny-avr.S @@ -0,0 +1,9480 @@ +#if defined(__AVR__) +#include +/* Automatically generated - do not edit */ + +#include "internal-gift128-config.h" + +#if GIFT128_VARIANT == GIFT128_VARIANT_TINY + + .section .progmem.data,"a",@progbits + .p2align 8 + .type table_0, @object + .size table_0, 160 +table_0: + .byte 8 + .byte 0 + .byte 0 + .byte 16 + .byte 0 + .byte 128 + .byte 1 + .byte 128 + .byte 2 + .byte 0 + .byte 0 + .byte 84 + .byte 129 + .byte 1 + .byte 1 + .byte 1 + .byte 31 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 136 + .byte 16 + .byte 0 + .byte 224 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 81 + .byte 128 + .byte 1 + .byte 3 + .byte 3 + .byte 47 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 8 + .byte 16 + .byte 0 + .byte 96 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 65 + .byte 128 + .byte 0 + .byte 3 + .byte 3 + .byte 39 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 136 + .byte 0 + .byte 16 + .byte 0 + .byte 224 + .byte 1 + .byte 64 + .byte 2 + .byte 0 + .byte 80 + .byte 17 + .byte 128 + .byte 1 + .byte 2 + .byte 3 + .byte 43 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 8 + .byte 8 + .byte 16 + .byte 0 + .byte 64 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 64 + .byte 1 + .byte 128 + .byte 0 + .byte 2 + .byte 2 + .byte 33 + .byte 0 + .byte 0 + .byte 128 + .byte 128 + .byte 0 + .byte 0 + .byte 16 + .byte 0 + .byte 192 + .byte 1 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 81 + .byte 128 + .byte 1 + .byte 1 + .byte 3 + .byte 46 + .byte 0 + .byte 0 + .byte 128 + .byte 0 + .byte 136 + .byte 8 + .byte 16 + .byte 0 + .byte 32 + .byte 1 + .byte 96 + .byte 2 + .byte 0 + .byte 80 + .byte 64 + .byte 128 + .byte 0 + .byte 3 + .byte 1 + .byte 6 + .byte 0 + .byte 0 + .byte 128 + .byte 8 + .byte 136 + .byte 0 + .byte 16 + .byte 0 + .byte 160 + .byte 1 + .byte 192 + .byte 2 + .byte 0 + .byte 80 + .byte 20 + .byte 129 + .byte 1 + .byte 2 + .byte 1 + .byte 26 + .byte 0 + .byte 0 + .byte 128 + + .text +.global gift128n_init + .type gift128n_init, @function +gift128n_init: + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + movw r30,r24 + movw r26,r22 +.L__stack_usage = 16 + ld r22,X+ + ld r23,X+ + ld r2,X+ + ld r3,X+ + ld r8,X+ + ld r9,X+ + ld r10,X+ + ld r11,X+ + ld r4,X+ + ld r5,X+ + ld r6,X+ + ld r7,X+ + ld r12,X+ + ld r13,X+ + ld r14,X+ + ld r15,X+ + st Z,r22 + std Z+1,r23 + std Z+2,r2 + std Z+3,r3 + std Z+4,r4 + std Z+5,r5 + std Z+6,r6 + std Z+7,r7 + std Z+8,r8 + std Z+9,r9 + std Z+10,r10 + std Z+11,r11 + std Z+12,r12 + std Z+13,r13 + std Z+14,r14 + std Z+15,r15 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + ret + .size gift128n_init, .-gift128n_init + + .text +.global gift128n_encrypt + .type gift128n_encrypt, @function +gift128n_encrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e + subi r28,80 + sbci r29,0 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 100 + ld r22,Z + ldd r23,Z+1 + ldd r2,Z+2 + ldd r3,Z+3 + ldd r4,Z+4 + ldd r5,Z+5 + ldd r6,Z+6 + ldd r7,Z+7 + ldd r8,Z+8 + ldd r9,Z+9 + ldd r10,Z+10 + ldd r11,Z+11 + ldd r12,Z+12 + ldd r13,Z+13 + ldd r14,Z+14 + ldd r15,Z+15 + movw r30,r28 + adiw r30,1 + st Z+,r22 + st Z+,r23 + st Z+,r2 + st Z+,r3 + st Z+,r4 + st Z+,r5 + st Z+,r6 + st Z+,r7 + st Z+,r8 + st Z+,r9 + st Z+,r10 + st Z+,r11 + st Z+,r12 + st Z+,r13 + st Z+,r14 + st Z+,r15 + ldi r24,4 +35: + st Z+,r4 + st Z+,r5 + st Z+,r6 + st Z+,r7 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + st Z+,r22 + st Z+,r23 + st Z+,r2 + st Z+,r3 + mov r0,r22 + mov r22,r4 + mov r4,r0 + mov r0,r23 + mov r23,r5 + mov r5,r0 + mov r0,r2 + mov r2,r6 + mov r6,r0 + mov r0,r3 + mov r3,r7 + mov r7,r0 + st Z+,r12 + st Z+,r13 + st Z+,r14 + st Z+,r15 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + mov r0,r1 + lsr r11 + ror r10 + ror r0 + lsr r11 + ror r10 + ror r0 + or r11,r0 + st Z+,r8 + st Z+,r9 + st Z+,r10 + st Z+,r11 + mov r0,r8 + mov r8,r12 + mov r12,r0 + mov r0,r9 + mov r9,r13 + mov r13,r0 + mov r0,r10 + mov r10,r14 + mov r14,r0 + mov r0,r11 + mov r11,r15 + mov r15,r0 + dec r24 + breq 5117f + rjmp 35b +5117: + subi r30,80 + sbc r31,r1 + ldi r24,2 +121: + ld r22,Z + ldd r23,Z+1 + ldd r2,Z+2 + ldd r3,Z+3 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,85 + mov r19,r1 + andi r20,85 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + st Z,r3 + std Z+1,r23 + std Z+2,r2 + std Z+3,r22 + ldd r22,Z+4 + ldd r23,Z+5 + ldd r2,Z+6 + ldd r3,Z+7 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,85 + mov r19,r1 + andi r20,85 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+4,r3 + std Z+5,r23 + std Z+6,r2 + std Z+7,r22 + ldd r22,Z+8 + ldd r23,Z+9 + ldd r2,Z+10 + ldd r3,Z+11 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,17 + andi r19,17 + andi r20,17 + andi r21,17 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+8,r3 + std Z+9,r23 + std Z+10,r2 + std Z+11,r22 + ldd r22,Z+12 + ldd r23,Z+13 + ldd r2,Z+14 + ldd r3,Z+15 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,17 + andi r19,17 + andi r20,17 + andi r21,17 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,15 + mov r19,r1 + andi r20,15 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+12,r3 + std Z+13,r23 + std Z+14,r2 + std Z+15,r22 + ldd r22,Z+16 + ldd r23,Z+17 + ldd r2,Z+18 + ldd r3,Z+19 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r19 + rol r20 + rol r21 + rol r0 + movw r18,r20 + mov r20,r0 + mov r21,r1 + eor r18,r22 + eor r19,r23 + andi r18,170 + andi r19,170 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r0,r1 + lsr r20 + ror r19 + ror r18 + ror r0 + movw r20,r18 + mov r19,r0 + mov r18,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+16,r3 + std Z+17,r23 + std Z+18,r2 + std Z+19,r22 + ldd r22,Z+20 + ldd r23,Z+21 + ldd r2,Z+22 + ldd r3,Z+23 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r19 + rol r20 + rol r21 + rol r0 + movw r18,r20 + mov r20,r0 + mov r21,r1 + eor r18,r22 + eor r19,r23 + andi r18,170 + andi r19,170 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r0,r1 + lsr r20 + ror r19 + ror r18 + ror r0 + movw r20,r18 + mov r19,r0 + mov r18,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + movw r18,r20 + mov r20,r1 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,51 + andi r19,51 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+20,r3 + std Z+21,r23 + std Z+22,r2 + std Z+23,r22 + ldd r22,Z+24 + ldd r23,Z+25 + ldd r2,Z+26 + ldd r3,Z+27 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,10 + andi r19,10 + andi r20,10 + andi r21,10 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,204 + mov r19,r1 + andi r20,204 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+24,r3 + std Z+25,r23 + std Z+26,r2 + std Z+27,r22 + ldd r22,Z+28 + ldd r23,Z+29 + ldd r2,Z+30 + ldd r3,Z+31 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,10 + andi r19,10 + andi r20,10 + andi r21,10 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r0,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + lsl r18 + rol r19 + rol r20 + rol r21 + rol r0 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r0 + eor r18,r22 + eor r19,r23 + eor r20,r2 + eor r21,r3 + andi r18,204 + mov r19,r1 + andi r20,204 + mov r21,r1 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + lsr r21 + ror r20 + ror r19 + ror r18 + ror r0 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r0 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + movw r18,r22 + movw r20,r2 + mov r18,r19 + mov r19,r20 + mov r20,r21 + mov r21,r1 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r22 + eor r19,r23 + andi r18,240 + andi r19,240 + eor r22,r18 + eor r23,r19 + mov r20,r1 + mov r21,r1 + mov r21,r20 + mov r20,r19 + mov r19,r18 + mov r18,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + std Z+28,r3 + std Z+29,r23 + std Z+30,r2 + std Z+31,r22 + dec r24 + breq 1270f + adiw r30,40 + rjmp 121b +1270: + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r22,0 + bst r18,1 + bld r4,0 + bst r18,2 + bld r8,0 + bst r18,3 + bld r12,0 + bst r18,4 + bld r22,1 + bst r18,5 + bld r4,1 + bst r18,6 + bld r8,1 + bst r18,7 + bld r12,1 + bst r19,0 + bld r22,2 + bst r19,1 + bld r4,2 + bst r19,2 + bld r8,2 + bst r19,3 + bld r12,2 + bst r19,4 + bld r22,3 + bst r19,5 + bld r4,3 + bst r19,6 + bld r8,3 + bst r19,7 + bld r12,3 + bst r20,0 + bld r22,4 + bst r20,1 + bld r4,4 + bst r20,2 + bld r8,4 + bst r20,3 + bld r12,4 + bst r20,4 + bld r22,5 + bst r20,5 + bld r4,5 + bst r20,6 + bld r8,5 + bst r20,7 + bld r12,5 + bst r21,0 + bld r22,6 + bst r21,1 + bld r4,6 + bst r21,2 + bld r8,6 + bst r21,3 + bld r12,6 + bst r21,4 + bld r22,7 + bst r21,5 + bld r4,7 + bst r21,6 + bld r8,7 + bst r21,7 + bld r12,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r23,0 + bst r18,1 + bld r5,0 + bst r18,2 + bld r9,0 + bst r18,3 + bld r13,0 + bst r18,4 + bld r23,1 + bst r18,5 + bld r5,1 + bst r18,6 + bld r9,1 + bst r18,7 + bld r13,1 + bst r19,0 + bld r23,2 + bst r19,1 + bld r5,2 + bst r19,2 + bld r9,2 + bst r19,3 + bld r13,2 + bst r19,4 + bld r23,3 + bst r19,5 + bld r5,3 + bst r19,6 + bld r9,3 + bst r19,7 + bld r13,3 + bst r20,0 + bld r23,4 + bst r20,1 + bld r5,4 + bst r20,2 + bld r9,4 + bst r20,3 + bld r13,4 + bst r20,4 + bld r23,5 + bst r20,5 + bld r5,5 + bst r20,6 + bld r9,5 + bst r20,7 + bld r13,5 + bst r21,0 + bld r23,6 + bst r21,1 + bld r5,6 + bst r21,2 + bld r9,6 + bst r21,3 + bld r13,6 + bst r21,4 + bld r23,7 + bst r21,5 + bld r5,7 + bst r21,6 + bld r9,7 + bst r21,7 + bld r13,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r2,0 + bst r18,1 + bld r6,0 + bst r18,2 + bld r10,0 + bst r18,3 + bld r14,0 + bst r18,4 + bld r2,1 + bst r18,5 + bld r6,1 + bst r18,6 + bld r10,1 + bst r18,7 + bld r14,1 + bst r19,0 + bld r2,2 + bst r19,1 + bld r6,2 + bst r19,2 + bld r10,2 + bst r19,3 + bld r14,2 + bst r19,4 + bld r2,3 + bst r19,5 + bld r6,3 + bst r19,6 + bld r10,3 + bst r19,7 + bld r14,3 + bst r20,0 + bld r2,4 + bst r20,1 + bld r6,4 + bst r20,2 + bld r10,4 + bst r20,3 + bld r14,4 + bst r20,4 + bld r2,5 + bst r20,5 + bld r6,5 + bst r20,6 + bld r10,5 + bst r20,7 + bld r14,5 + bst r21,0 + bld r2,6 + bst r21,1 + bld r6,6 + bst r21,2 + bld r10,6 + bst r21,3 + bld r14,6 + bst r21,4 + bld r2,7 + bst r21,5 + bld r6,7 + bst r21,6 + bld r10,7 + bst r21,7 + bld r14,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r3,0 + bst r18,1 + bld r7,0 + bst r18,2 + bld r11,0 + bst r18,3 + bld r15,0 + bst r18,4 + bld r3,1 + bst r18,5 + bld r7,1 + bst r18,6 + bld r11,1 + bst r18,7 + bld r15,1 + bst r19,0 + bld r3,2 + bst r19,1 + bld r7,2 + bst r19,2 + bld r11,2 + bst r19,3 + bld r15,2 + bst r19,4 + bld r3,3 + bst r19,5 + bld r7,3 + bst r19,6 + bld r11,3 + bst r19,7 + bld r15,3 + bst r20,0 + bld r3,4 + bst r20,1 + bld r7,4 + bst r20,2 + bld r11,4 + bst r20,3 + bld r15,4 + bst r20,4 + bld r3,5 + bst r20,5 + bld r7,5 + bst r20,6 + bld r11,5 + bst r20,7 + bld r15,5 + bst r21,0 + bld r3,6 + bst r21,1 + bld r7,6 + bst r21,2 + bld r11,6 + bst r21,3 + bld r15,6 + bst r21,4 + bld r3,7 + bst r21,5 + bld r7,7 + bst r21,6 + bld r11,7 + bst r21,7 + bld r15,7 + movw r26,r28 + adiw r26,1 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + rcall 1585f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2323f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,20 + adiw r26,40 + rcall 1585f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2323f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,40 + sbiw r26,40 + rcall 1585f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2323f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,60 + adiw r26,40 + rcall 1585f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2323f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,80 + sbiw r26,40 + rcall 1585f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2323f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,100 + adiw r26,40 + rcall 1585f +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2323f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r24,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r24 +#endif + ldi r30,120 + sbiw r26,40 + rcall 1585f + rcall 1585f + rjmp 2797f +1585: + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + movw r18,r4 + movw r20,r6 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,204 + andi r19,204 + andi r20,204 + andi r21,204 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + ldi r25,51 + and r4,r25 + and r5,r25 + and r6,r25 + and r7,r25 + or r4,r18 + or r5,r19 + or r6,r20 + or r7,r21 + movw r18,r8 + movw r20,r10 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,238 + andi r19,238 + andi r20,238 + andi r21,238 + lsr r11 + ror r10 + ror r9 + ror r8 + lsr r11 + ror r10 + ror r9 + ror r8 + lsr r11 + ror r10 + ror r9 + ror r8 + ldi r24,17 + and r8,r24 + and r9,r24 + and r10,r24 + and r11,r24 + or r8,r18 + or r9,r19 + or r10,r20 + or r11,r21 + movw r18,r12 + movw r20,r14 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + andi r18,136 + andi r19,136 + andi r20,136 + andi r21,136 + lsr r15 + ror r14 + ror r13 + ror r12 + ldi r17,119 + and r12,r17 + and r13,r17 + and r14,r17 + and r15,r17 + or r12,r18 + or r13,r19 + or r14,r20 + or r15,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r12 + and r0,r8 + eor r4,r0 + mov r0,r13 + and r0,r9 + eor r5,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r22 + eor r12,r0 + mov r0,r5 + and r0,r23 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r12 + or r0,r4 + eor r8,r0 + mov r0,r13 + or r0,r5 + eor r9,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + eor r22,r8 + eor r23,r9 + eor r2,r10 + eor r3,r11 + eor r4,r22 + eor r5,r23 + eor r6,r2 + eor r7,r3 + com r22 + com r23 + com r2 + com r3 + mov r0,r12 + and r0,r4 + eor r8,r0 + mov r0,r13 + and r0,r5 + eor r9,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r1 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + or r23,r0 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + mov r0,r5 + mov r5,r4 + mov r4,r0 + mov r0,r7 + mov r7,r6 + mov r6,r0 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r8 + rol r9 + adc r8,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r12,r18 + eor r13,r19 + eor r14,r20 + eor r15,r21 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + movw r18,r4 + movw r20,r6 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r4 + eor r19,r5 + eor r20,r6 + eor r21,r7 + andi r18,85 + andi r19,85 + andi r20,85 + andi r21,85 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + mov r0,r10 + mov r10,r8 + mov r8,r0 + mov r0,r11 + mov r11,r9 + mov r9,r0 + movw r18,r8 + movw r20,r10 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r8 + eor r19,r9 + andi r18,85 + andi r19,85 + eor r8,r18 + eor r9,r19 + mov r20,r1 + mov r21,r1 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + mov r0,r14 + mov r14,r12 + mov r12,r0 + mov r0,r15 + mov r15,r13 + mov r13,r0 + movw r18,r14 + lsr r19 + ror r18 + eor r18,r14 + eor r19,r15 + andi r18,85 + andi r19,85 + eor r14,r18 + eor r15,r19 + lsl r18 + rol r19 + eor r14,r18 + eor r15,r19 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + mov r0,r12 + and r0,r8 + eor r4,r0 + mov r0,r13 + and r0,r9 + eor r5,r0 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r22 + eor r12,r0 + mov r0,r5 + and r0,r23 + eor r13,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r12 + or r0,r4 + eor r8,r0 + mov r0,r13 + or r0,r5 + eor r9,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + eor r22,r8 + eor r23,r9 + eor r2,r10 + eor r3,r11 + eor r4,r22 + eor r5,r23 + eor r6,r2 + eor r7,r3 + com r22 + com r23 + com r2 + com r3 + mov r0,r12 + and r0,r4 + eor r8,r0 + mov r0,r13 + and r0,r5 + eor r9,r0 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r23 + adc r23,r1 + lsl r23 + adc r23,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + swap r4 + swap r5 + swap r6 + swap r7 + mov r0,r1 + lsr r8 + ror r0 + lsr r8 + ror r0 + or r8,r0 + mov r0,r1 + lsr r9 + ror r0 + lsr r9 + ror r0 + or r9,r0 + mov r0,r1 + lsr r10 + ror r0 + lsr r10 + ror r0 + or r10,r0 + mov r0,r1 + lsr r11 + ror r0 + lsr r11 + ror r0 + or r11,r0 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r12,r18 + eor r13,r19 + eor r14,r20 + eor r15,r21 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + com r12 + com r13 + com r14 + com r15 + mov r0,r22 + and r0,r4 + eor r8,r0 + mov r0,r23 + and r0,r5 + eor r9,r0 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r6 + mov r6,r4 + mov r4,r0 + mov r0,r7 + mov r7,r5 + mov r5,r0 + mov r0,r8 + mov r8,r9 + mov r9,r10 + mov r10,r11 + mov r11,r0 + mov r0,r15 + mov r15,r14 + mov r14,r13 + mov r13,r12 + mov r12,r0 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r19,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r19,Z +#elif defined(__AVR_TINY__) + ld r19,Z +#else + lpm + mov r19,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 + eor r22,r18 + eor r23,r19 + eor r2,r20 + eor r3,r21 + eor r22,r12 + eor r23,r13 + eor r2,r14 + eor r3,r15 + eor r12,r22 + eor r13,r23 + eor r14,r2 + eor r15,r3 + eor r22,r12 + eor r23,r13 + eor r2,r14 + eor r3,r15 + ret +2323: + movw r30,r26 + sbiw r30,40 + push r3 + push r2 + push r23 + push r22 + push r7 + push r6 + push r5 + push r4 + ld r22,Z + ldd r23,Z+1 + ldd r2,Z+2 + ldd r3,Z+3 + ldd r26,Z+4 + ldd r27,Z+5 + ldd r24,Z+6 + ldd r25,Z+7 + movw r18,r26 + movw r20,r24 + movw r18,r20 + mov r20,r1 + mov r21,r1 + eor r18,r26 + eor r19,r27 + andi r18,51 + andi r19,51 + eor r26,r18 + eor r27,r19 + mov r20,r1 + mov r21,r1 + movw r20,r18 + mov r18,r1 + mov r19,r1 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,68 + andi r19,68 + andi r20,85 + andi r21,85 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + st Z,r26 + std Z+1,r27 + std Z+2,r24 + std Z+3,r25 + movw r18,r22 + movw r20,r2 + andi r18,51 + andi r19,51 + andi r20,51 + andi r21,51 + andi r22,204 + andi r23,204 + ldi r17,204 + and r2,r17 + and r3,r17 + or r2,r21 + or r3,r18 + or r22,r19 + or r23,r20 + movw r18,r2 + movw r20,r22 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r2 + eor r19,r3 + eor r20,r22 + eor r21,r23 + mov r18,r1 + andi r19,17 + andi r20,85 + andi r21,85 + eor r2,r18 + eor r3,r19 + eor r22,r20 + eor r23,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r2,r18 + eor r3,r19 + eor r22,r20 + eor r23,r21 + std Z+4,r2 + std Z+5,r3 + std Z+6,r22 + std Z+7,r23 + ldd r22,Z+8 + ldd r23,Z+9 + ldd r2,Z+10 + ldd r3,Z+11 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r24,Z+14 + ldd r25,Z+15 + lsl r26 + adc r26,r1 + lsl r26 + adc r26,r1 + swap r27 + lsl r24 + adc r24,r1 + lsl r24 + adc r24,r1 + swap r25 + std Z+8,r26 + std Z+9,r27 + std Z+10,r24 + std Z+11,r25 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r22 + adc r22,r1 + lsl r23 + adc r23,r1 + lsl r23 + adc r23,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + std Z+12,r22 + std Z+13,r23 + std Z+14,r2 + std Z+15,r3 + ldd r22,Z+16 + ldd r23,Z+17 + ldd r2,Z+18 + ldd r3,Z+19 + ldd r26,Z+20 + ldd r27,Z+21 + ldd r24,Z+22 + ldd r25,Z+23 + movw r18,r26 + movw r20,r24 + andi r18,170 + andi r19,170 + andi r20,170 + andi r21,170 + andi r26,85 + andi r27,85 + andi r24,85 + andi r25,85 + or r26,r19 + or r27,r20 + or r24,r21 + or r25,r18 + std Z+16,r24 + std Z+17,r25 + std Z+18,r26 + std Z+19,r27 + movw r18,r22 + movw r20,r2 + andi r18,85 + andi r19,85 + andi r20,85 + andi r21,85 + andi r22,170 + andi r23,170 + ldi r16,170 + and r2,r16 + and r3,r16 + lsl r22 + rol r23 + rol r2 + rol r3 + adc r22,r1 + lsl r22 + rol r23 + rol r2 + rol r3 + adc r22,r1 + lsl r22 + rol r23 + rol r2 + rol r3 + adc r22,r1 + lsl r22 + rol r23 + rol r2 + rol r3 + adc r22,r1 + or r22,r18 + or r23,r19 + or r2,r20 + or r3,r21 + std Z+20,r3 + std Z+21,r22 + std Z+22,r23 + std Z+23,r2 + ldd r22,Z+24 + ldd r23,Z+25 + ldd r2,Z+26 + ldd r3,Z+27 + ldd r26,Z+28 + ldd r27,Z+29 + ldd r24,Z+30 + ldd r25,Z+31 + movw r18,r26 + movw r20,r24 + lsr r21 + ror r20 + ror r19 + ror r18 + lsr r21 + ror r20 + ror r19 + ror r18 + eor r18,r26 + eor r19,r27 + eor r20,r24 + eor r21,r25 + andi r18,3 + andi r19,3 + andi r20,3 + andi r21,3 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + lsl r18 + rol r19 + rol r20 + rol r21 + lsl r18 + rol r19 + rol r20 + rol r21 + eor r26,r18 + eor r27,r19 + eor r24,r20 + eor r25,r21 + movw r18,r26 + movw r20,r24 + lsr r21 + ror r20 + ror r19 + ror r18 + andi r18,120 + andi r19,120 + andi r20,120 + andi r21,120 + movw r4,r18 + movw r6,r20 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + lsr r7 + ror r6 + ror r5 + ror r4 + eor r4,r18 + eor r5,r19 + eor r6,r20 + eor r7,r21 + ldi r16,8 + and r4,r16 + and r5,r16 + and r6,r16 + and r7,r16 + eor r18,r4 + eor r19,r5 + eor r20,r6 + eor r21,r7 + lsl r4 + rol r5 + rol r6 + rol r7 + lsl r4 + rol r5 + rol r6 + rol r7 + lsl r4 + rol r5 + rol r6 + rol r7 + lsl r4 + rol r5 + rol r6 + rol r7 + eor r18,r4 + eor r19,r5 + eor r20,r6 + eor r21,r7 + andi r26,15 + andi r27,15 + andi r24,15 + andi r25,15 + or r26,r18 + or r27,r19 + or r24,r20 + or r25,r21 + std Z+24,r26 + std Z+25,r27 + std Z+26,r24 + std Z+27,r25 + movw r18,r2 + lsr r19 + ror r18 + lsr r19 + ror r18 + andi r18,48 + andi r19,48 + movw r26,r22 + movw r24,r2 + andi r26,1 + andi r27,1 + andi r24,1 + andi r25,1 + lsl r26 + rol r27 + rol r24 + rol r25 + lsl r26 + rol r27 + rol r24 + rol r25 + lsl r26 + rol r27 + rol r24 + rol r25 + or r26,r18 + or r27,r19 + movw r18,r2 + lsl r18 + rol r19 + lsl r18 + rol r19 + andi r18,192 + andi r19,192 + or r26,r18 + or r27,r19 + movw r18,r22 + andi r18,224 + andi r19,224 + lsr r19 + ror r18 + or r24,r18 + or r25,r19 + movw r18,r22 + movw r20,r2 + lsr r21 + ror r20 + ror r19 + ror r18 + andi r18,7 + andi r19,7 + andi r20,7 + andi r21,7 + or r26,r18 + or r27,r19 + or r24,r20 + or r25,r21 + andi r22,16 + andi r23,16 + lsl r22 + rol r23 + lsl r22 + rol r23 + lsl r22 + rol r23 + or r24,r22 + or r25,r23 + std Z+28,r26 + std Z+29,r27 + std Z+30,r24 + std Z+31,r25 + ldd r22,Z+32 + ldd r23,Z+33 + ldd r2,Z+34 + ldd r3,Z+35 + ldd r26,Z+36 + ldd r27,Z+37 + ldd r24,Z+38 + ldd r25,Z+39 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Z+32,r27 + std Z+33,r26 + std Z+34,r24 + std Z+35,r25 + mov r0,r1 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + or r23,r0 + mov r0,r2 + mov r2,r3 + mov r3,r0 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + std Z+36,r22 + std Z+37,r23 + std Z+38,r2 + std Z+39,r3 + pop r4 + pop r5 + pop r6 + pop r7 + pop r22 + pop r23 + pop r2 + pop r3 + movw r26,r30 + ret +2797: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + subi r28,175 + sbci r29,255 + ld r26,Y+ + ld r27,Y + subi r28,82 + sbc r29,r1 + bst r22,0 + bld r18,0 + bst r4,0 + bld r18,1 + bst r8,0 + bld r18,2 + bst r12,0 + bld r18,3 + bst r22,1 + bld r18,4 + bst r4,1 + bld r18,5 + bst r8,1 + bld r18,6 + bst r12,1 + bld r18,7 + bst r22,2 + bld r19,0 + bst r4,2 + bld r19,1 + bst r8,2 + bld r19,2 + bst r12,2 + bld r19,3 + bst r22,3 + bld r19,4 + bst r4,3 + bld r19,5 + bst r8,3 + bld r19,6 + bst r12,3 + bld r19,7 + bst r22,4 + bld r20,0 + bst r4,4 + bld r20,1 + bst r8,4 + bld r20,2 + bst r12,4 + bld r20,3 + bst r22,5 + bld r20,4 + bst r4,5 + bld r20,5 + bst r8,5 + bld r20,6 + bst r12,5 + bld r20,7 + bst r22,6 + bld r21,0 + bst r4,6 + bld r21,1 + bst r8,6 + bld r21,2 + bst r12,6 + bld r21,3 + bst r22,7 + bld r21,4 + bst r4,7 + bld r21,5 + bst r8,7 + bld r21,6 + bst r12,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r23,0 + bld r18,0 + bst r5,0 + bld r18,1 + bst r9,0 + bld r18,2 + bst r13,0 + bld r18,3 + bst r23,1 + bld r18,4 + bst r5,1 + bld r18,5 + bst r9,1 + bld r18,6 + bst r13,1 + bld r18,7 + bst r23,2 + bld r19,0 + bst r5,2 + bld r19,1 + bst r9,2 + bld r19,2 + bst r13,2 + bld r19,3 + bst r23,3 + bld r19,4 + bst r5,3 + bld r19,5 + bst r9,3 + bld r19,6 + bst r13,3 + bld r19,7 + bst r23,4 + bld r20,0 + bst r5,4 + bld r20,1 + bst r9,4 + bld r20,2 + bst r13,4 + bld r20,3 + bst r23,5 + bld r20,4 + bst r5,5 + bld r20,5 + bst r9,5 + bld r20,6 + bst r13,5 + bld r20,7 + bst r23,6 + bld r21,0 + bst r5,6 + bld r21,1 + bst r9,6 + bld r21,2 + bst r13,6 + bld r21,3 + bst r23,7 + bld r21,4 + bst r5,7 + bld r21,5 + bst r9,7 + bld r21,6 + bst r13,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r2,0 + bld r18,0 + bst r6,0 + bld r18,1 + bst r10,0 + bld r18,2 + bst r14,0 + bld r18,3 + bst r2,1 + bld r18,4 + bst r6,1 + bld r18,5 + bst r10,1 + bld r18,6 + bst r14,1 + bld r18,7 + bst r2,2 + bld r19,0 + bst r6,2 + bld r19,1 + bst r10,2 + bld r19,2 + bst r14,2 + bld r19,3 + bst r2,3 + bld r19,4 + bst r6,3 + bld r19,5 + bst r10,3 + bld r19,6 + bst r14,3 + bld r19,7 + bst r2,4 + bld r20,0 + bst r6,4 + bld r20,1 + bst r10,4 + bld r20,2 + bst r14,4 + bld r20,3 + bst r2,5 + bld r20,4 + bst r6,5 + bld r20,5 + bst r10,5 + bld r20,6 + bst r14,5 + bld r20,7 + bst r2,6 + bld r21,0 + bst r6,6 + bld r21,1 + bst r10,6 + bld r21,2 + bst r14,6 + bld r21,3 + bst r2,7 + bld r21,4 + bst r6,7 + bld r21,5 + bst r10,7 + bld r21,6 + bst r14,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r3,0 + bld r18,0 + bst r7,0 + bld r18,1 + bst r11,0 + bld r18,2 + bst r15,0 + bld r18,3 + bst r3,1 + bld r18,4 + bst r7,1 + bld r18,5 + bst r11,1 + bld r18,6 + bst r15,1 + bld r18,7 + bst r3,2 + bld r19,0 + bst r7,2 + bld r19,1 + bst r11,2 + bld r19,2 + bst r15,2 + bld r19,3 + bst r3,3 + bld r19,4 + bst r7,3 + bld r19,5 + bst r11,3 + bld r19,6 + bst r15,3 + bld r19,7 + bst r3,4 + bld r20,0 + bst r7,4 + bld r20,1 + bst r11,4 + bld r20,2 + bst r15,4 + bld r20,3 + bst r3,5 + bld r20,4 + bst r7,5 + bld r20,5 + bst r11,5 + bld r20,6 + bst r15,5 + bld r20,7 + bst r3,6 + bld r21,0 + bst r7,6 + bld r21,1 + bst r11,6 + bld r21,2 + bst r15,6 + bld r21,3 + bst r3,7 + bld r21,4 + bst r7,7 + bld r21,5 + bst r11,7 + bld r21,6 + bst r15,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + subi r28,174 + sbci r29,255 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128n_encrypt, .-gift128n_encrypt + + .section .progmem.data,"a",@progbits + .p2align 8 + .type table_1, @object + .size table_1, 40 +table_1: + .byte 1 + .byte 3 + .byte 7 + .byte 15 + .byte 31 + .byte 62 + .byte 61 + .byte 59 + .byte 55 + .byte 47 + .byte 30 + .byte 60 + .byte 57 + .byte 51 + .byte 39 + .byte 14 + .byte 29 + .byte 58 + .byte 53 + .byte 43 + .byte 22 + .byte 44 + .byte 24 + .byte 48 + .byte 33 + .byte 2 + .byte 5 + .byte 11 + .byte 23 + .byte 46 + .byte 28 + .byte 56 + .byte 49 + .byte 35 + .byte 6 + .byte 13 + .byte 27 + .byte 54 + .byte 45 + .byte 26 + + .text +.global gift128n_decrypt + .type gift128n_decrypt, @function +gift128n_decrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e + sbiw r28,16 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 35 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r22,0 + bst r18,1 + bld r4,0 + bst r18,2 + bld r8,0 + bst r18,3 + bld r12,0 + bst r18,4 + bld r22,1 + bst r18,5 + bld r4,1 + bst r18,6 + bld r8,1 + bst r18,7 + bld r12,1 + bst r19,0 + bld r22,2 + bst r19,1 + bld r4,2 + bst r19,2 + bld r8,2 + bst r19,3 + bld r12,2 + bst r19,4 + bld r22,3 + bst r19,5 + bld r4,3 + bst r19,6 + bld r8,3 + bst r19,7 + bld r12,3 + bst r20,0 + bld r22,4 + bst r20,1 + bld r4,4 + bst r20,2 + bld r8,4 + bst r20,3 + bld r12,4 + bst r20,4 + bld r22,5 + bst r20,5 + bld r4,5 + bst r20,6 + bld r8,5 + bst r20,7 + bld r12,5 + bst r21,0 + bld r22,6 + bst r21,1 + bld r4,6 + bst r21,2 + bld r8,6 + bst r21,3 + bld r12,6 + bst r21,4 + bld r22,7 + bst r21,5 + bld r4,7 + bst r21,6 + bld r8,7 + bst r21,7 + bld r12,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r23,0 + bst r18,1 + bld r5,0 + bst r18,2 + bld r9,0 + bst r18,3 + bld r13,0 + bst r18,4 + bld r23,1 + bst r18,5 + bld r5,1 + bst r18,6 + bld r9,1 + bst r18,7 + bld r13,1 + bst r19,0 + bld r23,2 + bst r19,1 + bld r5,2 + bst r19,2 + bld r9,2 + bst r19,3 + bld r13,2 + bst r19,4 + bld r23,3 + bst r19,5 + bld r5,3 + bst r19,6 + bld r9,3 + bst r19,7 + bld r13,3 + bst r20,0 + bld r23,4 + bst r20,1 + bld r5,4 + bst r20,2 + bld r9,4 + bst r20,3 + bld r13,4 + bst r20,4 + bld r23,5 + bst r20,5 + bld r5,5 + bst r20,6 + bld r9,5 + bst r20,7 + bld r13,5 + bst r21,0 + bld r23,6 + bst r21,1 + bld r5,6 + bst r21,2 + bld r9,6 + bst r21,3 + bld r13,6 + bst r21,4 + bld r23,7 + bst r21,5 + bld r5,7 + bst r21,6 + bld r9,7 + bst r21,7 + bld r13,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r2,0 + bst r18,1 + bld r6,0 + bst r18,2 + bld r10,0 + bst r18,3 + bld r14,0 + bst r18,4 + bld r2,1 + bst r18,5 + bld r6,1 + bst r18,6 + bld r10,1 + bst r18,7 + bld r14,1 + bst r19,0 + bld r2,2 + bst r19,1 + bld r6,2 + bst r19,2 + bld r10,2 + bst r19,3 + bld r14,2 + bst r19,4 + bld r2,3 + bst r19,5 + bld r6,3 + bst r19,6 + bld r10,3 + bst r19,7 + bld r14,3 + bst r20,0 + bld r2,4 + bst r20,1 + bld r6,4 + bst r20,2 + bld r10,4 + bst r20,3 + bld r14,4 + bst r20,4 + bld r2,5 + bst r20,5 + bld r6,5 + bst r20,6 + bld r10,5 + bst r20,7 + bld r14,5 + bst r21,0 + bld r2,6 + bst r21,1 + bld r6,6 + bst r21,2 + bld r10,6 + bst r21,3 + bld r14,6 + bst r21,4 + bld r2,7 + bst r21,5 + bld r6,7 + bst r21,6 + bld r10,7 + bst r21,7 + bld r14,7 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + bst r18,0 + bld r3,0 + bst r18,1 + bld r7,0 + bst r18,2 + bld r11,0 + bst r18,3 + bld r15,0 + bst r18,4 + bld r3,1 + bst r18,5 + bld r7,1 + bst r18,6 + bld r11,1 + bst r18,7 + bld r15,1 + bst r19,0 + bld r3,2 + bst r19,1 + bld r7,2 + bst r19,2 + bld r11,2 + bst r19,3 + bld r15,2 + bst r19,4 + bld r3,3 + bst r19,5 + bld r7,3 + bst r19,6 + bld r11,3 + bst r19,7 + bld r15,3 + bst r20,0 + bld r3,4 + bst r20,1 + bld r7,4 + bst r20,2 + bld r11,4 + bst r20,3 + bld r15,4 + bst r20,4 + bld r3,5 + bst r20,5 + bld r7,5 + bst r20,6 + bld r11,5 + bst r20,7 + bld r15,5 + bst r21,0 + bld r3,6 + bst r21,1 + bld r7,6 + bst r21,2 + bld r11,6 + bst r21,3 + bld r15,6 + bst r21,4 + bld r3,7 + bst r21,5 + bld r7,7 + bst r21,6 + bld r11,7 + bst r21,7 + bld r15,7 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r24,Z+14 + ldd r25,Z+15 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Y+1,r26 + std Y+2,r27 + std Y+3,r24 + std Y+4,r25 + ldd r26,Z+4 + ldd r27,Z+5 + ldd r24,Z+6 + ldd r25,Z+7 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Y+5,r26 + std Y+6,r27 + std Y+7,r24 + std Y+8,r25 + ldd r26,Z+8 + ldd r27,Z+9 + ldd r24,Z+10 + ldd r25,Z+11 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Y+9,r26 + std Y+10,r27 + std Y+11,r24 + std Y+12,r25 + ld r26,Z + ldd r27,Z+1 + ldd r24,Z+2 + ldd r25,Z+3 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + ldi r30,lo8(table_1) + ldi r31,hi8(table_1) +#if defined(RAMPZ) + ldi r17,hh8(table_1) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r17 +#endif + ldi r16,40 +370: + ldd r0,Y+9 + eor r8,r0 + ldd r0,Y+10 + eor r9,r0 + ldd r0,Y+11 + eor r10,r0 + ldd r0,Y+12 + eor r11,r0 + std Y+13,r26 + std Y+14,r27 + std Y+15,r24 + std Y+16,r25 + ldd r26,Y+1 + ldd r27,Y+2 + ldd r24,Y+3 + ldd r25,Y+4 + mov r0,r1 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + or r27,r0 + lsl r24 + rol r25 + adc r24,r1 + lsl r24 + rol r25 + adc r24,r1 + rcall 522f + ldd r0,Y+13 + eor r8,r0 + ldd r0,Y+14 + eor r9,r0 + ldd r0,Y+15 + eor r10,r0 + ldd r0,Y+16 + eor r11,r0 + std Y+1,r26 + std Y+2,r27 + std Y+3,r24 + std Y+4,r25 + ldd r26,Y+5 + ldd r27,Y+6 + ldd r24,Y+7 + ldd r25,Y+8 + mov r0,r1 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + or r27,r0 + lsl r24 + rol r25 + adc r24,r1 + lsl r24 + rol r25 + adc r24,r1 + rcall 522f + ldd r0,Y+1 + eor r8,r0 + ldd r0,Y+2 + eor r9,r0 + ldd r0,Y+3 + eor r10,r0 + ldd r0,Y+4 + eor r11,r0 + std Y+5,r26 + std Y+6,r27 + std Y+7,r24 + std Y+8,r25 + ldd r26,Y+9 + ldd r27,Y+10 + ldd r24,Y+11 + ldd r25,Y+12 + mov r0,r1 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + or r27,r0 + lsl r24 + rol r25 + adc r24,r1 + lsl r24 + rol r25 + adc r24,r1 + rcall 522f + ldd r0,Y+5 + eor r8,r0 + ldd r0,Y+6 + eor r9,r0 + ldd r0,Y+7 + eor r10,r0 + ldd r0,Y+8 + eor r11,r0 + std Y+9,r26 + std Y+10,r27 + std Y+11,r24 + std Y+12,r25 + ldd r26,Y+13 + ldd r27,Y+14 + ldd r24,Y+15 + ldd r25,Y+16 + mov r0,r1 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + lsr r27 + ror r26 + ror r0 + or r27,r0 + lsl r24 + rol r25 + adc r24,r1 + lsl r24 + rol r25 + adc r24,r1 + rcall 522f + cpse r16,r1 + rjmp 370b + rjmp 867f +522: + eor r4,r26 + eor r5,r27 + eor r6,r24 + eor r7,r25 + ldi r18,128 + eor r15,r18 + dec r16 + mov r30,r16 +#if defined(RAMPZ) + elpm r18,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r18,Z +#elif defined(__AVR_TINY__) + ld r18,Z +#else + lpm + mov r18,r0 +#endif + eor r12,r18 + bst r22,1 + bld r0,0 + bst r3,0 + bld r22,1 + bst r22,6 + bld r3,0 + bst r2,1 + bld r22,6 + bst r3,4 + bld r2,1 + bst r22,7 + bld r3,4 + bst r23,1 + bld r22,7 + bst r3,2 + bld r23,1 + bst r2,6 + bld r3,2 + bst r2,5 + bld r2,6 + bst r3,5 + bld r2,5 + bst r3,7 + bld r3,5 + bst r23,7 + bld r3,7 + bst r23,3 + bld r23,7 + bst r23,2 + bld r23,3 + bst r2,2 + bld r23,2 + bst r2,4 + bld r2,2 + bst r22,5 + bld r2,4 + bst r3,1 + bld r22,5 + bst r3,6 + bld r3,1 + bst r2,7 + bld r3,6 + bst r23,5 + bld r2,7 + bst r3,3 + bld r23,5 + bst r23,6 + bld r3,3 + bst r2,3 + bld r23,6 + bst r23,4 + bld r2,3 + bst r22,3 + bld r23,4 + bst r23,0 + bld r22,3 + bst r22,2 + bld r23,0 + bst r2,0 + bld r22,2 + bst r22,4 + bld r2,0 + bst r0,0 + bld r22,4 + bst r4,0 + bld r0,0 + bst r5,0 + bld r4,0 + bst r5,2 + bld r5,0 + bst r7,2 + bld r5,2 + bst r7,6 + bld r7,2 + bst r7,7 + bld r7,6 + bst r6,7 + bld r7,7 + bst r6,5 + bld r6,7 + bst r4,5 + bld r6,5 + bst r4,1 + bld r4,5 + bst r0,0 + bld r4,1 + bst r4,2 + bld r0,0 + bst r7,0 + bld r4,2 + bst r5,6 + bld r7,0 + bst r7,3 + bld r5,6 + bst r6,6 + bld r7,3 + bst r7,5 + bld r6,6 + bst r4,7 + bld r7,5 + bst r6,1 + bld r4,7 + bst r4,4 + bld r6,1 + bst r5,1 + bld r4,4 + bst r0,0 + bld r5,1 + bst r4,3 + bld r0,0 + bst r6,0 + bld r4,3 + bst r5,4 + bld r6,0 + bst r5,3 + bld r5,4 + bst r6,2 + bld r5,3 + bst r7,4 + bld r6,2 + bst r5,7 + bld r7,4 + bst r6,3 + bld r5,7 + bst r6,4 + bld r6,3 + bst r5,5 + bld r6,4 + bst r0,0 + bld r5,5 + bst r4,6 + bld r0,0 + bst r7,1 + bld r4,6 + bst r0,0 + bld r7,1 + bst r8,0 + bld r0,0 + bst r10,0 + bld r8,0 + bst r10,4 + bld r10,0 + bst r10,5 + bld r10,4 + bst r9,5 + bld r10,5 + bst r9,3 + bld r9,5 + bst r11,2 + bld r9,3 + bst r8,6 + bld r11,2 + bst r8,1 + bld r8,6 + bst r9,0 + bld r8,1 + bst r10,2 + bld r9,0 + bst r8,4 + bld r10,2 + bst r10,1 + bld r8,4 + bst r9,4 + bld r10,1 + bst r10,3 + bld r9,4 + bst r11,4 + bld r10,3 + bst r10,7 + bld r11,4 + bst r11,5 + bld r10,7 + bst r9,7 + bld r11,5 + bst r11,3 + bld r9,7 + bst r11,6 + bld r11,3 + bst r8,7 + bld r11,6 + bst r11,1 + bld r8,7 + bst r9,6 + bld r11,1 + bst r8,3 + bld r9,6 + bst r11,0 + bld r8,3 + bst r10,6 + bld r11,0 + bst r8,5 + bld r10,6 + bst r9,1 + bld r8,5 + bst r9,2 + bld r9,1 + bst r8,2 + bld r9,2 + bst r0,0 + bld r8,2 + bst r12,0 + bld r0,0 + bst r15,0 + bld r12,0 + bst r15,6 + bld r15,0 + bst r13,7 + bld r15,6 + bst r12,3 + bld r13,7 + bst r0,0 + bld r12,3 + bst r12,1 + bld r0,0 + bst r14,0 + bld r12,1 + bst r15,4 + bld r14,0 + bst r15,7 + bld r15,4 + bst r12,7 + bld r15,7 + bst r0,0 + bld r12,7 + bst r12,2 + bld r0,0 + bst r13,0 + bld r12,2 + bst r15,2 + bld r13,0 + bst r13,6 + bld r15,2 + bst r13,3 + bld r13,6 + bst r0,0 + bld r13,3 + bst r12,4 + bld r0,0 + bst r15,1 + bld r12,4 + bst r14,6 + bld r15,1 + bst r13,5 + bld r14,6 + bst r14,3 + bld r13,5 + bst r0,0 + bld r14,3 + bst r12,5 + bld r0,0 + bst r14,1 + bld r12,5 + bst r14,4 + bld r14,1 + bst r15,5 + bld r14,4 + bst r14,7 + bld r15,5 + bst r0,0 + bld r14,7 + bst r12,6 + bld r0,0 + bst r13,1 + bld r12,6 + bst r14,2 + bld r13,1 + bst r13,4 + bld r14,2 + bst r15,3 + bld r13,4 + bst r0,0 + bld r15,3 + movw r18,r12 + movw r20,r14 + movw r12,r22 + movw r14,r2 + movw r22,r18 + movw r2,r20 + and r18,r4 + and r19,r5 + and r20,r6 + and r21,r7 + eor r8,r18 + eor r9,r19 + eor r10,r20 + eor r11,r21 + com r12 + com r13 + com r14 + com r15 + eor r4,r12 + eor r5,r13 + eor r6,r14 + eor r7,r15 + eor r12,r8 + eor r13,r9 + eor r14,r10 + eor r15,r11 + mov r0,r22 + or r0,r4 + eor r8,r0 + mov r0,r23 + or r0,r5 + eor r9,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r12 + eor r22,r0 + mov r0,r5 + and r0,r13 + eor r23,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r22 + and r0,r8 + eor r4,r0 + mov r0,r23 + and r0,r9 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + ret +867: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + ldd r26,Y+17 + ldd r27,Y+18 + bst r22,0 + bld r18,0 + bst r4,0 + bld r18,1 + bst r8,0 + bld r18,2 + bst r12,0 + bld r18,3 + bst r22,1 + bld r18,4 + bst r4,1 + bld r18,5 + bst r8,1 + bld r18,6 + bst r12,1 + bld r18,7 + bst r22,2 + bld r19,0 + bst r4,2 + bld r19,1 + bst r8,2 + bld r19,2 + bst r12,2 + bld r19,3 + bst r22,3 + bld r19,4 + bst r4,3 + bld r19,5 + bst r8,3 + bld r19,6 + bst r12,3 + bld r19,7 + bst r22,4 + bld r20,0 + bst r4,4 + bld r20,1 + bst r8,4 + bld r20,2 + bst r12,4 + bld r20,3 + bst r22,5 + bld r20,4 + bst r4,5 + bld r20,5 + bst r8,5 + bld r20,6 + bst r12,5 + bld r20,7 + bst r22,6 + bld r21,0 + bst r4,6 + bld r21,1 + bst r8,6 + bld r21,2 + bst r12,6 + bld r21,3 + bst r22,7 + bld r21,4 + bst r4,7 + bld r21,5 + bst r8,7 + bld r21,6 + bst r12,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r23,0 + bld r18,0 + bst r5,0 + bld r18,1 + bst r9,0 + bld r18,2 + bst r13,0 + bld r18,3 + bst r23,1 + bld r18,4 + bst r5,1 + bld r18,5 + bst r9,1 + bld r18,6 + bst r13,1 + bld r18,7 + bst r23,2 + bld r19,0 + bst r5,2 + bld r19,1 + bst r9,2 + bld r19,2 + bst r13,2 + bld r19,3 + bst r23,3 + bld r19,4 + bst r5,3 + bld r19,5 + bst r9,3 + bld r19,6 + bst r13,3 + bld r19,7 + bst r23,4 + bld r20,0 + bst r5,4 + bld r20,1 + bst r9,4 + bld r20,2 + bst r13,4 + bld r20,3 + bst r23,5 + bld r20,4 + bst r5,5 + bld r20,5 + bst r9,5 + bld r20,6 + bst r13,5 + bld r20,7 + bst r23,6 + bld r21,0 + bst r5,6 + bld r21,1 + bst r9,6 + bld r21,2 + bst r13,6 + bld r21,3 + bst r23,7 + bld r21,4 + bst r5,7 + bld r21,5 + bst r9,7 + bld r21,6 + bst r13,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r2,0 + bld r18,0 + bst r6,0 + bld r18,1 + bst r10,0 + bld r18,2 + bst r14,0 + bld r18,3 + bst r2,1 + bld r18,4 + bst r6,1 + bld r18,5 + bst r10,1 + bld r18,6 + bst r14,1 + bld r18,7 + bst r2,2 + bld r19,0 + bst r6,2 + bld r19,1 + bst r10,2 + bld r19,2 + bst r14,2 + bld r19,3 + bst r2,3 + bld r19,4 + bst r6,3 + bld r19,5 + bst r10,3 + bld r19,6 + bst r14,3 + bld r19,7 + bst r2,4 + bld r20,0 + bst r6,4 + bld r20,1 + bst r10,4 + bld r20,2 + bst r14,4 + bld r20,3 + bst r2,5 + bld r20,4 + bst r6,5 + bld r20,5 + bst r10,5 + bld r20,6 + bst r14,5 + bld r20,7 + bst r2,6 + bld r21,0 + bst r6,6 + bld r21,1 + bst r10,6 + bld r21,2 + bst r14,6 + bld r21,3 + bst r2,7 + bld r21,4 + bst r6,7 + bld r21,5 + bst r10,7 + bld r21,6 + bst r14,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + bst r3,0 + bld r18,0 + bst r7,0 + bld r18,1 + bst r11,0 + bld r18,2 + bst r15,0 + bld r18,3 + bst r3,1 + bld r18,4 + bst r7,1 + bld r18,5 + bst r11,1 + bld r18,6 + bst r15,1 + bld r18,7 + bst r3,2 + bld r19,0 + bst r7,2 + bld r19,1 + bst r11,2 + bld r19,2 + bst r15,2 + bld r19,3 + bst r3,3 + bld r19,4 + bst r7,3 + bld r19,5 + bst r11,3 + bld r19,6 + bst r15,3 + bld r19,7 + bst r3,4 + bld r20,0 + bst r7,4 + bld r20,1 + bst r11,4 + bld r20,2 + bst r15,4 + bld r20,3 + bst r3,5 + bld r20,4 + bst r7,5 + bld r20,5 + bst r11,5 + bld r20,6 + bst r15,5 + bld r20,7 + bst r3,6 + bld r21,0 + bst r7,6 + bld r21,1 + bst r11,6 + bld r21,2 + bst r15,6 + bld r21,3 + bst r3,7 + bld r21,4 + bst r7,7 + bld r21,5 + bst r11,7 + bld r21,6 + bst r15,7 + bld r21,7 + st X+,r18 + st X+,r19 + st X+,r20 + st X+,r21 + adiw r28,18 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128n_decrypt, .-gift128n_decrypt + + .text +.global gift128t_encrypt + .type gift128t_encrypt, @function +gift128t_encrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e + subi r28,80 + sbci r29,0 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 100 + ld r2,Z + ldd r3,Z+1 + ldd r4,Z+2 + ldd r5,Z+3 + ldd r6,Z+4 + ldd r7,Z+5 + ldd r8,Z+6 + ldd r9,Z+7 + ldd r10,Z+8 + ldd r11,Z+9 + ldd r12,Z+10 + ldd r13,Z+11 + ldd r14,Z+12 + ldd r15,Z+13 + ldd r24,Z+14 + ldd r25,Z+15 + movw r30,r28 + adiw r30,1 + st Z+,r2 + st Z+,r3 + st Z+,r4 + st Z+,r5 + st Z+,r6 + st Z+,r7 + st Z+,r8 + st Z+,r9 + st Z+,r10 + st Z+,r11 + st Z+,r12 + st Z+,r13 + st Z+,r14 + st Z+,r15 + st Z+,r24 + st Z+,r25 + ldi r19,4 +35: + st Z+,r6 + st Z+,r7 + st Z+,r8 + st Z+,r9 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + lsl r2 + rol r3 + adc r2,r1 + mov r0,r1 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + or r5,r0 + st Z+,r2 + st Z+,r3 + st Z+,r4 + st Z+,r5 + mov r0,r2 + mov r2,r6 + mov r6,r0 + mov r0,r3 + mov r3,r7 + mov r7,r0 + mov r0,r4 + mov r4,r8 + mov r8,r0 + mov r0,r5 + mov r5,r9 + mov r9,r0 + st Z+,r14 + st Z+,r15 + st Z+,r24 + st Z+,r25 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + mov r0,r1 + lsr r13 + ror r12 + ror r0 + lsr r13 + ror r12 + ror r0 + or r13,r0 + st Z+,r10 + st Z+,r11 + st Z+,r12 + st Z+,r13 + mov r0,r10 + mov r10,r14 + mov r14,r0 + mov r0,r11 + mov r11,r15 + mov r15,r0 + mov r0,r12 + mov r12,r24 + mov r24,r0 + mov r0,r13 + mov r13,r25 + mov r25,r0 + dec r19 + breq 5117f + rjmp 35b +5117: + subi r30,80 + sbc r31,r1 + ldi r19,2 +121: + ld r2,Z + ldd r3,Z+1 + ldd r4,Z+2 + ldd r5,Z+3 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,85 + mov r21,r1 + andi r22,85 + mov r23,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,15 + mov r21,r1 + andi r22,15 + mov r23,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + movw r20,r22 + mov r22,r1 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + andi r20,51 + andi r21,51 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + movw r22,r20 + mov r20,r1 + mov r21,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + st Z,r5 + std Z+1,r3 + std Z+2,r4 + std Z+3,r2 + ldd r2,Z+4 + ldd r3,Z+5 + ldd r4,Z+6 + ldd r5,Z+7 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,85 + mov r21,r1 + andi r22,85 + mov r23,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,15 + mov r21,r1 + andi r22,15 + mov r23,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + movw r20,r22 + mov r22,r1 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + andi r20,51 + andi r21,51 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + movw r22,r20 + mov r20,r1 + mov r21,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + std Z+4,r5 + std Z+5,r3 + std Z+6,r4 + std Z+7,r2 + ldd r2,Z+8 + ldd r3,Z+9 + ldd r4,Z+10 + ldd r5,Z+11 + movw r20,r2 + movw r22,r4 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,17 + andi r21,17 + andi r22,17 + andi r23,17 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r0,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r0 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,3 + andi r21,3 + andi r22,3 + andi r23,3 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r0 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,15 + mov r21,r1 + andi r22,15 + mov r23,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + std Z+8,r5 + std Z+9,r3 + std Z+10,r4 + std Z+11,r2 + ldd r2,Z+12 + ldd r3,Z+13 + ldd r4,Z+14 + ldd r5,Z+15 + movw r20,r2 + movw r22,r4 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,17 + andi r21,17 + andi r22,17 + andi r23,17 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r0,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r0 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,3 + andi r21,3 + andi r22,3 + andi r23,3 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r0 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,15 + mov r21,r1 + andi r22,15 + mov r23,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + std Z+12,r5 + std Z+13,r3 + std Z+14,r4 + std Z+15,r2 + ldd r2,Z+16 + ldd r3,Z+17 + ldd r4,Z+18 + ldd r5,Z+19 + movw r20,r2 + movw r22,r4 + mov r0,r1 + lsl r21 + rol r22 + rol r23 + rol r0 + movw r20,r22 + mov r22,r0 + mov r23,r1 + eor r20,r2 + eor r21,r3 + andi r20,170 + andi r21,170 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + mov r0,r1 + lsr r22 + ror r21 + ror r20 + ror r0 + movw r22,r20 + mov r21,r0 + mov r20,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + movw r20,r22 + mov r22,r1 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + andi r20,51 + andi r21,51 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + movw r22,r20 + mov r20,r1 + mov r21,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + andi r20,240 + andi r21,240 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + std Z+16,r5 + std Z+17,r3 + std Z+18,r4 + std Z+19,r2 + ldd r2,Z+20 + ldd r3,Z+21 + ldd r4,Z+22 + ldd r5,Z+23 + movw r20,r2 + movw r22,r4 + mov r0,r1 + lsl r21 + rol r22 + rol r23 + rol r0 + movw r20,r22 + mov r22,r0 + mov r23,r1 + eor r20,r2 + eor r21,r3 + andi r20,170 + andi r21,170 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + mov r0,r1 + lsr r22 + ror r21 + ror r20 + ror r0 + movw r22,r20 + mov r21,r0 + mov r20,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + movw r20,r22 + mov r22,r1 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + andi r20,51 + andi r21,51 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + movw r22,r20 + mov r20,r1 + mov r21,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + andi r20,240 + andi r21,240 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + std Z+20,r5 + std Z+21,r3 + std Z+22,r4 + std Z+23,r2 + ldd r2,Z+24 + ldd r3,Z+25 + ldd r4,Z+26 + ldd r5,Z+27 + movw r20,r2 + movw r22,r4 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,10 + andi r21,10 + andi r22,10 + andi r23,10 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r0,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r0 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,204 + mov r21,r1 + andi r22,204 + mov r23,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r0 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + andi r20,240 + andi r21,240 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + std Z+24,r5 + std Z+25,r3 + std Z+26,r4 + std Z+27,r2 + ldd r2,Z+28 + ldd r3,Z+29 + ldd r4,Z+30 + ldd r5,Z+31 + movw r20,r2 + movw r22,r4 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,10 + andi r21,10 + andi r22,10 + andi r23,10 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r0,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + lsl r20 + rol r21 + rol r22 + rol r23 + rol r0 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r0 + eor r20,r2 + eor r21,r3 + eor r22,r4 + eor r23,r5 + andi r20,204 + mov r21,r1 + andi r22,204 + mov r23,r1 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + lsr r23 + ror r22 + ror r21 + ror r20 + ror r0 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r0 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + movw r20,r2 + movw r22,r4 + mov r20,r21 + mov r21,r22 + mov r22,r23 + mov r23,r1 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r2 + eor r21,r3 + andi r20,240 + andi r21,240 + eor r2,r20 + eor r3,r21 + mov r22,r1 + mov r23,r1 + mov r23,r22 + mov r22,r21 + mov r21,r20 + mov r20,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + std Z+28,r5 + std Z+29,r3 + std Z+30,r4 + std Z+31,r2 + dec r19 + breq 1270f + adiw r30,40 + rjmp 121b +1270: + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r2,0 + bst r20,1 + bld r6,0 + bst r20,2 + bld r10,0 + bst r20,3 + bld r14,0 + bst r20,4 + bld r2,1 + bst r20,5 + bld r6,1 + bst r20,6 + bld r10,1 + bst r20,7 + bld r14,1 + bst r21,0 + bld r2,2 + bst r21,1 + bld r6,2 + bst r21,2 + bld r10,2 + bst r21,3 + bld r14,2 + bst r21,4 + bld r2,3 + bst r21,5 + bld r6,3 + bst r21,6 + bld r10,3 + bst r21,7 + bld r14,3 + bst r22,0 + bld r2,4 + bst r22,1 + bld r6,4 + bst r22,2 + bld r10,4 + bst r22,3 + bld r14,4 + bst r22,4 + bld r2,5 + bst r22,5 + bld r6,5 + bst r22,6 + bld r10,5 + bst r22,7 + bld r14,5 + bst r23,0 + bld r2,6 + bst r23,1 + bld r6,6 + bst r23,2 + bld r10,6 + bst r23,3 + bld r14,6 + bst r23,4 + bld r2,7 + bst r23,5 + bld r6,7 + bst r23,6 + bld r10,7 + bst r23,7 + bld r14,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r3,0 + bst r20,1 + bld r7,0 + bst r20,2 + bld r11,0 + bst r20,3 + bld r15,0 + bst r20,4 + bld r3,1 + bst r20,5 + bld r7,1 + bst r20,6 + bld r11,1 + bst r20,7 + bld r15,1 + bst r21,0 + bld r3,2 + bst r21,1 + bld r7,2 + bst r21,2 + bld r11,2 + bst r21,3 + bld r15,2 + bst r21,4 + bld r3,3 + bst r21,5 + bld r7,3 + bst r21,6 + bld r11,3 + bst r21,7 + bld r15,3 + bst r22,0 + bld r3,4 + bst r22,1 + bld r7,4 + bst r22,2 + bld r11,4 + bst r22,3 + bld r15,4 + bst r22,4 + bld r3,5 + bst r22,5 + bld r7,5 + bst r22,6 + bld r11,5 + bst r22,7 + bld r15,5 + bst r23,0 + bld r3,6 + bst r23,1 + bld r7,6 + bst r23,2 + bld r11,6 + bst r23,3 + bld r15,6 + bst r23,4 + bld r3,7 + bst r23,5 + bld r7,7 + bst r23,6 + bld r11,7 + bst r23,7 + bld r15,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r4,0 + bst r20,1 + bld r8,0 + bst r20,2 + bld r12,0 + bst r20,3 + bld r24,0 + bst r20,4 + bld r4,1 + bst r20,5 + bld r8,1 + bst r20,6 + bld r12,1 + bst r20,7 + bld r24,1 + bst r21,0 + bld r4,2 + bst r21,1 + bld r8,2 + bst r21,2 + bld r12,2 + bst r21,3 + bld r24,2 + bst r21,4 + bld r4,3 + bst r21,5 + bld r8,3 + bst r21,6 + bld r12,3 + bst r21,7 + bld r24,3 + bst r22,0 + bld r4,4 + bst r22,1 + bld r8,4 + bst r22,2 + bld r12,4 + bst r22,3 + bld r24,4 + bst r22,4 + bld r4,5 + bst r22,5 + bld r8,5 + bst r22,6 + bld r12,5 + bst r22,7 + bld r24,5 + bst r23,0 + bld r4,6 + bst r23,1 + bld r8,6 + bst r23,2 + bld r12,6 + bst r23,3 + bld r24,6 + bst r23,4 + bld r4,7 + bst r23,5 + bld r8,7 + bst r23,6 + bld r12,7 + bst r23,7 + bld r24,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r5,0 + bst r20,1 + bld r9,0 + bst r20,2 + bld r13,0 + bst r20,3 + bld r25,0 + bst r20,4 + bld r5,1 + bst r20,5 + bld r9,1 + bst r20,6 + bld r13,1 + bst r20,7 + bld r25,1 + bst r21,0 + bld r5,2 + bst r21,1 + bld r9,2 + bst r21,2 + bld r13,2 + bst r21,3 + bld r25,2 + bst r21,4 + bld r5,3 + bst r21,5 + bld r9,3 + bst r21,6 + bld r13,3 + bst r21,7 + bld r25,3 + bst r22,0 + bld r5,4 + bst r22,1 + bld r9,4 + bst r22,2 + bld r13,4 + bst r22,3 + bld r25,4 + bst r22,4 + bld r5,5 + bst r22,5 + bld r9,5 + bst r22,6 + bld r13,5 + bst r22,7 + bld r25,5 + bst r23,0 + bld r5,6 + bst r23,1 + bld r9,6 + bst r23,2 + bld r13,6 + bst r23,3 + bld r25,6 + bst r23,4 + bld r5,7 + bst r23,5 + bld r9,7 + bst r23,6 + bld r13,7 + bst r23,7 + bld r25,7 + movw r26,r28 + adiw r26,1 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + rcall 1613f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2351f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,20 + adiw r26,40 + rcall 1613f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2351f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,40 + sbiw r26,40 + rcall 1613f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2351f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,60 + adiw r26,40 + rcall 1613f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2351f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,80 + sbiw r26,40 + rcall 1613f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2351f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,100 + adiw r26,40 + rcall 1613f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + rcall 2351f + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r19,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r19 +#endif + ldi r30,120 + sbiw r26,40 + rcall 1613f + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rcall 1613f + rjmp 2826f +1613: + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + movw r20,r6 + movw r22,r8 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,204 + andi r21,204 + andi r22,204 + andi r23,204 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + ldi r19,51 + and r6,r19 + and r7,r19 + and r8,r19 + and r9,r19 + or r6,r20 + or r7,r21 + or r8,r22 + or r9,r23 + movw r20,r10 + movw r22,r12 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,238 + andi r21,238 + andi r22,238 + andi r23,238 + lsr r13 + ror r12 + ror r11 + ror r10 + lsr r13 + ror r12 + ror r11 + ror r10 + lsr r13 + ror r12 + ror r11 + ror r10 + ldi r17,17 + and r10,r17 + and r11,r17 + and r12,r17 + and r13,r17 + or r10,r20 + or r11,r21 + or r12,r22 + or r13,r23 + movw r20,r14 + movw r22,r24 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + andi r20,136 + andi r21,136 + andi r22,136 + andi r23,136 + lsr r25 + ror r24 + ror r15 + ror r14 + ldi r16,119 + and r14,r16 + and r15,r16 + andi r24,119 + andi r25,119 + or r14,r20 + or r15,r21 + or r24,r22 + or r25,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r24 + and r0,r12 + eor r8,r0 + mov r0,r25 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r8 + and r0,r4 + eor r24,r0 + mov r0,r9 + and r0,r5 + eor r25,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r24 + or r0,r8 + eor r12,r0 + mov r0,r25 + or r0,r9 + eor r13,r0 + eor r2,r10 + eor r3,r11 + eor r4,r12 + eor r5,r13 + eor r6,r2 + eor r7,r3 + eor r8,r4 + eor r9,r5 + com r2 + com r3 + com r4 + com r5 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r24 + and r0,r8 + eor r12,r0 + mov r0,r25 + and r0,r9 + eor r13,r0 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + mov r0,r1 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + lsr r5 + ror r4 + ror r0 + or r5,r0 + mov r0,r7 + mov r7,r6 + mov r6,r0 + mov r0,r9 + mov r9,r8 + mov r8,r0 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r10 + rol r11 + adc r10,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + lsl r12 + rol r13 + adc r12,r1 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r14,r20 + eor r15,r21 + eor r24,r22 + eor r25,r23 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + movw r20,r6 + movw r22,r8 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r6 + eor r21,r7 + eor r22,r8 + eor r23,r9 + andi r20,85 + andi r21,85 + andi r22,85 + andi r23,85 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + mov r0,r12 + mov r12,r10 + mov r10,r0 + mov r0,r13 + mov r13,r11 + mov r11,r0 + movw r20,r10 + movw r22,r12 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r10 + eor r21,r11 + andi r20,85 + andi r21,85 + eor r10,r20 + eor r11,r21 + mov r22,r1 + mov r23,r1 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + mov r0,r24 + mov r24,r14 + mov r14,r0 + mov r0,r25 + mov r25,r15 + mov r15,r0 + movw r20,r24 + lsr r21 + ror r20 + eor r20,r24 + eor r21,r25 + andi r20,85 + andi r21,85 + eor r24,r20 + eor r25,r21 + lsl r20 + rol r21 + eor r24,r20 + eor r25,r21 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + mov r0,r14 + and r0,r10 + eor r6,r0 + mov r0,r15 + and r0,r11 + eor r7,r0 + mov r0,r24 + and r0,r12 + eor r8,r0 + mov r0,r25 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r2 + eor r14,r0 + mov r0,r7 + and r0,r3 + eor r15,r0 + mov r0,r8 + and r0,r4 + eor r24,r0 + mov r0,r9 + and r0,r5 + eor r25,r0 + mov r0,r14 + or r0,r6 + eor r10,r0 + mov r0,r15 + or r0,r7 + eor r11,r0 + mov r0,r24 + or r0,r8 + eor r12,r0 + mov r0,r25 + or r0,r9 + eor r13,r0 + eor r2,r10 + eor r3,r11 + eor r4,r12 + eor r5,r13 + eor r6,r2 + eor r7,r3 + eor r8,r4 + eor r9,r5 + com r2 + com r3 + com r4 + com r5 + mov r0,r14 + and r0,r6 + eor r10,r0 + mov r0,r15 + and r0,r7 + eor r11,r0 + mov r0,r24 + and r0,r8 + eor r12,r0 + mov r0,r25 + and r0,r9 + eor r13,r0 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + lsl r4 + adc r4,r1 + lsl r4 + adc r4,r1 + lsl r5 + adc r5,r1 + lsl r5 + adc r5,r1 + swap r6 + swap r7 + swap r8 + swap r9 + mov r0,r1 + lsr r10 + ror r0 + lsr r10 + ror r0 + or r10,r0 + mov r0,r1 + lsr r11 + ror r0 + lsr r11 + ror r0 + or r11,r0 + mov r0,r1 + lsr r12 + ror r0 + lsr r12 + ror r0 + or r12,r0 + mov r0,r1 + lsr r13 + ror r0 + lsr r13 + ror r0 + or r13,r0 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r14,r20 + eor r15,r21 + eor r24,r22 + eor r25,r23 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + com r14 + com r15 + com r24 + com r25 + mov r0,r2 + and r0,r6 + eor r10,r0 + mov r0,r3 + and r0,r7 + eor r11,r0 + mov r0,r4 + and r0,r8 + eor r12,r0 + mov r0,r5 + and r0,r9 + eor r13,r0 + mov r0,r8 + mov r8,r6 + mov r6,r0 + mov r0,r9 + mov r9,r7 + mov r7,r0 + mov r0,r10 + mov r10,r11 + mov r11,r12 + mov r12,r13 + mov r13,r0 + mov r0,r25 + mov r25,r24 + mov r24,r15 + mov r15,r14 + mov r14,r0 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r21,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r21,Z +#elif defined(__AVR_TINY__) + ld r21,Z +#else + lpm + mov r21,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r22,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r22,Z +#elif defined(__AVR_TINY__) + ld r22,Z +#else + lpm + mov r22,r0 +#endif + inc r30 +#if defined(RAMPZ) + elpm r23,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r23,Z +#elif defined(__AVR_TINY__) + ld r23,Z +#else + lpm + mov r23,r0 +#endif + inc r30 + eor r2,r20 + eor r3,r21 + eor r4,r22 + eor r5,r23 + eor r2,r14 + eor r3,r15 + eor r4,r24 + eor r5,r25 + eor r14,r2 + eor r15,r3 + eor r24,r4 + eor r25,r5 + eor r2,r14 + eor r3,r15 + eor r4,r24 + eor r5,r25 + ret +2351: + movw r30,r26 + sbiw r30,40 + push r5 + push r4 + push r3 + push r2 + push r9 + push r8 + push r7 + push r6 + ld r2,Z + ldd r3,Z+1 + ldd r4,Z+2 + ldd r5,Z+3 + ldd r26,Z+4 + ldd r27,Z+5 + ldd r16,Z+6 + ldd r17,Z+7 + movw r20,r26 + movw r22,r16 + movw r20,r22 + mov r22,r1 + mov r23,r1 + eor r20,r26 + eor r21,r27 + andi r20,51 + andi r21,51 + eor r26,r20 + eor r27,r21 + mov r22,r1 + mov r23,r1 + movw r22,r20 + mov r20,r1 + mov r21,r1 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,68 + andi r21,68 + andi r22,85 + andi r23,85 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + st Z,r26 + std Z+1,r27 + std Z+2,r16 + std Z+3,r17 + movw r20,r2 + movw r22,r4 + andi r20,51 + andi r21,51 + andi r22,51 + andi r23,51 + ldi r19,204 + and r2,r19 + and r3,r19 + and r4,r19 + and r5,r19 + or r4,r23 + or r5,r20 + or r2,r21 + or r3,r22 + movw r20,r4 + movw r22,r2 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r4 + eor r21,r5 + eor r22,r2 + eor r23,r3 + mov r20,r1 + andi r21,17 + andi r22,85 + andi r23,85 + eor r4,r20 + eor r5,r21 + eor r2,r22 + eor r3,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r4,r20 + eor r5,r21 + eor r2,r22 + eor r3,r23 + std Z+4,r4 + std Z+5,r5 + std Z+6,r2 + std Z+7,r3 + ldd r2,Z+8 + ldd r3,Z+9 + ldd r4,Z+10 + ldd r5,Z+11 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r16,Z+14 + ldd r17,Z+15 + lsl r26 + adc r26,r1 + lsl r26 + adc r26,r1 + swap r27 + lsl r16 + adc r16,r1 + lsl r16 + adc r16,r1 + swap r17 + std Z+8,r26 + std Z+9,r27 + std Z+10,r16 + std Z+11,r17 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r2 + adc r2,r1 + lsl r3 + adc r3,r1 + lsl r3 + adc r3,r1 + lsl r4 + adc r4,r1 + lsl r4 + adc r4,r1 + lsl r4 + adc r4,r1 + lsl r5 + adc r5,r1 + lsl r5 + adc r5,r1 + std Z+12,r2 + std Z+13,r3 + std Z+14,r4 + std Z+15,r5 + ldd r2,Z+16 + ldd r3,Z+17 + ldd r4,Z+18 + ldd r5,Z+19 + ldd r26,Z+20 + ldd r27,Z+21 + ldd r16,Z+22 + ldd r17,Z+23 + movw r20,r26 + movw r22,r16 + andi r20,170 + andi r21,170 + andi r22,170 + andi r23,170 + andi r26,85 + andi r27,85 + andi r16,85 + andi r17,85 + or r26,r21 + or r27,r22 + or r16,r23 + or r17,r20 + std Z+16,r16 + std Z+17,r17 + std Z+18,r26 + std Z+19,r27 + movw r20,r2 + movw r22,r4 + andi r20,85 + andi r21,85 + andi r22,85 + andi r23,85 + ldi r19,170 + and r2,r19 + and r3,r19 + and r4,r19 + and r5,r19 + lsl r2 + rol r3 + rol r4 + rol r5 + adc r2,r1 + lsl r2 + rol r3 + rol r4 + rol r5 + adc r2,r1 + lsl r2 + rol r3 + rol r4 + rol r5 + adc r2,r1 + lsl r2 + rol r3 + rol r4 + rol r5 + adc r2,r1 + or r2,r20 + or r3,r21 + or r4,r22 + or r5,r23 + std Z+20,r5 + std Z+21,r2 + std Z+22,r3 + std Z+23,r4 + ldd r2,Z+24 + ldd r3,Z+25 + ldd r4,Z+26 + ldd r5,Z+27 + ldd r26,Z+28 + ldd r27,Z+29 + ldd r16,Z+30 + ldd r17,Z+31 + movw r20,r26 + movw r22,r16 + lsr r23 + ror r22 + ror r21 + ror r20 + lsr r23 + ror r22 + ror r21 + ror r20 + eor r20,r26 + eor r21,r27 + eor r22,r16 + eor r23,r17 + andi r20,3 + andi r21,3 + andi r22,3 + andi r23,3 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + lsl r20 + rol r21 + rol r22 + rol r23 + lsl r20 + rol r21 + rol r22 + rol r23 + eor r26,r20 + eor r27,r21 + eor r16,r22 + eor r17,r23 + movw r20,r26 + movw r22,r16 + lsr r23 + ror r22 + ror r21 + ror r20 + andi r20,120 + andi r21,120 + andi r22,120 + andi r23,120 + movw r6,r20 + movw r8,r22 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + lsr r9 + ror r8 + ror r7 + ror r6 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ldi r19,8 + and r6,r19 + and r7,r19 + and r8,r19 + and r9,r19 + eor r20,r6 + eor r21,r7 + eor r22,r8 + eor r23,r9 + lsl r6 + rol r7 + rol r8 + rol r9 + lsl r6 + rol r7 + rol r8 + rol r9 + lsl r6 + rol r7 + rol r8 + rol r9 + lsl r6 + rol r7 + rol r8 + rol r9 + eor r20,r6 + eor r21,r7 + eor r22,r8 + eor r23,r9 + andi r26,15 + andi r27,15 + andi r16,15 + andi r17,15 + or r26,r20 + or r27,r21 + or r16,r22 + or r17,r23 + std Z+24,r26 + std Z+25,r27 + std Z+26,r16 + std Z+27,r17 + movw r20,r4 + lsr r21 + ror r20 + lsr r21 + ror r20 + andi r20,48 + andi r21,48 + movw r26,r2 + movw r16,r4 + andi r26,1 + andi r27,1 + andi r16,1 + andi r17,1 + lsl r26 + rol r27 + rol r16 + rol r17 + lsl r26 + rol r27 + rol r16 + rol r17 + lsl r26 + rol r27 + rol r16 + rol r17 + or r26,r20 + or r27,r21 + movw r20,r4 + lsl r20 + rol r21 + lsl r20 + rol r21 + andi r20,192 + andi r21,192 + or r26,r20 + or r27,r21 + movw r20,r2 + andi r20,224 + andi r21,224 + lsr r21 + ror r20 + or r16,r20 + or r17,r21 + movw r20,r2 + movw r22,r4 + lsr r23 + ror r22 + ror r21 + ror r20 + andi r20,7 + andi r21,7 + andi r22,7 + andi r23,7 + or r26,r20 + or r27,r21 + or r16,r22 + or r17,r23 + ldi r19,16 + and r2,r19 + and r3,r19 + lsl r2 + rol r3 + lsl r2 + rol r3 + lsl r2 + rol r3 + or r16,r2 + or r17,r3 + std Z+28,r26 + std Z+29,r27 + std Z+30,r16 + std Z+31,r17 + ldd r2,Z+32 + ldd r3,Z+33 + ldd r4,Z+34 + ldd r5,Z+35 + ldd r26,Z+36 + ldd r27,Z+37 + ldd r16,Z+38 + ldd r17,Z+39 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Z+32,r27 + std Z+33,r26 + std Z+34,r16 + std Z+35,r17 + mov r0,r1 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + lsr r3 + ror r2 + ror r0 + or r3,r0 + mov r0,r4 + mov r4,r5 + mov r5,r0 + lsl r4 + rol r5 + adc r4,r1 + lsl r4 + rol r5 + adc r4,r1 + std Z+36,r2 + std Z+37,r3 + std Z+38,r4 + std Z+39,r5 + pop r6 + pop r7 + pop r8 + pop r9 + pop r2 + pop r3 + pop r4 + pop r5 + movw r26,r30 + ret +2826: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + subi r28,175 + sbci r29,255 + ld r26,Y+ + ld r27,Y + subi r28,82 + sbc r29,r1 + bst r2,0 + bld r20,0 + bst r6,0 + bld r20,1 + bst r10,0 + bld r20,2 + bst r14,0 + bld r20,3 + bst r2,1 + bld r20,4 + bst r6,1 + bld r20,5 + bst r10,1 + bld r20,6 + bst r14,1 + bld r20,7 + bst r2,2 + bld r21,0 + bst r6,2 + bld r21,1 + bst r10,2 + bld r21,2 + bst r14,2 + bld r21,3 + bst r2,3 + bld r21,4 + bst r6,3 + bld r21,5 + bst r10,3 + bld r21,6 + bst r14,3 + bld r21,7 + bst r2,4 + bld r22,0 + bst r6,4 + bld r22,1 + bst r10,4 + bld r22,2 + bst r14,4 + bld r22,3 + bst r2,5 + bld r22,4 + bst r6,5 + bld r22,5 + bst r10,5 + bld r22,6 + bst r14,5 + bld r22,7 + bst r2,6 + bld r23,0 + bst r6,6 + bld r23,1 + bst r10,6 + bld r23,2 + bst r14,6 + bld r23,3 + bst r2,7 + bld r23,4 + bst r6,7 + bld r23,5 + bst r10,7 + bld r23,6 + bst r14,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r3,0 + bld r20,0 + bst r7,0 + bld r20,1 + bst r11,0 + bld r20,2 + bst r15,0 + bld r20,3 + bst r3,1 + bld r20,4 + bst r7,1 + bld r20,5 + bst r11,1 + bld r20,6 + bst r15,1 + bld r20,7 + bst r3,2 + bld r21,0 + bst r7,2 + bld r21,1 + bst r11,2 + bld r21,2 + bst r15,2 + bld r21,3 + bst r3,3 + bld r21,4 + bst r7,3 + bld r21,5 + bst r11,3 + bld r21,6 + bst r15,3 + bld r21,7 + bst r3,4 + bld r22,0 + bst r7,4 + bld r22,1 + bst r11,4 + bld r22,2 + bst r15,4 + bld r22,3 + bst r3,5 + bld r22,4 + bst r7,5 + bld r22,5 + bst r11,5 + bld r22,6 + bst r15,5 + bld r22,7 + bst r3,6 + bld r23,0 + bst r7,6 + bld r23,1 + bst r11,6 + bld r23,2 + bst r15,6 + bld r23,3 + bst r3,7 + bld r23,4 + bst r7,7 + bld r23,5 + bst r11,7 + bld r23,6 + bst r15,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r4,0 + bld r20,0 + bst r8,0 + bld r20,1 + bst r12,0 + bld r20,2 + bst r24,0 + bld r20,3 + bst r4,1 + bld r20,4 + bst r8,1 + bld r20,5 + bst r12,1 + bld r20,6 + bst r24,1 + bld r20,7 + bst r4,2 + bld r21,0 + bst r8,2 + bld r21,1 + bst r12,2 + bld r21,2 + bst r24,2 + bld r21,3 + bst r4,3 + bld r21,4 + bst r8,3 + bld r21,5 + bst r12,3 + bld r21,6 + bst r24,3 + bld r21,7 + bst r4,4 + bld r22,0 + bst r8,4 + bld r22,1 + bst r12,4 + bld r22,2 + bst r24,4 + bld r22,3 + bst r4,5 + bld r22,4 + bst r8,5 + bld r22,5 + bst r12,5 + bld r22,6 + bst r24,5 + bld r22,7 + bst r4,6 + bld r23,0 + bst r8,6 + bld r23,1 + bst r12,6 + bld r23,2 + bst r24,6 + bld r23,3 + bst r4,7 + bld r23,4 + bst r8,7 + bld r23,5 + bst r12,7 + bld r23,6 + bst r24,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r5,0 + bld r20,0 + bst r9,0 + bld r20,1 + bst r13,0 + bld r20,2 + bst r25,0 + bld r20,3 + bst r5,1 + bld r20,4 + bst r9,1 + bld r20,5 + bst r13,1 + bld r20,6 + bst r25,1 + bld r20,7 + bst r5,2 + bld r21,0 + bst r9,2 + bld r21,1 + bst r13,2 + bld r21,2 + bst r25,2 + bld r21,3 + bst r5,3 + bld r21,4 + bst r9,3 + bld r21,5 + bst r13,3 + bld r21,6 + bst r25,3 + bld r21,7 + bst r5,4 + bld r22,0 + bst r9,4 + bld r22,1 + bst r13,4 + bld r22,2 + bst r25,4 + bld r22,3 + bst r5,5 + bld r22,4 + bst r9,5 + bld r22,5 + bst r13,5 + bld r22,6 + bst r25,5 + bld r22,7 + bst r5,6 + bld r23,0 + bst r9,6 + bld r23,1 + bst r13,6 + bld r23,2 + bst r25,6 + bld r23,3 + bst r5,7 + bld r23,4 + bst r9,7 + bld r23,5 + bst r13,7 + bld r23,6 + bst r25,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + subi r28,174 + sbci r29,255 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128t_encrypt, .-gift128t_encrypt + + .text +.global gift128t_decrypt + .type gift128t_decrypt, @function +gift128t_decrypt: + push r28 + push r29 + push r2 + push r3 + push r4 + push r5 + push r6 + push r7 + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + push r16 + push r17 + push r23 + push r22 + movw r30,r24 + movw r26,r20 + in r28,0x3d + in r29,0x3e + sbiw r28,16 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 36 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r2,0 + bst r20,1 + bld r6,0 + bst r20,2 + bld r10,0 + bst r20,3 + bld r14,0 + bst r20,4 + bld r2,1 + bst r20,5 + bld r6,1 + bst r20,6 + bld r10,1 + bst r20,7 + bld r14,1 + bst r21,0 + bld r2,2 + bst r21,1 + bld r6,2 + bst r21,2 + bld r10,2 + bst r21,3 + bld r14,2 + bst r21,4 + bld r2,3 + bst r21,5 + bld r6,3 + bst r21,6 + bld r10,3 + bst r21,7 + bld r14,3 + bst r22,0 + bld r2,4 + bst r22,1 + bld r6,4 + bst r22,2 + bld r10,4 + bst r22,3 + bld r14,4 + bst r22,4 + bld r2,5 + bst r22,5 + bld r6,5 + bst r22,6 + bld r10,5 + bst r22,7 + bld r14,5 + bst r23,0 + bld r2,6 + bst r23,1 + bld r6,6 + bst r23,2 + bld r10,6 + bst r23,3 + bld r14,6 + bst r23,4 + bld r2,7 + bst r23,5 + bld r6,7 + bst r23,6 + bld r10,7 + bst r23,7 + bld r14,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r3,0 + bst r20,1 + bld r7,0 + bst r20,2 + bld r11,0 + bst r20,3 + bld r15,0 + bst r20,4 + bld r3,1 + bst r20,5 + bld r7,1 + bst r20,6 + bld r11,1 + bst r20,7 + bld r15,1 + bst r21,0 + bld r3,2 + bst r21,1 + bld r7,2 + bst r21,2 + bld r11,2 + bst r21,3 + bld r15,2 + bst r21,4 + bld r3,3 + bst r21,5 + bld r7,3 + bst r21,6 + bld r11,3 + bst r21,7 + bld r15,3 + bst r22,0 + bld r3,4 + bst r22,1 + bld r7,4 + bst r22,2 + bld r11,4 + bst r22,3 + bld r15,4 + bst r22,4 + bld r3,5 + bst r22,5 + bld r7,5 + bst r22,6 + bld r11,5 + bst r22,7 + bld r15,5 + bst r23,0 + bld r3,6 + bst r23,1 + bld r7,6 + bst r23,2 + bld r11,6 + bst r23,3 + bld r15,6 + bst r23,4 + bld r3,7 + bst r23,5 + bld r7,7 + bst r23,6 + bld r11,7 + bst r23,7 + bld r15,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r4,0 + bst r20,1 + bld r8,0 + bst r20,2 + bld r12,0 + bst r20,3 + bld r24,0 + bst r20,4 + bld r4,1 + bst r20,5 + bld r8,1 + bst r20,6 + bld r12,1 + bst r20,7 + bld r24,1 + bst r21,0 + bld r4,2 + bst r21,1 + bld r8,2 + bst r21,2 + bld r12,2 + bst r21,3 + bld r24,2 + bst r21,4 + bld r4,3 + bst r21,5 + bld r8,3 + bst r21,6 + bld r12,3 + bst r21,7 + bld r24,3 + bst r22,0 + bld r4,4 + bst r22,1 + bld r8,4 + bst r22,2 + bld r12,4 + bst r22,3 + bld r24,4 + bst r22,4 + bld r4,5 + bst r22,5 + bld r8,5 + bst r22,6 + bld r12,5 + bst r22,7 + bld r24,5 + bst r23,0 + bld r4,6 + bst r23,1 + bld r8,6 + bst r23,2 + bld r12,6 + bst r23,3 + bld r24,6 + bst r23,4 + bld r4,7 + bst r23,5 + bld r8,7 + bst r23,6 + bld r12,7 + bst r23,7 + bld r24,7 + ld r20,X+ + ld r21,X+ + ld r22,X+ + ld r23,X+ + bst r20,0 + bld r5,0 + bst r20,1 + bld r9,0 + bst r20,2 + bld r13,0 + bst r20,3 + bld r25,0 + bst r20,4 + bld r5,1 + bst r20,5 + bld r9,1 + bst r20,6 + bld r13,1 + bst r20,7 + bld r25,1 + bst r21,0 + bld r5,2 + bst r21,1 + bld r9,2 + bst r21,2 + bld r13,2 + bst r21,3 + bld r25,2 + bst r21,4 + bld r5,3 + bst r21,5 + bld r9,3 + bst r21,6 + bld r13,3 + bst r21,7 + bld r25,3 + bst r22,0 + bld r5,4 + bst r22,1 + bld r9,4 + bst r22,2 + bld r13,4 + bst r22,3 + bld r25,4 + bst r22,4 + bld r5,5 + bst r22,5 + bld r9,5 + bst r22,6 + bld r13,5 + bst r22,7 + bld r25,5 + bst r23,0 + bld r5,6 + bst r23,1 + bld r9,6 + bst r23,2 + bld r13,6 + bst r23,3 + bld r25,6 + bst r23,4 + bld r5,7 + bst r23,5 + bld r9,7 + bst r23,6 + bld r13,7 + bst r23,7 + bld r25,7 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r16,Z+14 + ldd r17,Z+15 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Y+1,r26 + std Y+2,r27 + std Y+3,r16 + std Y+4,r17 + ldd r26,Z+4 + ldd r27,Z+5 + ldd r16,Z+6 + ldd r17,Z+7 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Y+5,r26 + std Y+6,r27 + std Y+7,r16 + std Y+8,r17 + ldd r26,Z+8 + ldd r27,Z+9 + ldd r16,Z+10 + ldd r17,Z+11 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Y+9,r26 + std Y+10,r27 + std Y+11,r16 + std Y+12,r17 + ld r26,Z + ldd r27,Z+1 + ldd r16,Z+2 + ldd r17,Z+3 + mov r0,r27 + mov r27,r26 + mov r26,r0 + mov r0,r1 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + lsr r17 + ror r16 + ror r0 + or r17,r0 + std Y+13,r26 + std Y+14,r27 + std Y+15,r16 + std Y+16,r17 + ldi r30,lo8(table_1) + ldi r31,hi8(table_1) +#if defined(RAMPZ) + ldi r26,hh8(table_1) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r26 +#endif + ldi r19,40 + mov r26,r1 +375: + ldd r0,Y+13 + ldd r20,Y+9 + std Y+9,r0 + ldd r0,Y+5 + std Y+5,r20 + ldd r20,Y+1 + std Y+1,r0 + ldd r0,Y+14 + ldd r21,Y+10 + std Y+10,r0 + ldd r0,Y+6 + std Y+6,r21 + ldd r21,Y+2 + std Y+2,r0 + ldd r0,Y+15 + ldd r22,Y+11 + std Y+11,r0 + ldd r0,Y+7 + std Y+7,r22 + ldd r22,Y+3 + std Y+3,r0 + ldd r0,Y+16 + ldd r23,Y+12 + std Y+12,r0 + ldd r0,Y+8 + std Y+8,r23 + ldd r23,Y+4 + std Y+4,r0 + mov r0,r1 + lsr r21 + ror r20 + ror r0 + lsr r21 + ror r20 + ror r0 + lsr r21 + ror r20 + ror r0 + lsr r21 + ror r20 + ror r0 + or r21,r0 + lsl r22 + rol r23 + adc r22,r1 + lsl r22 + rol r23 + adc r22,r1 + std Y+13,r20 + std Y+14,r21 + std Y+15,r22 + std Y+16,r23 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + ldd r0,Y+5 + eor r10,r0 + ldd r0,Y+6 + eor r11,r0 + ldd r0,Y+7 + eor r12,r0 + ldd r0,Y+8 + eor r13,r0 + ldi r20,128 + eor r25,r20 + dec r19 + mov r30,r19 +#if defined(RAMPZ) + elpm r20,Z +#elif defined(__AVR_HAVE_LPMX__) + lpm r20,Z +#elif defined(__AVR_TINY__) + ld r20,Z +#else + lpm + mov r20,r0 +#endif + eor r14,r20 + bst r2,1 + bld r0,0 + bst r5,0 + bld r2,1 + bst r2,6 + bld r5,0 + bst r4,1 + bld r2,6 + bst r5,4 + bld r4,1 + bst r2,7 + bld r5,4 + bst r3,1 + bld r2,7 + bst r5,2 + bld r3,1 + bst r4,6 + bld r5,2 + bst r4,5 + bld r4,6 + bst r5,5 + bld r4,5 + bst r5,7 + bld r5,5 + bst r3,7 + bld r5,7 + bst r3,3 + bld r3,7 + bst r3,2 + bld r3,3 + bst r4,2 + bld r3,2 + bst r4,4 + bld r4,2 + bst r2,5 + bld r4,4 + bst r5,1 + bld r2,5 + bst r5,6 + bld r5,1 + bst r4,7 + bld r5,6 + bst r3,5 + bld r4,7 + bst r5,3 + bld r3,5 + bst r3,6 + bld r5,3 + bst r4,3 + bld r3,6 + bst r3,4 + bld r4,3 + bst r2,3 + bld r3,4 + bst r3,0 + bld r2,3 + bst r2,2 + bld r3,0 + bst r4,0 + bld r2,2 + bst r2,4 + bld r4,0 + bst r0,0 + bld r2,4 + bst r6,0 + bld r0,0 + bst r7,0 + bld r6,0 + bst r7,2 + bld r7,0 + bst r9,2 + bld r7,2 + bst r9,6 + bld r9,2 + bst r9,7 + bld r9,6 + bst r8,7 + bld r9,7 + bst r8,5 + bld r8,7 + bst r6,5 + bld r8,5 + bst r6,1 + bld r6,5 + bst r0,0 + bld r6,1 + bst r6,2 + bld r0,0 + bst r9,0 + bld r6,2 + bst r7,6 + bld r9,0 + bst r9,3 + bld r7,6 + bst r8,6 + bld r9,3 + bst r9,5 + bld r8,6 + bst r6,7 + bld r9,5 + bst r8,1 + bld r6,7 + bst r6,4 + bld r8,1 + bst r7,1 + bld r6,4 + bst r0,0 + bld r7,1 + bst r6,3 + bld r0,0 + bst r8,0 + bld r6,3 + bst r7,4 + bld r8,0 + bst r7,3 + bld r7,4 + bst r8,2 + bld r7,3 + bst r9,4 + bld r8,2 + bst r7,7 + bld r9,4 + bst r8,3 + bld r7,7 + bst r8,4 + bld r8,3 + bst r7,5 + bld r8,4 + bst r0,0 + bld r7,5 + bst r6,6 + bld r0,0 + bst r9,1 + bld r6,6 + bst r0,0 + bld r9,1 + bst r10,0 + bld r0,0 + bst r12,0 + bld r10,0 + bst r12,4 + bld r12,0 + bst r12,5 + bld r12,4 + bst r11,5 + bld r12,5 + bst r11,3 + bld r11,5 + bst r13,2 + bld r11,3 + bst r10,6 + bld r13,2 + bst r10,1 + bld r10,6 + bst r11,0 + bld r10,1 + bst r12,2 + bld r11,0 + bst r10,4 + bld r12,2 + bst r12,1 + bld r10,4 + bst r11,4 + bld r12,1 + bst r12,3 + bld r11,4 + bst r13,4 + bld r12,3 + bst r12,7 + bld r13,4 + bst r13,5 + bld r12,7 + bst r11,7 + bld r13,5 + bst r13,3 + bld r11,7 + bst r13,6 + bld r13,3 + bst r10,7 + bld r13,6 + bst r13,1 + bld r10,7 + bst r11,6 + bld r13,1 + bst r10,3 + bld r11,6 + bst r13,0 + bld r10,3 + bst r12,6 + bld r13,0 + bst r10,5 + bld r12,6 + bst r11,1 + bld r10,5 + bst r11,2 + bld r11,1 + bst r10,2 + bld r11,2 + bst r0,0 + bld r10,2 + bst r14,0 + bld r0,0 + bst r25,0 + bld r14,0 + bst r25,6 + bld r25,0 + bst r15,7 + bld r25,6 + bst r14,3 + bld r15,7 + bst r0,0 + bld r14,3 + bst r14,1 + bld r0,0 + bst r24,0 + bld r14,1 + bst r25,4 + bld r24,0 + bst r25,7 + bld r25,4 + bst r14,7 + bld r25,7 + bst r0,0 + bld r14,7 + bst r14,2 + bld r0,0 + bst r15,0 + bld r14,2 + bst r25,2 + bld r15,0 + bst r15,6 + bld r25,2 + bst r15,3 + bld r15,6 + bst r0,0 + bld r15,3 + bst r14,4 + bld r0,0 + bst r25,1 + bld r14,4 + bst r24,6 + bld r25,1 + bst r15,5 + bld r24,6 + bst r24,3 + bld r15,5 + bst r0,0 + bld r24,3 + bst r14,5 + bld r0,0 + bst r24,1 + bld r14,5 + bst r24,4 + bld r24,1 + bst r25,5 + bld r24,4 + bst r24,7 + bld r25,5 + bst r0,0 + bld r24,7 + bst r14,6 + bld r0,0 + bst r15,1 + bld r14,6 + bst r24,2 + bld r15,1 + bst r15,4 + bld r24,2 + bst r25,3 + bld r15,4 + bst r0,0 + bld r25,3 + movw r20,r14 + movw r22,r24 + movw r14,r2 + movw r24,r4 + movw r2,r20 + movw r4,r22 + and r20,r6 + and r21,r7 + and r22,r8 + and r23,r9 + eor r10,r20 + eor r11,r21 + eor r12,r22 + eor r13,r23 + com r14 + com r15 + com r24 + com r25 + eor r6,r14 + eor r7,r15 + eor r8,r24 + eor r9,r25 + eor r14,r10 + eor r15,r11 + eor r24,r12 + eor r25,r13 + mov r0,r2 + or r0,r6 + eor r10,r0 + mov r0,r3 + or r0,r7 + eor r11,r0 + mov r0,r4 + or r0,r8 + eor r12,r0 + mov r0,r5 + or r0,r9 + eor r13,r0 + mov r0,r6 + and r0,r14 + eor r2,r0 + mov r0,r7 + and r0,r15 + eor r3,r0 + mov r0,r8 + and r0,r24 + eor r4,r0 + mov r0,r9 + and r0,r25 + eor r5,r0 + mov r0,r2 + and r0,r10 + eor r6,r0 + mov r0,r3 + and r0,r11 + eor r7,r0 + mov r0,r4 + and r0,r12 + eor r8,r0 + mov r0,r5 + and r0,r13 + eor r9,r0 + cp r19,r1 + breq 791f + inc r26 + ldi r27,5 + cpse r26,r27 + rjmp 375b + mov r26,r1 + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rjmp 375b +791: +#if defined(RAMPZ) + pop r0 + out _SFR_IO_ADDR(RAMPZ),r0 +#endif + ldd r26,Y+17 + ldd r27,Y+18 + bst r2,0 + bld r20,0 + bst r6,0 + bld r20,1 + bst r10,0 + bld r20,2 + bst r14,0 + bld r20,3 + bst r2,1 + bld r20,4 + bst r6,1 + bld r20,5 + bst r10,1 + bld r20,6 + bst r14,1 + bld r20,7 + bst r2,2 + bld r21,0 + bst r6,2 + bld r21,1 + bst r10,2 + bld r21,2 + bst r14,2 + bld r21,3 + bst r2,3 + bld r21,4 + bst r6,3 + bld r21,5 + bst r10,3 + bld r21,6 + bst r14,3 + bld r21,7 + bst r2,4 + bld r22,0 + bst r6,4 + bld r22,1 + bst r10,4 + bld r22,2 + bst r14,4 + bld r22,3 + bst r2,5 + bld r22,4 + bst r6,5 + bld r22,5 + bst r10,5 + bld r22,6 + bst r14,5 + bld r22,7 + bst r2,6 + bld r23,0 + bst r6,6 + bld r23,1 + bst r10,6 + bld r23,2 + bst r14,6 + bld r23,3 + bst r2,7 + bld r23,4 + bst r6,7 + bld r23,5 + bst r10,7 + bld r23,6 + bst r14,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r3,0 + bld r20,0 + bst r7,0 + bld r20,1 + bst r11,0 + bld r20,2 + bst r15,0 + bld r20,3 + bst r3,1 + bld r20,4 + bst r7,1 + bld r20,5 + bst r11,1 + bld r20,6 + bst r15,1 + bld r20,7 + bst r3,2 + bld r21,0 + bst r7,2 + bld r21,1 + bst r11,2 + bld r21,2 + bst r15,2 + bld r21,3 + bst r3,3 + bld r21,4 + bst r7,3 + bld r21,5 + bst r11,3 + bld r21,6 + bst r15,3 + bld r21,7 + bst r3,4 + bld r22,0 + bst r7,4 + bld r22,1 + bst r11,4 + bld r22,2 + bst r15,4 + bld r22,3 + bst r3,5 + bld r22,4 + bst r7,5 + bld r22,5 + bst r11,5 + bld r22,6 + bst r15,5 + bld r22,7 + bst r3,6 + bld r23,0 + bst r7,6 + bld r23,1 + bst r11,6 + bld r23,2 + bst r15,6 + bld r23,3 + bst r3,7 + bld r23,4 + bst r7,7 + bld r23,5 + bst r11,7 + bld r23,6 + bst r15,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r4,0 + bld r20,0 + bst r8,0 + bld r20,1 + bst r12,0 + bld r20,2 + bst r24,0 + bld r20,3 + bst r4,1 + bld r20,4 + bst r8,1 + bld r20,5 + bst r12,1 + bld r20,6 + bst r24,1 + bld r20,7 + bst r4,2 + bld r21,0 + bst r8,2 + bld r21,1 + bst r12,2 + bld r21,2 + bst r24,2 + bld r21,3 + bst r4,3 + bld r21,4 + bst r8,3 + bld r21,5 + bst r12,3 + bld r21,6 + bst r24,3 + bld r21,7 + bst r4,4 + bld r22,0 + bst r8,4 + bld r22,1 + bst r12,4 + bld r22,2 + bst r24,4 + bld r22,3 + bst r4,5 + bld r22,4 + bst r8,5 + bld r22,5 + bst r12,5 + bld r22,6 + bst r24,5 + bld r22,7 + bst r4,6 + bld r23,0 + bst r8,6 + bld r23,1 + bst r12,6 + bld r23,2 + bst r24,6 + bld r23,3 + bst r4,7 + bld r23,4 + bst r8,7 + bld r23,5 + bst r12,7 + bld r23,6 + bst r24,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + bst r5,0 + bld r20,0 + bst r9,0 + bld r20,1 + bst r13,0 + bld r20,2 + bst r25,0 + bld r20,3 + bst r5,1 + bld r20,4 + bst r9,1 + bld r20,5 + bst r13,1 + bld r20,6 + bst r25,1 + bld r20,7 + bst r5,2 + bld r21,0 + bst r9,2 + bld r21,1 + bst r13,2 + bld r21,2 + bst r25,2 + bld r21,3 + bst r5,3 + bld r21,4 + bst r9,3 + bld r21,5 + bst r13,3 + bld r21,6 + bst r25,3 + bld r21,7 + bst r5,4 + bld r22,0 + bst r9,4 + bld r22,1 + bst r13,4 + bld r22,2 + bst r25,4 + bld r22,3 + bst r5,5 + bld r22,4 + bst r9,5 + bld r22,5 + bst r13,5 + bld r22,6 + bst r25,5 + bld r22,7 + bst r5,6 + bld r23,0 + bst r9,6 + bld r23,1 + bst r13,6 + bld r23,2 + bst r25,6 + bld r23,3 + bst r5,7 + bld r23,4 + bst r9,7 + bld r23,5 + bst r13,7 + bld r23,6 + bst r25,7 + bld r23,7 + st X+,r20 + st X+,r21 + st X+,r22 + st X+,r23 + adiw r28,18 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 + pop r17 + pop r16 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop r7 + pop r6 + pop r5 + pop r4 + pop r3 + pop r2 + pop r29 + pop r28 + ret + .size gift128t_decrypt, .-gift128t_decrypt + +#endif + +#endif diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-util.h b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-util.h new file mode 100644 index 0000000..e30166d --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav2/rhys/internal-util.h @@ -0,0 +1,702 @@ +/* + * Copyright (C) 2020 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef LW_INTERNAL_UTIL_H +#define LW_INTERNAL_UTIL_H + +#include + +/* Figure out how to inline functions using this C compiler */ +#if defined(__STDC__) && __STDC_VERSION__ >= 199901L +#define STATIC_INLINE static inline +#elif defined(__GNUC__) || defined(__clang__) +#define STATIC_INLINE static __inline__ +#else +#define STATIC_INLINE static +#endif + +/* Try to figure out whether the CPU is little-endian or big-endian. + * May need to modify this to include new compiler-specific defines. + * Alternatively, define __LITTLE_ENDIAN__ or __BIG_ENDIAN__ in your + * compiler flags when you compile this library */ +#if defined(__x86_64) || defined(__x86_64__) || \ + defined(__i386) || defined(__i386__) || \ + defined(__AVR__) || defined(__arm) || defined(__arm__) || \ + defined(_M_AMD64) || defined(_M_X64) || defined(_M_IX86) || \ + defined(_M_IA64) || defined(_M_ARM) || defined(_M_ARM_FP) || \ + (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == 1234) || \ + defined(__LITTLE_ENDIAN__) +#define LW_UTIL_LITTLE_ENDIAN 1 +#elif (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == 4321) || \ + defined(__BIG_ENDIAN__) +/* Big endian */ +#else +#error "Cannot determine the endianess of this platform" +#endif + +/* Helper macros to load and store values while converting endian-ness */ + +/* Load a big-endian 32-bit word from a byte buffer */ +#define be_load_word32(ptr) \ + ((((uint32_t)((ptr)[0])) << 24) | \ + (((uint32_t)((ptr)[1])) << 16) | \ + (((uint32_t)((ptr)[2])) << 8) | \ + ((uint32_t)((ptr)[3]))) + +/* Store a big-endian 32-bit word into a byte buffer */ +#define be_store_word32(ptr, x) \ + do { \ + uint32_t _x = (x); \ + (ptr)[0] = (uint8_t)(_x >> 24); \ + (ptr)[1] = (uint8_t)(_x >> 16); \ + (ptr)[2] = (uint8_t)(_x >> 8); \ + (ptr)[3] = (uint8_t)_x; \ + } while (0) + +/* Load a little-endian 32-bit word from a byte buffer */ +#define le_load_word32(ptr) \ + ((((uint32_t)((ptr)[3])) << 24) | \ + (((uint32_t)((ptr)[2])) << 16) | \ + (((uint32_t)((ptr)[1])) << 8) | \ + ((uint32_t)((ptr)[0]))) + +/* Store a little-endian 32-bit word into a byte buffer */ +#define le_store_word32(ptr, x) \ + do { \ + uint32_t _x = (x); \ + (ptr)[0] = (uint8_t)_x; \ + (ptr)[1] = (uint8_t)(_x >> 8); \ + (ptr)[2] = (uint8_t)(_x >> 16); \ + (ptr)[3] = (uint8_t)(_x >> 24); \ + } while (0) + +/* Load a big-endian 64-bit word from a byte buffer */ +#define be_load_word64(ptr) \ + ((((uint64_t)((ptr)[0])) << 56) | \ + (((uint64_t)((ptr)[1])) << 48) | \ + (((uint64_t)((ptr)[2])) << 40) | \ + (((uint64_t)((ptr)[3])) << 32) | \ + (((uint64_t)((ptr)[4])) << 24) | \ + (((uint64_t)((ptr)[5])) << 16) | \ + (((uint64_t)((ptr)[6])) << 8) | \ + ((uint64_t)((ptr)[7]))) + +/* Store a big-endian 64-bit word into a byte buffer */ +#define be_store_word64(ptr, x) \ + do { \ + uint64_t _x = (x); \ + (ptr)[0] = (uint8_t)(_x >> 56); \ + (ptr)[1] = (uint8_t)(_x >> 48); \ + (ptr)[2] = (uint8_t)(_x >> 40); \ + (ptr)[3] = (uint8_t)(_x >> 32); \ + (ptr)[4] = (uint8_t)(_x >> 24); \ + (ptr)[5] = (uint8_t)(_x >> 16); \ + (ptr)[6] = (uint8_t)(_x >> 8); \ + (ptr)[7] = (uint8_t)_x; \ + } while (0) + +/* Load a little-endian 64-bit word from a byte buffer */ +#define le_load_word64(ptr) \ + ((((uint64_t)((ptr)[7])) << 56) | \ + (((uint64_t)((ptr)[6])) << 48) | \ + (((uint64_t)((ptr)[5])) << 40) | \ + (((uint64_t)((ptr)[4])) << 32) | \ + (((uint64_t)((ptr)[3])) << 24) | \ + (((uint64_t)((ptr)[2])) << 16) | \ + (((uint64_t)((ptr)[1])) << 8) | \ + ((uint64_t)((ptr)[0]))) + +/* Store a little-endian 64-bit word into a byte buffer */ +#define le_store_word64(ptr, x) \ + do { \ + uint64_t _x = (x); \ + (ptr)[0] = (uint8_t)_x; \ + (ptr)[1] = (uint8_t)(_x >> 8); \ + (ptr)[2] = (uint8_t)(_x >> 16); \ + (ptr)[3] = (uint8_t)(_x >> 24); \ + (ptr)[4] = (uint8_t)(_x >> 32); \ + (ptr)[5] = (uint8_t)(_x >> 40); \ + (ptr)[6] = (uint8_t)(_x >> 48); \ + (ptr)[7] = (uint8_t)(_x >> 56); \ + } while (0) + +/* Load a big-endian 16-bit word from a byte buffer */ +#define be_load_word16(ptr) \ + ((((uint16_t)((ptr)[0])) << 8) | \ + ((uint16_t)((ptr)[1]))) + +/* Store a big-endian 16-bit word into a byte buffer */ +#define be_store_word16(ptr, x) \ + do { \ + uint16_t _x = (x); \ + (ptr)[0] = (uint8_t)(_x >> 8); \ + (ptr)[1] = (uint8_t)_x; \ + } while (0) + +/* Load a little-endian 16-bit word from a byte buffer */ +#define le_load_word16(ptr) \ + ((((uint16_t)((ptr)[1])) << 8) | \ + ((uint16_t)((ptr)[0]))) + +/* Store a little-endian 16-bit word into a byte buffer */ +#define le_store_word16(ptr, x) \ + do { \ + uint16_t _x = (x); \ + (ptr)[0] = (uint8_t)_x; \ + (ptr)[1] = (uint8_t)(_x >> 8); \ + } while (0) + +/* XOR a source byte buffer against a destination */ +#define lw_xor_block(dest, src, len) \ + do { \ + unsigned char *_dest = (dest); \ + const unsigned char *_src = (src); \ + unsigned _len = (len); \ + while (_len > 0) { \ + *_dest++ ^= *_src++; \ + --_len; \ + } \ + } while (0) + +/* XOR two source byte buffers and put the result in a destination buffer */ +#define lw_xor_block_2_src(dest, src1, src2, len) \ + do { \ + unsigned char *_dest = (dest); \ + const unsigned char *_src1 = (src1); \ + const unsigned char *_src2 = (src2); \ + unsigned _len = (len); \ + while (_len > 0) { \ + *_dest++ = *_src1++ ^ *_src2++; \ + --_len; \ + } \ + } while (0) + +/* XOR a source byte buffer against a destination and write to another + * destination at the same time */ +#define lw_xor_block_2_dest(dest2, dest, src, len) \ + do { \ + unsigned char *_dest2 = (dest2); \ + unsigned char *_dest = (dest); \ + const unsigned char *_src = (src); \ + unsigned _len = (len); \ + while (_len > 0) { \ + *_dest2++ = (*_dest++ ^= *_src++); \ + --_len; \ + } \ + } while (0) + +/* XOR two byte buffers and write to a destination which at the same + * time copying the contents of src2 to dest2 */ +#define lw_xor_block_copy_src(dest2, dest, src1, src2, len) \ + do { \ + unsigned char *_dest2 = (dest2); \ + unsigned char *_dest = (dest); \ + const unsigned char *_src1 = (src1); \ + const unsigned char *_src2 = (src2); \ + unsigned _len = (len); \ + while (_len > 0) { \ + unsigned char _temp = *_src2++; \ + *_dest2++ = _temp; \ + *_dest++ = *_src1++ ^ _temp; \ + --_len; \ + } \ + } while (0) + +/* XOR a source byte buffer against a destination and write to another + * destination at the same time. This version swaps the source value + * into the "dest" buffer */ +#define lw_xor_block_swap(dest2, dest, src, len) \ + do { \ + unsigned char *_dest2 = (dest2); \ + unsigned char *_dest = (dest); \ + const unsigned char *_src = (src); \ + unsigned _len = (len); \ + while (_len > 0) { \ + unsigned char _temp = *_src++; \ + *_dest2++ = *_dest ^ _temp; \ + *_dest++ = _temp; \ + --_len; \ + } \ + } while (0) + +/* Rotation functions need to be optimised for best performance on AVR. + * The most efficient rotations are where the number of bits is 1 or a + * multiple of 8, so we compose the efficient rotations to produce all + * other rotation counts of interest. */ + +#if defined(__AVR__) +#define LW_CRYPTO_ROTATE32_COMPOSED 1 +#else +#define LW_CRYPTO_ROTATE32_COMPOSED 0 +#endif + +/* Rotation macros for 32-bit arguments */ + +/* Generic left rotate */ +#define leftRotate(a, bits) \ + (__extension__ ({ \ + uint32_t _temp = (a); \ + (_temp << (bits)) | (_temp >> (32 - (bits))); \ + })) + +/* Generic right rotate */ +#define rightRotate(a, bits) \ + (__extension__ ({ \ + uint32_t _temp = (a); \ + (_temp >> (bits)) | (_temp << (32 - (bits))); \ + })) + +#if !LW_CRYPTO_ROTATE32_COMPOSED + +/* Left rotate by a specific number of bits. These macros may be replaced + * with more efficient ones on platforms that lack a barrel shifter */ +#define leftRotate1(a) (leftRotate((a), 1)) +#define leftRotate2(a) (leftRotate((a), 2)) +#define leftRotate3(a) (leftRotate((a), 3)) +#define leftRotate4(a) (leftRotate((a), 4)) +#define leftRotate5(a) (leftRotate((a), 5)) +#define leftRotate6(a) (leftRotate((a), 6)) +#define leftRotate7(a) (leftRotate((a), 7)) +#define leftRotate8(a) (leftRotate((a), 8)) +#define leftRotate9(a) (leftRotate((a), 9)) +#define leftRotate10(a) (leftRotate((a), 10)) +#define leftRotate11(a) (leftRotate((a), 11)) +#define leftRotate12(a) (leftRotate((a), 12)) +#define leftRotate13(a) (leftRotate((a), 13)) +#define leftRotate14(a) (leftRotate((a), 14)) +#define leftRotate15(a) (leftRotate((a), 15)) +#define leftRotate16(a) (leftRotate((a), 16)) +#define leftRotate17(a) (leftRotate((a), 17)) +#define leftRotate18(a) (leftRotate((a), 18)) +#define leftRotate19(a) (leftRotate((a), 19)) +#define leftRotate20(a) (leftRotate((a), 20)) +#define leftRotate21(a) (leftRotate((a), 21)) +#define leftRotate22(a) (leftRotate((a), 22)) +#define leftRotate23(a) (leftRotate((a), 23)) +#define leftRotate24(a) (leftRotate((a), 24)) +#define leftRotate25(a) (leftRotate((a), 25)) +#define leftRotate26(a) (leftRotate((a), 26)) +#define leftRotate27(a) (leftRotate((a), 27)) +#define leftRotate28(a) (leftRotate((a), 28)) +#define leftRotate29(a) (leftRotate((a), 29)) +#define leftRotate30(a) (leftRotate((a), 30)) +#define leftRotate31(a) (leftRotate((a), 31)) + +/* Right rotate by a specific number of bits. These macros may be replaced + * with more efficient ones on platforms that lack a barrel shifter */ +#define rightRotate1(a) (rightRotate((a), 1)) +#define rightRotate2(a) (rightRotate((a), 2)) +#define rightRotate3(a) (rightRotate((a), 3)) +#define rightRotate4(a) (rightRotate((a), 4)) +#define rightRotate5(a) (rightRotate((a), 5)) +#define rightRotate6(a) (rightRotate((a), 6)) +#define rightRotate7(a) (rightRotate((a), 7)) +#define rightRotate8(a) (rightRotate((a), 8)) +#define rightRotate9(a) (rightRotate((a), 9)) +#define rightRotate10(a) (rightRotate((a), 10)) +#define rightRotate11(a) (rightRotate((a), 11)) +#define rightRotate12(a) (rightRotate((a), 12)) +#define rightRotate13(a) (rightRotate((a), 13)) +#define rightRotate14(a) (rightRotate((a), 14)) +#define rightRotate15(a) (rightRotate((a), 15)) +#define rightRotate16(a) (rightRotate((a), 16)) +#define rightRotate17(a) (rightRotate((a), 17)) +#define rightRotate18(a) (rightRotate((a), 18)) +#define rightRotate19(a) (rightRotate((a), 19)) +#define rightRotate20(a) (rightRotate((a), 20)) +#define rightRotate21(a) (rightRotate((a), 21)) +#define rightRotate22(a) (rightRotate((a), 22)) +#define rightRotate23(a) (rightRotate((a), 23)) +#define rightRotate24(a) (rightRotate((a), 24)) +#define rightRotate25(a) (rightRotate((a), 25)) +#define rightRotate26(a) (rightRotate((a), 26)) +#define rightRotate27(a) (rightRotate((a), 27)) +#define rightRotate28(a) (rightRotate((a), 28)) +#define rightRotate29(a) (rightRotate((a), 29)) +#define rightRotate30(a) (rightRotate((a), 30)) +#define rightRotate31(a) (rightRotate((a), 31)) + +#else /* LW_CRYPTO_ROTATE32_COMPOSED */ + +/* Composed rotation macros where 1 and 8 are fast, but others are slow */ + +/* Left rotate by 1 */ +#define leftRotate1(a) (leftRotate((a), 1)) + +/* Left rotate by 2 */ +#define leftRotate2(a) (leftRotate(leftRotate((a), 1), 1)) + +/* Left rotate by 3 */ +#define leftRotate3(a) (leftRotate(leftRotate(leftRotate((a), 1), 1), 1)) + +/* Left rotate by 4 */ +#define leftRotate4(a) (leftRotate(leftRotate(leftRotate(leftRotate((a), 1), 1), 1), 1)) + +/* Left rotate by 5: Rotate left by 8, then right by 3 */ +#define leftRotate5(a) (rightRotate(rightRotate(rightRotate(leftRotate((a), 8), 1), 1), 1)) + +/* Left rotate by 6: Rotate left by 8, then right by 2 */ +#define leftRotate6(a) (rightRotate(rightRotate(leftRotate((a), 8), 1), 1)) + +/* Left rotate by 7: Rotate left by 8, then right by 1 */ +#define leftRotate7(a) (rightRotate(leftRotate((a), 8), 1)) + +/* Left rotate by 8 */ +#define leftRotate8(a) (leftRotate((a), 8)) + +/* Left rotate by 9: Rotate left by 8, then left by 1 */ +#define leftRotate9(a) (leftRotate(leftRotate((a), 8), 1)) + +/* Left rotate by 10: Rotate left by 8, then left by 2 */ +#define leftRotate10(a) (leftRotate(leftRotate(leftRotate((a), 8), 1), 1)) + +/* Left rotate by 11: Rotate left by 8, then left by 3 */ +#define leftRotate11(a) (leftRotate(leftRotate(leftRotate(leftRotate((a), 8), 1), 1), 1)) + +/* Left rotate by 12: Rotate left by 16, then right by 4 */ +#define leftRotate12(a) (rightRotate(rightRotate(rightRotate(rightRotate(leftRotate((a), 16), 1), 1), 1), 1)) + +/* Left rotate by 13: Rotate left by 16, then right by 3 */ +#define leftRotate13(a) (rightRotate(rightRotate(rightRotate(leftRotate((a), 16), 1), 1), 1)) + +/* Left rotate by 14: Rotate left by 16, then right by 2 */ +#define leftRotate14(a) (rightRotate(rightRotate(leftRotate((a), 16), 1), 1)) + +/* Left rotate by 15: Rotate left by 16, then right by 1 */ +#define leftRotate15(a) (rightRotate(leftRotate((a), 16), 1)) + +/* Left rotate by 16 */ +#define leftRotate16(a) (leftRotate((a), 16)) + +/* Left rotate by 17: Rotate left by 16, then left by 1 */ +#define leftRotate17(a) (leftRotate(leftRotate((a), 16), 1)) + +/* Left rotate by 18: Rotate left by 16, then left by 2 */ +#define leftRotate18(a) (leftRotate(leftRotate(leftRotate((a), 16), 1), 1)) + +/* Left rotate by 19: Rotate left by 16, then left by 3 */ +#define leftRotate19(a) (leftRotate(leftRotate(leftRotate(leftRotate((a), 16), 1), 1), 1)) + +/* Left rotate by 20: Rotate left by 16, then left by 4 */ +#define leftRotate20(a) (leftRotate(leftRotate(leftRotate(leftRotate(leftRotate((a), 16), 1), 1), 1), 1)) + +/* Left rotate by 21: Rotate left by 24, then right by 3 */ +#define leftRotate21(a) (rightRotate(rightRotate(rightRotate(leftRotate((a), 24), 1), 1), 1)) + +/* Left rotate by 22: Rotate left by 24, then right by 2 */ +#define leftRotate22(a) (rightRotate(rightRotate(leftRotate((a), 24), 1), 1)) + +/* Left rotate by 23: Rotate left by 24, then right by 1 */ +#define leftRotate23(a) (rightRotate(leftRotate((a), 24), 1)) + +/* Left rotate by 24 */ +#define leftRotate24(a) (leftRotate((a), 24)) + +/* Left rotate by 25: Rotate left by 24, then left by 1 */ +#define leftRotate25(a) (leftRotate(leftRotate((a), 24), 1)) + +/* Left rotate by 26: Rotate left by 24, then left by 2 */ +#define leftRotate26(a) (leftRotate(leftRotate(leftRotate((a), 24), 1), 1)) + +/* Left rotate by 27: Rotate left by 24, then left by 3 */ +#define leftRotate27(a) (leftRotate(leftRotate(leftRotate(leftRotate((a), 24), 1), 1), 1)) + +/* Left rotate by 28: Rotate right by 4 */ +#define leftRotate28(a) (rightRotate(rightRotate(rightRotate(rightRotate((a), 1), 1), 1), 1)) + +/* Left rotate by 29: Rotate right by 3 */ +#define leftRotate29(a) (rightRotate(rightRotate(rightRotate((a), 1), 1), 1)) + +/* Left rotate by 30: Rotate right by 2 */ +#define leftRotate30(a) (rightRotate(rightRotate((a), 1), 1)) + +/* Left rotate by 31: Rotate right by 1 */ +#define leftRotate31(a) (rightRotate((a), 1)) + +/* Define the 32-bit right rotations in terms of left rotations */ +#define rightRotate1(a) (leftRotate31((a))) +#define rightRotate2(a) (leftRotate30((a))) +#define rightRotate3(a) (leftRotate29((a))) +#define rightRotate4(a) (leftRotate28((a))) +#define rightRotate5(a) (leftRotate27((a))) +#define rightRotate6(a) (leftRotate26((a))) +#define rightRotate7(a) (leftRotate25((a))) +#define rightRotate8(a) (leftRotate24((a))) +#define rightRotate9(a) (leftRotate23((a))) +#define rightRotate10(a) (leftRotate22((a))) +#define rightRotate11(a) (leftRotate21((a))) +#define rightRotate12(a) (leftRotate20((a))) +#define rightRotate13(a) (leftRotate19((a))) +#define rightRotate14(a) (leftRotate18((a))) +#define rightRotate15(a) (leftRotate17((a))) +#define rightRotate16(a) (leftRotate16((a))) +#define rightRotate17(a) (leftRotate15((a))) +#define rightRotate18(a) (leftRotate14((a))) +#define rightRotate19(a) (leftRotate13((a))) +#define rightRotate20(a) (leftRotate12((a))) +#define rightRotate21(a) (leftRotate11((a))) +#define rightRotate22(a) (leftRotate10((a))) +#define rightRotate23(a) (leftRotate9((a))) +#define rightRotate24(a) (leftRotate8((a))) +#define rightRotate25(a) (leftRotate7((a))) +#define rightRotate26(a) (leftRotate6((a))) +#define rightRotate27(a) (leftRotate5((a))) +#define rightRotate28(a) (leftRotate4((a))) +#define rightRotate29(a) (leftRotate3((a))) +#define rightRotate30(a) (leftRotate2((a))) +#define rightRotate31(a) (leftRotate1((a))) + +#endif /* LW_CRYPTO_ROTATE32_COMPOSED */ + +/* Rotation macros for 64-bit arguments */ + +/* Generic left rotate */ +#define leftRotate_64(a, bits) \ + (__extension__ ({ \ + uint64_t _temp = (a); \ + (_temp << (bits)) | (_temp >> (64 - (bits))); \ + })) + +/* Generic right rotate */ +#define rightRotate_64(a, bits) \ + (__extension__ ({ \ + uint64_t _temp = (a); \ + (_temp >> (bits)) | (_temp << (64 - (bits))); \ + })) + +/* Left rotate by a specific number of bits. These macros may be replaced + * with more efficient ones on platforms that lack a barrel shifter */ +#define leftRotate1_64(a) (leftRotate_64((a), 1)) +#define leftRotate2_64(a) (leftRotate_64((a), 2)) +#define leftRotate3_64(a) (leftRotate_64((a), 3)) +#define leftRotate4_64(a) (leftRotate_64((a), 4)) +#define leftRotate5_64(a) (leftRotate_64((a), 5)) +#define leftRotate6_64(a) (leftRotate_64((a), 6)) +#define leftRotate7_64(a) (leftRotate_64((a), 7)) +#define leftRotate8_64(a) (leftRotate_64((a), 8)) +#define leftRotate9_64(a) (leftRotate_64((a), 9)) +#define leftRotate10_64(a) (leftRotate_64((a), 10)) +#define leftRotate11_64(a) (leftRotate_64((a), 11)) +#define leftRotate12_64(a) (leftRotate_64((a), 12)) +#define leftRotate13_64(a) (leftRotate_64((a), 13)) +#define leftRotate14_64(a) (leftRotate_64((a), 14)) +#define leftRotate15_64(a) (leftRotate_64((a), 15)) +#define leftRotate16_64(a) (leftRotate_64((a), 16)) +#define leftRotate17_64(a) (leftRotate_64((a), 17)) +#define leftRotate18_64(a) (leftRotate_64((a), 18)) +#define leftRotate19_64(a) (leftRotate_64((a), 19)) +#define leftRotate20_64(a) (leftRotate_64((a), 20)) +#define leftRotate21_64(a) (leftRotate_64((a), 21)) +#define leftRotate22_64(a) (leftRotate_64((a), 22)) +#define leftRotate23_64(a) (leftRotate_64((a), 23)) +#define leftRotate24_64(a) (leftRotate_64((a), 24)) +#define leftRotate25_64(a) (leftRotate_64((a), 25)) +#define leftRotate26_64(a) (leftRotate_64((a), 26)) +#define leftRotate27_64(a) (leftRotate_64((a), 27)) +#define leftRotate28_64(a) (leftRotate_64((a), 28)) +#define leftRotate29_64(a) (leftRotate_64((a), 29)) +#define leftRotate30_64(a) (leftRotate_64((a), 30)) +#define leftRotate31_64(a) (leftRotate_64((a), 31)) +#define leftRotate32_64(a) (leftRotate_64((a), 32)) +#define leftRotate33_64(a) (leftRotate_64((a), 33)) +#define leftRotate34_64(a) (leftRotate_64((a), 34)) +#define leftRotate35_64(a) (leftRotate_64((a), 35)) +#define leftRotate36_64(a) (leftRotate_64((a), 36)) +#define leftRotate37_64(a) (leftRotate_64((a), 37)) +#define leftRotate38_64(a) (leftRotate_64((a), 38)) +#define leftRotate39_64(a) (leftRotate_64((a), 39)) +#define leftRotate40_64(a) (leftRotate_64((a), 40)) +#define leftRotate41_64(a) (leftRotate_64((a), 41)) +#define leftRotate42_64(a) (leftRotate_64((a), 42)) +#define leftRotate43_64(a) (leftRotate_64((a), 43)) +#define leftRotate44_64(a) (leftRotate_64((a), 44)) +#define leftRotate45_64(a) (leftRotate_64((a), 45)) +#define leftRotate46_64(a) (leftRotate_64((a), 46)) +#define leftRotate47_64(a) (leftRotate_64((a), 47)) +#define leftRotate48_64(a) (leftRotate_64((a), 48)) +#define leftRotate49_64(a) (leftRotate_64((a), 49)) +#define leftRotate50_64(a) (leftRotate_64((a), 50)) +#define leftRotate51_64(a) (leftRotate_64((a), 51)) +#define leftRotate52_64(a) (leftRotate_64((a), 52)) +#define leftRotate53_64(a) (leftRotate_64((a), 53)) +#define leftRotate54_64(a) (leftRotate_64((a), 54)) +#define leftRotate55_64(a) (leftRotate_64((a), 55)) +#define leftRotate56_64(a) (leftRotate_64((a), 56)) +#define leftRotate57_64(a) (leftRotate_64((a), 57)) +#define leftRotate58_64(a) (leftRotate_64((a), 58)) +#define leftRotate59_64(a) (leftRotate_64((a), 59)) +#define leftRotate60_64(a) (leftRotate_64((a), 60)) +#define leftRotate61_64(a) (leftRotate_64((a), 61)) +#define leftRotate62_64(a) (leftRotate_64((a), 62)) +#define leftRotate63_64(a) (leftRotate_64((a), 63)) + +/* Right rotate by a specific number of bits. These macros may be replaced + * with more efficient ones on platforms that lack a barrel shifter */ +#define rightRotate1_64(a) (rightRotate_64((a), 1)) +#define rightRotate2_64(a) (rightRotate_64((a), 2)) +#define rightRotate3_64(a) (rightRotate_64((a), 3)) +#define rightRotate4_64(a) (rightRotate_64((a), 4)) +#define rightRotate5_64(a) (rightRotate_64((a), 5)) +#define rightRotate6_64(a) (rightRotate_64((a), 6)) +#define rightRotate7_64(a) (rightRotate_64((a), 7)) +#define rightRotate8_64(a) (rightRotate_64((a), 8)) +#define rightRotate9_64(a) (rightRotate_64((a), 9)) +#define rightRotate10_64(a) (rightRotate_64((a), 10)) +#define rightRotate11_64(a) (rightRotate_64((a), 11)) +#define rightRotate12_64(a) (rightRotate_64((a), 12)) +#define rightRotate13_64(a) (rightRotate_64((a), 13)) +#define rightRotate14_64(a) (rightRotate_64((a), 14)) +#define rightRotate15_64(a) (rightRotate_64((a), 15)) +#define rightRotate16_64(a) (rightRotate_64((a), 16)) +#define rightRotate17_64(a) (rightRotate_64((a), 17)) +#define rightRotate18_64(a) (rightRotate_64((a), 18)) +#define rightRotate19_64(a) (rightRotate_64((a), 19)) +#define rightRotate20_64(a) (rightRotate_64((a), 20)) +#define rightRotate21_64(a) (rightRotate_64((a), 21)) +#define rightRotate22_64(a) (rightRotate_64((a), 22)) +#define rightRotate23_64(a) (rightRotate_64((a), 23)) +#define rightRotate24_64(a) (rightRotate_64((a), 24)) +#define rightRotate25_64(a) (rightRotate_64((a), 25)) +#define rightRotate26_64(a) (rightRotate_64((a), 26)) +#define rightRotate27_64(a) (rightRotate_64((a), 27)) +#define rightRotate28_64(a) (rightRotate_64((a), 28)) +#define rightRotate29_64(a) (rightRotate_64((a), 29)) +#define rightRotate30_64(a) (rightRotate_64((a), 30)) +#define rightRotate31_64(a) (rightRotate_64((a), 31)) +#define rightRotate32_64(a) (rightRotate_64((a), 32)) +#define rightRotate33_64(a) (rightRotate_64((a), 33)) +#define rightRotate34_64(a) (rightRotate_64((a), 34)) +#define rightRotate35_64(a) (rightRotate_64((a), 35)) +#define rightRotate36_64(a) (rightRotate_64((a), 36)) +#define rightRotate37_64(a) (rightRotate_64((a), 37)) +#define rightRotate38_64(a) (rightRotate_64((a), 38)) +#define rightRotate39_64(a) (rightRotate_64((a), 39)) +#define rightRotate40_64(a) (rightRotate_64((a), 40)) +#define rightRotate41_64(a) (rightRotate_64((a), 41)) +#define rightRotate42_64(a) (rightRotate_64((a), 42)) +#define rightRotate43_64(a) (rightRotate_64((a), 43)) +#define rightRotate44_64(a) (rightRotate_64((a), 44)) +#define rightRotate45_64(a) (rightRotate_64((a), 45)) +#define rightRotate46_64(a) (rightRotate_64((a), 46)) +#define rightRotate47_64(a) (rightRotate_64((a), 47)) +#define rightRotate48_64(a) (rightRotate_64((a), 48)) +#define rightRotate49_64(a) (rightRotate_64((a), 49)) +#define rightRotate50_64(a) (rightRotate_64((a), 50)) +#define rightRotate51_64(a) (rightRotate_64((a), 51)) +#define rightRotate52_64(a) (rightRotate_64((a), 52)) +#define rightRotate53_64(a) (rightRotate_64((a), 53)) +#define rightRotate54_64(a) (rightRotate_64((a), 54)) +#define rightRotate55_64(a) (rightRotate_64((a), 55)) +#define rightRotate56_64(a) (rightRotate_64((a), 56)) +#define rightRotate57_64(a) (rightRotate_64((a), 57)) +#define rightRotate58_64(a) (rightRotate_64((a), 58)) +#define rightRotate59_64(a) (rightRotate_64((a), 59)) +#define rightRotate60_64(a) (rightRotate_64((a), 60)) +#define rightRotate61_64(a) (rightRotate_64((a), 61)) +#define rightRotate62_64(a) (rightRotate_64((a), 62)) +#define rightRotate63_64(a) (rightRotate_64((a), 63)) + +/* Rotate a 16-bit value left by a number of bits */ +#define leftRotate_16(a, bits) \ + (__extension__ ({ \ + uint16_t _temp = (a); \ + (_temp << (bits)) | (_temp >> (16 - (bits))); \ + })) + +/* Rotate a 16-bit value right by a number of bits */ +#define rightRotate_16(a, bits) \ + (__extension__ ({ \ + uint16_t _temp = (a); \ + (_temp >> (bits)) | (_temp << (16 - (bits))); \ + })) + +/* Left rotate by a specific number of bits. These macros may be replaced + * with more efficient ones on platforms that lack a barrel shifter */ +#define leftRotate1_16(a) (leftRotate_16((a), 1)) +#define leftRotate2_16(a) (leftRotate_16((a), 2)) +#define leftRotate3_16(a) (leftRotate_16((a), 3)) +#define leftRotate4_16(a) (leftRotate_16((a), 4)) +#define leftRotate5_16(a) (leftRotate_16((a), 5)) +#define leftRotate6_16(a) (leftRotate_16((a), 6)) +#define leftRotate7_16(a) (leftRotate_16((a), 7)) +#define leftRotate8_16(a) (leftRotate_16((a), 8)) +#define leftRotate9_16(a) (leftRotate_16((a), 9)) +#define leftRotate10_16(a) (leftRotate_16((a), 10)) +#define leftRotate11_16(a) (leftRotate_16((a), 11)) +#define leftRotate12_16(a) (leftRotate_16((a), 12)) +#define leftRotate13_16(a) (leftRotate_16((a), 13)) +#define leftRotate14_16(a) (leftRotate_16((a), 14)) +#define leftRotate15_16(a) (leftRotate_16((a), 15)) + +/* Right rotate by a specific number of bits. These macros may be replaced + * with more efficient ones on platforms that lack a barrel shifter */ +#define rightRotate1_16(a) (rightRotate_16((a), 1)) +#define rightRotate2_16(a) (rightRotate_16((a), 2)) +#define rightRotate3_16(a) (rightRotate_16((a), 3)) +#define rightRotate4_16(a) (rightRotate_16((a), 4)) +#define rightRotate5_16(a) (rightRotate_16((a), 5)) +#define rightRotate6_16(a) (rightRotate_16((a), 6)) +#define rightRotate7_16(a) (rightRotate_16((a), 7)) +#define rightRotate8_16(a) (rightRotate_16((a), 8)) +#define rightRotate9_16(a) (rightRotate_16((a), 9)) +#define rightRotate10_16(a) (rightRotate_16((a), 10)) +#define rightRotate11_16(a) (rightRotate_16((a), 11)) +#define rightRotate12_16(a) (rightRotate_16((a), 12)) +#define rightRotate13_16(a) (rightRotate_16((a), 13)) +#define rightRotate14_16(a) (rightRotate_16((a), 14)) +#define rightRotate15_16(a) (rightRotate_16((a), 15)) + +/* Rotate an 8-bit value left by a number of bits */ +#define leftRotate_8(a, bits) \ + (__extension__ ({ \ + uint8_t _temp = (a); \ + (_temp << (bits)) | (_temp >> (8 - (bits))); \ + })) + +/* Rotate an 8-bit value right by a number of bits */ +#define rightRotate_8(a, bits) \ + (__extension__ ({ \ + uint8_t _temp = (a); \ + (_temp >> (bits)) | (_temp << (8 - (bits))); \ + })) + +/* Left rotate by a specific number of bits. These macros may be replaced + * with more efficient ones on platforms that lack a barrel shifter */ +#define leftRotate1_8(a) (leftRotate_8((a), 1)) +#define leftRotate2_8(a) (leftRotate_8((a), 2)) +#define leftRotate3_8(a) (leftRotate_8((a), 3)) +#define leftRotate4_8(a) (leftRotate_8((a), 4)) +#define leftRotate5_8(a) (leftRotate_8((a), 5)) +#define leftRotate6_8(a) (leftRotate_8((a), 6)) +#define leftRotate7_8(a) (leftRotate_8((a), 7)) + +/* Right rotate by a specific number of bits. These macros may be replaced + * with more efficient ones on platforms that lack a barrel shifter */ +#define rightRotate1_8(a) (rightRotate_8((a), 1)) +#define rightRotate2_8(a) (rightRotate_8((a), 2)) +#define rightRotate3_8(a) (rightRotate_8((a), 3)) +#define rightRotate4_8(a) (rightRotate_8((a), 4)) +#define rightRotate5_8(a) (rightRotate_8((a), 5)) +#define rightRotate6_8(a) (rightRotate_8((a), 6)) +#define rightRotate7_8(a) (rightRotate_8((a), 7)) + +#endif diff --git a/knot/Implementations/crypto_aead/knot128v1/armcortexm_1/encrypt.c b/knot/Implementations/crypto_aead/knot128v1/armcortexm_1/encrypt.c index 2cb824b..1c189fe 100644 --- a/knot/Implementations/crypto_aead/knot128v1/armcortexm_1/encrypt.c +++ b/knot/Implementations/crypto_aead/knot128v1/armcortexm_1/encrypt.c @@ -10,14 +10,14 @@ #define KNOT_CIPHER 1 #if defined(KNOT_CIPHER) && (KNOT_CIPHER == 1) unsigned char constant6[63] = { - 0x01, 0x02, 0x04, 0x08, 0x10, 0x21, 0x03, 0x06, - 0x0c, 0x18, 0x31, 0x22, 0x05, 0x0a, 0x14, 0x29, - 0x13, 0x27, 0x0f, 0x1e, 0x3d, 0x3a, 0x34, 0x28, - 0x11, 0x23, 0x07, 0x0e, 0x1c, 0x39, 0x32, 0x24, - 0x09, 0x12, 0x25, 0x0b, 0x16, 0x2d, 0x1b, 0x37, - 0x2e, 0x1d, 0x3b, 0x36, 0x2c, 0x19, 0x33, 0x26, - 0x0d, 0x1a, 0x35, 0x2a, 0x15, 0x2b, 0x17, 0x2f, - 0x1f, 0x3f, 0x3e, 0x3c, 0x38, 0x30, 0x20 }; + 0x01, 0x02, 0x04, 0x08, 0x10, 0x21, 0x03, 0x06, + 0x0c, 0x18, 0x31, 0x22, 0x05, 0x0a, 0x14, 0x29, + 0x13, 0x27, 0x0f, 0x1e, 0x3d, 0x3a, 0x34, 0x28, + 0x11, 0x23, 0x07, 0x0e, 0x1c, 0x39, 0x32, 0x24, + 0x09, 0x12, 0x25, 0x0b, 0x16, 0x2d, 0x1b, 0x37, + 0x2e, 0x1d, 0x3b, 0x36, 0x2c, 0x19, 0x33, 0x26, + 0x0d, 0x1a, 0x35, 0x2a, 0x15, 0x2b, 0x17, 0x2f, + 0x1f, 0x3f, 0x3e, 0x3c, 0x38, 0x30, 0x20 }; /* State * w4 w0 @@ -26,225 +26,261 @@ unsigned char constant6[63] = { * w7 w3 * * Sbox - t1 = ~a; - t2 = b & t1; - t3 = c ^ t2; - h = d ^ t3; - t5 = b | c; - t6 = d ^ t1; - g = t5 ^ t6; - t8 = b ^ d; - t9 = t3 & t6; - e = t8 ^ t9; - t11 = g & t8; - f = t3 ^ t11; + t1 = ~a; + t2 = b & t1; + t3 = c ^ t2; + h = d ^ t3; + t5 = b | c; + t6 = d ^ t1; + g = t5 ^ t6; + t8 = b ^ d; + t9 = t3 & t6; + e = t8 ^ t9; + t11 = g & t8; + f = t3 ^ t11; * * Sbox after change - a = ~a; - s0 = b & a; - s0 = c ^ s0; - c = b | c; - a = d ^ a; - c = c ^ a; - s1 = b ^ d; - d = d ^ s0; - a = s0 & a; - a = s1 ^ a; - b = c & s1; - b = s0 ^ b; + a = ~a; + s0 = b & a; + s0 = c ^ s0; + c = b | c; + a = d ^ a; + c = c ^ a; + s1 = b ^ d; + d = d ^ s0; + a = s0 & a; + a = s1 ^ a; + b = c & s1; + b = s0 ^ b; */ static void permutation256(unsigned char *in, int rounds, unsigned char *rc) { - uint32_t w0, w1, w2, w3, w4, w5, w6, w7; - uint32_t s0, s1, s2; - uint32_t one = 0x1; - uint32_t ff = 0xff; - __asm volatile( - "enc_loop_%=: \n\t" - "ldr %[w0], [%[in]] \n\t" - "ldr %[w4], [%[in], #4] \n\t" - "ldr %[w1], [%[in], #8] \n\t" - "ldr %[w5], [%[in], #12] \n\t" - "ldr %[w2], [%[in], #16] \n\t" - "ldr %[w6], [%[in], #20] \n\t" - "ldr %[w3], [%[in], #24] \n\t" - "ldr %[w7], [%[in], #28] \n\t" - "mov %[s0], 0xfff \n\t" - "mov %[s2], 0x1fff \n\t" - "lsl %[s2], %[s2], #12 \n\t" - "eors %[s2], %[s2], %[s0] \n\t" - "/*add round const*/ \n\t" - "ldrb %[s0], [%[rc]] \n\t" - "eors %[w0], %[w0], %[s0] \n\t" - "/*sbox first column*/ \n\t" - "mvns %[w0], %[w0] \n\t" - "ands %[s0], %[w1], %[w0] \n\t" - "eors %[s0], %[w2], %[s0] \n\t" - "orrs %[w2], %[w1], %[w2] \n\t" - "eors %[w0], %[w3], %[w0] \n\t" - "eors %[w2], %[w2], %[w0] \n\t" - "eors %[s1], %[w1], %[w3] \n\t" - "eors %[w3], %[w3], %[s0] \n\t" - "ands %[w0], %[s0], %[w0] \n\t" - "eors %[w0], %[s1], %[w0] \n\t" - "ands %[w1], %[w2], %[s1] \n\t" - "eors %[w1], %[s0], %[w1] \n\t" - "/*sbox second column*/ \n\t" - "mvns %[w4], %[w4] \n\t" - "ands %[s0], %[w5], %[w4] \n\t" - "eors %[s0], %[w6], %[s0] \n\t" - "orrs %[w6], %[w5], %[w6] \n\t" - "eors %[w4], %[w7], %[w4] \n\t" - "eors %[w6], %[w6], %[w4] \n\t" - "eors %[s1], %[w5], %[w7] \n\t" - "eors %[w7], %[w7], %[s0] \n\t" - "ands %[w4], %[s0], %[w4] \n\t" - "eors %[w4], %[s1], %[w4] \n\t" - "ands %[w5], %[w6], %[s1] \n\t" - "eors %[w5], %[s0], %[w5] \n\t" - "/*rotate shift left 1 bit*/ \n\t" - "ror %[s0], %[w1], #31 \n\t" - "ands %[s0], %[s0], %[one] \n\t" - "lsl %[w1], %[w1], #1 \n\t" - "ror %[s1], %[w5], #31 \n\t" - "ands %[s1], %[s1], %[one] \n\t" - "eors %[w1], %[w1], %[s1] \n\t" - "lsl %[w5], %[w5], #1 \n\t" - "eors %[w5], %[w5], %[s0] \n\t" - "/*rotate shift left 8 bits*/ \n\t" - "ror %[s0], %[w2], #24 \n\t" - "ands %[s0], %[s0], %[ff] \n\t" - "lsl %[w2], %[w2], #8 \n\t" - "ror %[s1], %[w6], #24 \n\t" - "ands %[s1], %[s1], %[ff] \n\t" - "eors %[w2], %[w2], %[s1] \n\t" - "lsl %[w6], %[w6], #8 \n\t" - "eors %[w6], %[w6], %[s0] \n\t" - "/*rotate shift left 25 bits*/ \n\t" - "ror %[s0], %[w3], #7 \n\t" - "ands %[s0], %[s0], %[s2] \n\t" - "lsl %[w3], %[w3], #25 \n\t" - "ror %[s1], %[w7], #7 \n\t" - "ands %[s1], %[s1], %[s2] \n\t" - "eors %[w3], %[w3], %[s1] \n\t" - "lsl %[w7], %[w7], #25 \n\t" - "eors %[w7], %[w7], %[s0] \n\t" - "/*loop control*/ \n\t" - "adds %[rc], %[rc], #1 \n\t" - "subs %[rounds], %[rounds], #1 \n\t" - "bne enc_loop_%= \n\t" - "str %[w0], [%[in]] \n\t" - "str %[w4], [%[in], #4] \n\t" - "str %[w1], [%[in], #8] \n\t" - "str %[w5], [%[in], #12] \n\t" - "str %[w2], [%[in], #16] \n\t" - "str %[w6], [%[in], #20] \n\t" - "str %[w3], [%[in], #24] \n\t" - "str %[w7], [%[in], #28] \n\t" - - : [rounds] "=r" (rounds), [rc] "=r" (rc), - [w0] "=r" (w0), [w1] "=r" (w1), [w2] "=r" (w2), [w3] "=r" (w3), - [w4] "=r" (w4), [w5] "=r" (w5), [w6] "=r" (w6), [w7] "=r" (w7), - [s0] "=r" (s0), [s1] "=r" (s1), [s2] "=r" (s2) - : [in] "r" (in), "[rounds]" (rounds), "[rc]" (rc), [ff] "r" (ff), [one] "r" (one) - ); + /* ----------------------------------- */ + /* r0 - point of plain keys */ + /* r1 - rounds */ + /* r2 - round constants */ + /* r3 - tmp 0 */ + /* r4 - p0 lower 32 bits */ + /* r5 - p1 lower 32 bits */ + /* r6 - p2 lower 32 bits */ + /* r7 - p3 lower 32 bits */ + /* r8 - p0 32 bits */ + /* r9 - p1 32 bits */ + /* r10 - p2 32 bits */ + /* r11 - p3 32 bits */ + /* r12 - tmp 1 */ + /* r14 - tmp 2 */ + asm volatile ( + /* + * http://stackoverflow.com/questions/261419/arm-to-c-calling-convention-registers-to-save + * + * the first argument is stored in r0, the second in r1, third in r2 and fourth in r3 + * if add '!', the value will be updated + */ + "sub sp, sp, #12 \n\t" + "/* store 0xff */ \n\t" + "mov r3, 0xff \n\t" + "str r3, [sp, #4] \n\t" + "/* store 0x1ffffff */ \n\t" + "mov r12, r3 \n\t" + "lsl r3, r3, #8 \n\t" + "eors r3, r3, r12 \n\t" + "lsl r3, r3, #8 \n\t" + "eors r3, r3, r12 \n\t" + "lsl r3, r3, #1 \n\t" + "mov r14, 0x1 \n\t" + "eors r3, r3, r14 \n\t" + "str r3, [sp] \n\t" + "/* store 0x1 */ \n\t" + "str r14, [sp, #8] \n\t" + "/* load plain text */\n\t" + "ldr r4, [%[in]] \n\t" + "ldr r8, [%[in], #4] \n\t" + "ldr r5, [%[in], #8] \n\t" + "ldr r9, [%[in], #12] \n\t" + "ldr r6, [%[in], #16] \n\t" + "ldr r10, [%[in], #20] \n\t" + "ldr r7, [%[in], #24] \n\t" + "ldr r11, [%[in], #28] \n\t" + "enc_loop: \n\t" + "/*add round const*/ \n\t" + "ldrb r3, [%[rc]] \n\t" + "eors r4, r4, r3 \n\t" + "/*sbox first column*/ \n\t" + "mvns r4, r4 \n\t" + "ands r3, r5, r4 \n\t" + "eors r3, r6, r3 \n\t" + "orrs r6, r5, r6 \n\t" + "eors r4, r7, r4 \n\t" + "eors r6, r6, r4 \n\t" + "eors r12, r5, r7 \n\t" + "eors r7, r7, r3 \n\t" + "ands r4, r3, r4 \n\t" + "eors r4, r12,r4 \n\t" + "ands r5, r6, r12 \n\t" + "eors r5, r3, r5 \n\t" + "/*sbox second column*/ \n\t" + "mvns r8, r8 \n\t" + "ands r3, r9, r8 \n\t" + "eors r3, r10,r3 \n\t" + "orrs r10, r9, r10 \n\t" + "eors r8, r11,r8 \n\t" + "eors r10, r10,r8 \n\t" + "eors r12, r9, r11 \n\t" + "eors r11, r11,r3 \n\t" + "ands r8, r3, r8 \n\t" + "eors r8, r12,r8 \n\t" + "ands r9, r10,r12 \n\t" + "eors r9, r3, r9 \n\t" + "/*rotate shift left 1 bit*/ \n\t" + "ldr r14, [sp, #8] \n\t" + "ror r3, r5, #31 \n\t" + "ands r3, r3, r14 \n\t" + "lsl r5, r5, #1 \n\t" + "ror r12, r9, #31 \n\t" + "ands r12, r12,r14 \n\t" + "eors r5, r5, r12 \n\t" + "lsl r9, r9, #1 \n\t" + "eors r9, r9, r3 \n\t" + "/*rotate shift left 8 bits*/ \n\t" + "ldr r14, [sp, #4] \n\t" + "ror r3, r6, #24 \n\t" + "ands r3, r3, r14 \n\t" + "lsl r6, r6, #8 \n\t" + "ror r12, r10,#24 \n\t" + "ands r12, r12,r14 \n\t" + "eors r6, r6, r12 \n\t" + "lsl r10, r10,#8 \n\t" + "eors r10, r10,r3 \n\t" + "/*rotate shift left 25 bits*/ \n\t" + "ldr r14, [sp] \n\t" + "ror r3, r7, #7 \n\t" + "ands r3, r3, r14 \n\t" + "lsl r7, r7, #25 \n\t" + "ror r12, r11,#7 \n\t" + "ands r12, r12,r14 \n\t" + "eors r7, r7, r12 \n\t" + "lsl r11, r11,#25 \n\t" + "eors r11, r11,r3 \n\t" + "/*loop control*/ \n\t" + "adds %[rc], %[rc], #1 \n\t" + "subs %[ro], %[ro], #1 \n\t" + "bne enc_loop \n\t" + "str r4, [%[in]] \n\t" + "str r8, [%[in], #4] \n\t" + "str r5, [%[in], #8] \n\t" + "str r9, [%[in], #12] \n\t" + "str r6, [%[in], #16] \n\t" + "str r10, [%[in], #20] \n\t" + "str r7, [%[in], #24] \n\t" + "str r11, [%[in], #28] \n\t" + /* ----------------------------- */ + "add sp, sp, #12 \n\t" + : /* output variables - including inputs that are changed */ + [ro] "=r" (rounds), [rc] "=r" (rc) + : /* input variables */ + [in] "r" (in), "[ro]" (rounds), "[rc]" (rc) + : /* clobber registers for temporary values */ + "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", + "r11", "r12", "r14" +); } int crypto_aead_encrypt(unsigned char *c, unsigned long long *clen, const unsigned char *m, unsigned long long mlen, - const unsigned char *ad, unsigned long long adlen, - const unsigned char *nsec, const unsigned char *npub, - const unsigned char *k) { - unsigned int u = 0; - unsigned int v = 0; - unsigned int v1 = 0; - unsigned int i; - unsigned int last_index = 0; - unsigned char *A = NULL; - unsigned char *M = NULL; - unsigned char S[32]; - unsigned int *A32 = NULL; - unsigned int *M32 = NULL; - unsigned int *S32 = NULL; - unsigned int *C32 = NULL; + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, const unsigned char *npub, + const unsigned char *k) { + unsigned int u = 0; + unsigned int v = 0; + unsigned int v1 = 0; + unsigned int i; + unsigned int last_index = 0; + unsigned char *A = NULL; + unsigned char *M = NULL; + unsigned char S[32]; + unsigned int *A32 = NULL; + unsigned int *M32 = NULL; + unsigned int *S32 = NULL; + unsigned int *C32 = NULL; - // pad associated data - if (adlen != 0) { - u = (adlen + 8) >> 3; - A = malloc(u << 3); - if (A == NULL) { - return -1; - } - memset(A, 0, u << 3); - memcpy(A, ad, adlen); - A[adlen] = 0x01; - A32 = (unsigned int *)A; - } + // pad associated data + if (adlen != 0) { + u = (adlen + 8) >> 3; + A = malloc(u << 3); + if (A == NULL) { + return -1; + } + memset(A, 0, u << 3); + memcpy(A, ad, adlen); + A[adlen] = 0x01; + A32 = (unsigned int *)A; + } - // pad plaintext data - if (mlen != 0) { - v = (mlen + 8) >> 3; - M = malloc(v << 3); - if (M == NULL) { - free(A); - return -1; - } - memset(M, 0, v << 3); - memcpy(M, m, mlen); - M[mlen] = 0x01; - M32 = (unsigned int *)M; - } + // pad plaintext data + if (mlen != 0) { + v = (mlen + 8) >> 3; + M = malloc(v << 3); + if (M == NULL) { + free(A); + return -1; + } + memset(M, 0, v << 3); + memcpy(M, m, mlen); + M[mlen] = 0x01; + M32 = (unsigned int *)M; + } - // initalization - memcpy(S, npub, CRYPTO_NPUBBYTES); - memcpy(S + CRYPTO_NPUBBYTES, k, CRYPTO_KEYBYTES); - permutation256(S, 52, constant6); - S32 = (unsigned int *)S; + // initalization + memcpy(S, npub, CRYPTO_NPUBBYTES); + memcpy(S + CRYPTO_NPUBBYTES, k, CRYPTO_KEYBYTES); + permutation256(S, 52, constant6); + S32 = (unsigned int *)S; - // processiong associated data - if (adlen != 0) { - for (i = 0; i < u; i++) { - S32[0] ^= A32[0]; - S32[1] ^= A32[1]; - A32 = A32 + 2; - permutation256(S, 28, constant6); - } - } - S[31] ^= 0x80; + // processiong associated data + if (adlen != 0) { + for (i = 0; i < u; i++) { + S32[0] ^= A32[0]; + S32[1] ^= A32[1]; + A32 = A32 + 2; + permutation256(S, 28, constant6); + } + } + S[31] ^= 0x80; - // Encryption processiong plaintext data - if (mlen != 0) { - C32 = (unsigned int *)c; - for (i = 0; i < v - 1; i++) { - S32[0] ^= M32[0]; - S32[1] ^= M32[1]; - M32 = M32 + 2; - C32[0] = S32[0]; - C32[1] = S32[1]; - C32 = C32 + 2; - permutation256(S, 28, constant6); - } - v1 = mlen % 8; - last_index = (v - 1) << 3; - for (i = 0; i < v1; i++) { - S[i] ^= M[last_index + i]; - c[last_index + i] = S[i]; - } - S[i] ^= 0x01; - } + // Encryption processiong plaintext data + if (mlen != 0) { + C32 = (unsigned int *)c; + for (i = 0; i < v - 1; i++) { + S32[0] ^= M32[0]; + S32[1] ^= M32[1]; + M32 = M32 + 2; + C32[0] = S32[0]; + C32[1] = S32[1]; + C32 = C32 + 2; + permutation256(S, 28, constant6); + } + v1 = mlen % 8; + last_index = (v - 1) << 3; + for (i = 0; i < v1; i++) { + S[i] ^= M[last_index + i]; + c[last_index + i] = S[i]; + } + S[i] ^= 0x01; + } - // finalization - permutation256(S, 32, constant6); + // finalization + permutation256(S, 32, constant6); - // return tag - memcpy(c + mlen, S, CRYPTO_ABYTES); - *clen = mlen + CRYPTO_ABYTES; - if (A != NULL) { - free(A); - } - if (M != NULL) { - free(M); - } - return 0; + // return tag + memcpy(c + mlen, S, CRYPTO_ABYTES); + *clen = mlen + CRYPTO_ABYTES; + if (A != NULL) { + free(A); + } + if (M != NULL) { + free(M); + } + return 0; } int crypto_aead_decrypt(unsigned char *m, unsigned long long *mlen, @@ -253,107 +289,107 @@ int crypto_aead_decrypt(unsigned char *m, unsigned long long *mlen, const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) { - unsigned int u; - unsigned int v = ((clen - CRYPTO_ABYTES) >> 3) + 1; - unsigned int v1; - unsigned int last_index; - unsigned int i; - unsigned char *A = NULL; - unsigned char S[32]; - unsigned int *A32 = NULL; - unsigned int *M32 = NULL; - unsigned int *S32 = NULL; - unsigned int *C32 = NULL; + unsigned int u = 0; + unsigned int v = ((clen - CRYPTO_ABYTES) >> 3) + 1; + unsigned int v1; + unsigned int last_index; + unsigned int i; + unsigned char *A = NULL; + unsigned char S[32]; + unsigned int *A32 = NULL; + unsigned int *M32 = NULL; + unsigned int *S32 = NULL; + unsigned int *C32 = NULL; - *mlen = 0; - if (clen < CRYPTO_ABYTES) { - return -1; - } + *mlen = 0; + if (clen < CRYPTO_ABYTES) { + return -1; + } - // pad associated data - if (adlen != 0) { - u = (adlen + 8) >> 3; - A = malloc(u << 3); - if (A == NULL) { - return -1; - } - memset(A, 0, u << 3); - memcpy(A, ad, adlen); - A[adlen] = 0x01; - A32 = (unsigned int *)A; - } - - M32 = (unsigned int *)m; - C32 = (unsigned int *)c; + // pad associated data + if (adlen != 0) { + u = (adlen + 8) >> 3; + A = malloc(u << 3); + if (A == NULL) { + return -1; + } + memset(A, 0, u << 3); + memcpy(A, ad, adlen); + A[adlen] = 0x01; + A32 = (unsigned int *)A; + } + + M32 = (unsigned int *)m; + C32 = (unsigned int *)c; - // initalization - memcpy(S, npub, CRYPTO_NPUBBYTES); - memcpy(S + CRYPTO_NPUBBYTES, k, CRYPTO_KEYBYTES); - permutation256(S, 52, constant6); - S32 = (unsigned int *)S; + // initalization + memcpy(S, npub, CRYPTO_NPUBBYTES); + memcpy(S + CRYPTO_NPUBBYTES, k, CRYPTO_KEYBYTES); + permutation256(S, 52, constant6); + S32 = (unsigned int *)S; - // processiong associated data - if (adlen != 0) { - for (i = 0; i < u; i++) { - S32[0] ^= A32[0]; - S32[1] ^= A32[1]; - A32 = A32 + 2; - permutation256(S, 28, constant6); - } - } - S[31] ^= 0x80; + // processiong associated data + if (adlen != 0) { + for (i = 0; i < u; i++) { + S32[0] ^= A32[0]; + S32[1] ^= A32[1]; + A32 = A32 + 2; + permutation256(S, 28, constant6); + } + } + S[31] ^= 0x80; - // Encryption processiong ciphertext data - if (clen != CRYPTO_ABYTES) { - C32 = (unsigned int *)c; - for (i = 0; i < v - 1; i++) { - M32[0] = S32[0] ^ C32[0]; - M32[1] = S32[1] ^ C32[1]; - S32[0] = C32[0]; - S32[1] = C32[1]; - M32 = M32 + 2; - C32 = C32 + 2; - permutation256(S, 28, constant6); - } - v1 = (clen - CRYPTO_ABYTES) % 8; - last_index = (v - 1) << 3; - for (i = 0; i < v1; i++) { - m[last_index + i] = S[i] ^ c[last_index + i]; - S[i] = c[last_index + i]; - } - S[i] ^= 0x01; - } + // Encryption processiong ciphertext data + if (clen != CRYPTO_ABYTES) { + C32 = (unsigned int *)c; + for (i = 0; i < v - 1; i++) { + M32[0] = S32[0] ^ C32[0]; + M32[1] = S32[1] ^ C32[1]; + S32[0] = C32[0]; + S32[1] = C32[1]; + M32 = M32 + 2; + C32 = C32 + 2; + permutation256(S, 28, constant6); + } + v1 = (clen - CRYPTO_ABYTES) % 8; + last_index = (v - 1) << 3; + for (i = 0; i < v1; i++) { + m[last_index + i] = S[i] ^ c[last_index + i]; + S[i] = c[last_index + i]; + } + S[i] ^= 0x01; + } - // finalization - permutation256(S, 32, constant6); + // finalization + permutation256(S, 32, constant6); - // return -1 if verification fails - for (i = 0; i < CRYPTO_ABYTES; i++) { - if (c[clen - CRYPTO_ABYTES + i] != S[i]) { - memset(m, 0, clen - CRYPTO_ABYTES); - return -1; - } - } - *mlen = clen - CRYPTO_ABYTES; - if (A != NULL) { - free(A); - } - return 0; + // return -1 if verification fails + for (i = 0; i < CRYPTO_ABYTES; i++) { + if (c[clen - CRYPTO_ABYTES + i] != S[i]) { + memset(m, 0, clen - CRYPTO_ABYTES); + return -1; + } + } + *mlen = clen - CRYPTO_ABYTES; + if (A != NULL) { + free(A); + } + return 0; } #else int crypto_aead_encrypt(unsigned char *c, unsigned long long *clen, const unsigned char *m, unsigned long long mlen, - const unsigned char *ad, unsigned long long adlen, - const unsigned char *nsec, const unsigned char *npub, - const unsigned char *k) { - return 0; + const unsigned char *ad, unsigned long long adlen, + const unsigned char *nsec, const unsigned char *npub, + const unsigned char *k) { + return 0; } int crypto_aead_decrypt(unsigned char *m, unsigned long long *mlen, unsigned char *nsec, const unsigned char *c, unsigned long long clen, const unsigned char *ad, unsigned long long adlen, const unsigned char *npub, const unsigned char *k) { - return 0; + return 0; } #endif