From 4eeaf6aa9c049fe55e43ea6c6460f70e966e70dd Mon Sep 17 00:00:00 2001 From: Enrico Pozzobon Date: Thu, 11 Jun 2020 22:56:14 +0200 Subject: [PATCH] correction: apparently hyenav2 was never tested here, it was hyenav1 --- hyena/Implementations/crypto_aead/hyenav1/rhys-avr/aead-common.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/aead-common.h | 256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/api.h | 5 +++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/encrypt.c | 26 ++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/hyena.c | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/hyena.h | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128-config.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128.c | 1498 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128.h | 246 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-avr.S | 4712 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-full-avr.S | 8173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-small-avr.S | 9331 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-tiny-avr.S | 9480 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-util.h | 702 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ hyena/Implementations/crypto_aead/hyenav2/LWC_AEAD_KAT_128_96.txt | 7623 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/aead-common.c | 69 --------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/aead-common.h | 256 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/api.h | 5 ----- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/encrypt.c | 26 -------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/hyena.c | 293 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/hyena.h | 126 ------------------------------------------------------------------------------------------------------------------------------ hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128-config.h | 80 -------------------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128.c | 1498 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128.h | 246 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-avr.S | 4712 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-full-avr.S | 8173 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-small-avr.S | 9331 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-tiny-avr.S | 9480 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-util.h | 702 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 29 files changed, 34997 insertions(+), 42620 deletions(-) create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/aead-common.c create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/aead-common.h create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/api.h create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/encrypt.c create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/hyena.c create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/hyena.h create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128-config.h create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128.c create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128.h create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-avr.S create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-full-avr.S create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-small-avr.S create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-tiny-avr.S create mode 100644 hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-util.h delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/LWC_AEAD_KAT_128_96.txt delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/aead-common.c delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/aead-common.h delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/api.h delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/encrypt.c delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/hyena.c delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/hyena.h delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128-config.h delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128.c delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128.h delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-avr.S delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-full-avr.S delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-small-avr.S delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-tiny-avr.S delete mode 100644 hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-util.h diff --git a/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/aead-common.c b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/aead-common.c new file mode 100644 index 0000000..84fc53a --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/aead-common.h b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/aead-common.h new file mode 100644 index 0000000..2be95eb --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/api.h b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/api.h new file mode 100644 index 0000000..c3c0a27 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/encrypt.c b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/encrypt.c new file mode 100644 index 0000000..db50784 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/hyena.c b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/hyena.c new file mode 100644 index 0000000..db5ba2b --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/hyena.h b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/hyena.h new file mode 100644 index 0000000..ee9bb9c --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/internal-gift128-config.h b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128-config.h new file mode 100644 index 0000000..62131ba --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/internal-gift128.c b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128.c new file mode 100644 index 0000000..c6ac5ec --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/internal-gift128.h b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128.h new file mode 100644 index 0000000..f57d143 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/internal-gift128n-avr.S b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-avr.S new file mode 100644 index 0000000..2aae304 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-avr.S @@ -0,0 +1,4712 @@ +#if defined(__AVR__) +#include +/* Automatically generated - do not edit */ + + .section .progmem.data,"a",@progbits + .p2align 8 + .type table_0, @object + .size table_0, 40 +table_0: + .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_init + .type gift128n_init, @function +gift128n_init: + movw r30,r24 + movw r26,r22 +.L__stack_usage = 2 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + std Z+12,r18 + std Z+13,r19 + std Z+14,r20 + std Z+15,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + std Z+8,r18 + std Z+9,r19 + std Z+10,r20 + std Z+11,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + std Z+4,r18 + std Z+5,r19 + std Z+6,r20 + std Z+7,r21 + ld r18,X+ + ld r19,X+ + ld r20,X+ + ld r21,X+ + st Z,r18 + std Z+1,r19 + std Z+2,r20 + std Z+3,r21 + 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 + sbiw r28,16 + in r0,0x3f + cli + out 0x3e,r29 + out 0x3f,r0 + out 0x3d,r28 +.L__stack_usage = 36 + 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 + ld r26,Z + ldd r27,Z+1 + ldd r24,Z+2 + ldd r25,Z+3 + 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 + 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 + std Y+9,r26 + std Y+10,r27 + std Y+11,r24 + std Y+12,r25 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r24,Z+14 + ldd r25,Z+15 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r17,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r17 +#endif + mov r16,r1 +302: + rcall 455f + 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 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + mov r0,r1 + lsr r25 + ror r24 + ror r0 + lsr r25 + ror r24 + ror r0 + or r25,r0 + std Y+13,r26 + std Y+14,r27 + std Y+15,r24 + std Y+16,r25 + ldd r26,Y+9 + ldd r27,Y+10 + ldd r24,Y+11 + ldd r25,Y+12 + rcall 455f + 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 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + mov r0,r1 + 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 + ldd r26,Y+5 + ldd r27,Y+6 + ldd r24,Y+7 + ldd r25,Y+8 + rcall 455f + 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 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + mov r0,r1 + 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,Y+1 + ldd r27,Y+2 + ldd r24,Y+3 + ldd r25,Y+4 + rcall 455f + 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 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + lsl r26 + rol r27 + adc r26,r1 + mov r0,r1 + 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,Y+13 + ldd r27,Y+14 + ldd r24,Y+15 + ldd r25,Y+16 + ldi r17,40 + cpse r16,r17 + rjmp 302b + rjmp 804f +455: + 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 + movw r18,r22 + movw r20,r2 + mov r0,r4 + and r0,r18 + eor r8,r0 + mov r0,r5 + and r0,r19 + eor r9,r0 + mov r0,r6 + and r0,r20 + eor r10,r0 + mov r0,r7 + and r0,r21 + eor r11,r0 + movw r22,r12 + movw r2,r14 + movw r12,r18 + movw r14,r20 + bst r22,1 + bld r0,0 + bst r22,4 + bld r22,1 + bst r2,0 + bld r22,4 + bst r22,2 + bld r2,0 + bst r23,0 + bld r22,2 + bst r22,3 + bld r23,0 + bst r23,4 + bld r22,3 + bst r2,3 + bld r23,4 + bst r23,6 + bld r2,3 + bst r3,3 + bld r23,6 + bst r23,5 + bld r3,3 + bst r2,7 + bld r23,5 + bst r3,6 + bld r2,7 + bst r3,1 + bld r3,6 + bst r22,5 + bld r3,1 + bst r2,4 + bld r22,5 + bst r2,2 + bld r2,4 + bst r23,2 + bld r2,2 + bst r23,3 + bld r23,2 + bst r23,7 + bld r23,3 + bst r3,7 + bld r23,7 + bst r3,5 + bld r3,7 + bst r2,5 + bld r3,5 + bst r2,6 + bld r2,5 + bst r3,2 + bld r2,6 + bst r23,1 + bld r3,2 + bst r22,7 + bld r23,1 + bst r3,4 + bld r22,7 + bst r2,1 + bld r3,4 + bst r22,6 + bld r2,1 + bst r3,0 + bld r22,6 + bst r0,0 + bld r3,0 + bst r4,0 + bld r0,0 + bst r4,1 + bld r4,0 + bst r4,5 + bld r4,1 + bst r6,5 + bld r4,5 + bst r6,7 + bld r6,5 + bst r7,7 + bld r6,7 + bst r7,6 + bld r7,7 + bst r7,2 + bld r7,6 + bst r5,2 + bld r7,2 + bst r5,0 + bld r5,2 + bst r0,0 + bld r5,0 + bst r4,2 + bld r0,0 + bst r5,1 + bld r4,2 + bst r4,4 + bld r5,1 + bst r6,1 + bld r4,4 + bst r4,7 + bld r6,1 + bst r7,5 + bld r4,7 + bst r6,6 + bld r7,5 + bst r7,3 + bld r6,6 + bst r5,6 + bld r7,3 + bst r7,0 + bld r5,6 + bst r0,0 + bld r7,0 + bst r4,3 + bld r0,0 + bst r5,5 + bld r4,3 + bst r6,4 + bld r5,5 + bst r6,3 + bld r6,4 + bst r5,7 + bld r6,3 + bst r7,4 + bld r5,7 + bst r6,2 + bld r7,4 + bst r5,3 + bld r6,2 + bst r5,4 + bld r5,3 + bst r6,0 + bld r5,4 + bst r0,0 + bld r6,0 + 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 r8,2 + bld r8,0 + bst r9,2 + bld r8,2 + bst r9,1 + bld r9,2 + bst r8,5 + bld r9,1 + bst r10,6 + bld r8,5 + bst r11,0 + bld r10,6 + bst r8,3 + bld r11,0 + bst r9,6 + bld r8,3 + bst r11,1 + bld r9,6 + bst r8,7 + bld r11,1 + bst r11,6 + bld r8,7 + bst r11,3 + bld r11,6 + bst r9,7 + bld r11,3 + bst r11,5 + bld r9,7 + bst r10,7 + bld r11,5 + bst r11,4 + bld r10,7 + bst r10,3 + bld r11,4 + bst r9,4 + bld r10,3 + bst r10,1 + bld r9,4 + bst r8,4 + bld r10,1 + bst r10,2 + bld r8,4 + bst r9,0 + bld r10,2 + bst r8,1 + bld r9,0 + bst r8,6 + bld r8,1 + bst r11,2 + bld r8,6 + bst r9,3 + bld r11,2 + bst r9,5 + bld r9,3 + bst r10,5 + bld r9,5 + bst r10,4 + bld r10,5 + bst r10,0 + bld r10,4 + bst r0,0 + bld r10,0 + bst r12,0 + bld r0,0 + bst r12,3 + bld r12,0 + bst r13,7 + bld r12,3 + bst r15,6 + bld r13,7 + bst r15,0 + bld r15,6 + bst r0,0 + bld r15,0 + bst r12,1 + bld r0,0 + bst r12,7 + bld r12,1 + bst r15,7 + bld r12,7 + bst r15,4 + bld r15,7 + bst r14,0 + bld r15,4 + bst r0,0 + bld r14,0 + bst r12,2 + bld r0,0 + bst r13,3 + bld r12,2 + bst r13,6 + bld r13,3 + bst r15,2 + bld r13,6 + bst r13,0 + bld r15,2 + bst r0,0 + bld r13,0 + bst r12,4 + bld r0,0 + bst r14,3 + bld r12,4 + bst r13,5 + bld r14,3 + bst r14,6 + bld r13,5 + bst r15,1 + bld r14,6 + bst r0,0 + bld r15,1 + bst r12,5 + bld r0,0 + bst r14,7 + bld r12,5 + bst r15,5 + bld r14,7 + bst r14,4 + bld r15,5 + bst r14,1 + bld r14,4 + bst r0,0 + bld r14,1 + bst r12,6 + bld r0,0 + bst r15,3 + bld r12,6 + bst r13,4 + bld r15,3 + bst r14,2 + bld r13,4 + bst r13,1 + bld r14,2 + bst r0,0 + bld r13,1 + eor r4,r26 + eor r5,r27 + eor r6,r24 + eor r7,r25 + ldi r18,128 + eor r15,r18 + 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 + inc r16 + ret +804: +#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 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 + + .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 + 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 + 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 + 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 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r17,hh8(table_0) + 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 + 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 + ld r26,Z + ldd r27,Z+1 + ldd r16,Z+2 + ldd r17,Z+3 + 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 + 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 + std Y+9,r26 + std Y+10,r27 + std Y+11,r16 + std Y+12,r17 + ldd r26,Z+12 + ldd r27,Z+13 + ldd r16,Z+14 + ldd r17,Z+15 + std Y+13,r26 + std Y+14,r27 + std Y+15,r16 + std Y+16,r17 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r26,hh8(table_0) + in r0,_SFR_IO_ADDR(RAMPZ) + push r0 + out _SFR_IO_ADDR(RAMPZ),r26 +#endif + mov r19,r1 + mov r26,r1 +307: + 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 + movw r20,r2 + movw r22,r4 + mov r0,r6 + and r0,r20 + eor r10,r0 + mov r0,r7 + and r0,r21 + eor r11,r0 + mov r0,r8 + and r0,r22 + eor r12,r0 + mov r0,r9 + and r0,r23 + eor r13,r0 + movw r2,r14 + movw r4,r24 + movw r14,r20 + movw r24,r22 + bst r2,1 + bld r0,0 + bst r2,4 + bld r2,1 + bst r4,0 + bld r2,4 + bst r2,2 + bld r4,0 + bst r3,0 + bld r2,2 + bst r2,3 + bld r3,0 + bst r3,4 + bld r2,3 + bst r4,3 + bld r3,4 + bst r3,6 + bld r4,3 + bst r5,3 + bld r3,6 + bst r3,5 + bld r5,3 + bst r4,7 + bld r3,5 + bst r5,6 + bld r4,7 + bst r5,1 + bld r5,6 + bst r2,5 + bld r5,1 + bst r4,4 + bld r2,5 + bst r4,2 + bld r4,4 + bst r3,2 + bld r4,2 + bst r3,3 + bld r3,2 + bst r3,7 + bld r3,3 + bst r5,7 + bld r3,7 + bst r5,5 + bld r5,7 + bst r4,5 + bld r5,5 + bst r4,6 + bld r4,5 + bst r5,2 + bld r4,6 + bst r3,1 + bld r5,2 + bst r2,7 + bld r3,1 + bst r5,4 + bld r2,7 + bst r4,1 + bld r5,4 + bst r2,6 + bld r4,1 + bst r5,0 + bld r2,6 + bst r0,0 + bld r5,0 + bst r6,0 + bld r0,0 + bst r6,1 + bld r6,0 + bst r6,5 + bld r6,1 + bst r8,5 + bld r6,5 + bst r8,7 + bld r8,5 + bst r9,7 + bld r8,7 + bst r9,6 + bld r9,7 + bst r9,2 + bld r9,6 + bst r7,2 + bld r9,2 + bst r7,0 + bld r7,2 + bst r0,0 + bld r7,0 + bst r6,2 + bld r0,0 + bst r7,1 + bld r6,2 + bst r6,4 + bld r7,1 + bst r8,1 + bld r6,4 + bst r6,7 + bld r8,1 + bst r9,5 + bld r6,7 + bst r8,6 + bld r9,5 + bst r9,3 + bld r8,6 + bst r7,6 + bld r9,3 + bst r9,0 + bld r7,6 + bst r0,0 + bld r9,0 + bst r6,3 + bld r0,0 + bst r7,5 + bld r6,3 + bst r8,4 + bld r7,5 + bst r8,3 + bld r8,4 + bst r7,7 + bld r8,3 + bst r9,4 + bld r7,7 + bst r8,2 + bld r9,4 + bst r7,3 + bld r8,2 + bst r7,4 + bld r7,3 + bst r8,0 + bld r7,4 + bst r0,0 + bld r8,0 + 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 r10,2 + bld r10,0 + bst r11,2 + bld r10,2 + bst r11,1 + bld r11,2 + bst r10,5 + bld r11,1 + bst r12,6 + bld r10,5 + bst r13,0 + bld r12,6 + bst r10,3 + bld r13,0 + bst r11,6 + bld r10,3 + bst r13,1 + bld r11,6 + bst r10,7 + bld r13,1 + bst r13,6 + bld r10,7 + bst r13,3 + bld r13,6 + bst r11,7 + bld r13,3 + bst r13,5 + bld r11,7 + bst r12,7 + bld r13,5 + bst r13,4 + bld r12,7 + bst r12,3 + bld r13,4 + bst r11,4 + bld r12,3 + bst r12,1 + bld r11,4 + bst r10,4 + bld r12,1 + bst r12,2 + bld r10,4 + bst r11,0 + bld r12,2 + bst r10,1 + bld r11,0 + bst r10,6 + bld r10,1 + bst r13,2 + bld r10,6 + bst r11,3 + bld r13,2 + bst r11,5 + bld r11,3 + bst r12,5 + bld r11,5 + bst r12,4 + bld r12,5 + bst r12,0 + bld r12,4 + bst r0,0 + bld r12,0 + bst r14,0 + bld r0,0 + bst r14,3 + bld r14,0 + bst r15,7 + bld r14,3 + bst r25,6 + bld r15,7 + bst r25,0 + bld r25,6 + bst r0,0 + bld r25,0 + bst r14,1 + bld r0,0 + bst r14,7 + bld r14,1 + bst r25,7 + bld r14,7 + bst r25,4 + bld r25,7 + bst r24,0 + bld r25,4 + bst r0,0 + bld r24,0 + bst r14,2 + bld r0,0 + bst r15,3 + bld r14,2 + bst r15,6 + bld r15,3 + bst r25,2 + bld r15,6 + bst r15,0 + bld r25,2 + bst r0,0 + bld r15,0 + bst r14,4 + bld r0,0 + bst r24,3 + bld r14,4 + bst r15,5 + bld r24,3 + bst r24,6 + bld r15,5 + bst r25,1 + bld r24,6 + bst r0,0 + bld r25,1 + bst r14,5 + bld r0,0 + bst r24,7 + bld r14,5 + bst r25,5 + bld r24,7 + bst r24,4 + bld r25,5 + bst r24,1 + bld r24,4 + bst r0,0 + bld r24,1 + bst r14,6 + bld r0,0 + bst r25,3 + bld r14,6 + bst r15,4 + bld r25,3 + bst r24,2 + bld r15,4 + bst r15,1 + bld r24,2 + bst r0,0 + bld r15,1 + 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 + ldd r20,Y+13 + ldd r21,Y+14 + ldd r22,Y+15 + ldd r23,Y+16 + eor r6,r20 + eor r7,r21 + eor r8,r22 + eor r9,r23 + lsl r20 + rol r21 + adc r20,r1 + lsl r20 + rol r21 + adc r20,r1 + lsl r20 + rol r21 + adc r20,r1 + lsl r20 + rol r21 + adc r20,r1 + mov r0,r1 + lsr r23 + ror r22 + ror r0 + lsr r23 + ror r22 + ror r0 + or r23,r0 + ldd r0,Y+1 + std Y+1,r20 + ldd r20,Y+5 + std Y+5,r0 + ldd r0,Y+9 + std Y+9,r20 + std Y+13,r0 + ldd r0,Y+2 + std Y+2,r21 + ldd r21,Y+6 + std Y+6,r0 + ldd r0,Y+10 + std Y+10,r21 + std Y+14,r0 + ldd r0,Y+3 + std Y+3,r22 + ldd r22,Y+7 + std Y+7,r0 + ldd r0,Y+11 + std Y+11,r22 + std Y+15,r0 + ldd r0,Y+4 + std Y+4,r23 + ldd r23,Y+8 + std Y+8,r0 + ldd r0,Y+12 + std Y+12,r23 + std Y+16,r0 + ldi r20,128 + eor r25,r20 + 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 + inc r19 + cpi r19,40 + breq 727f + inc r26 + ldi r27,5 + cpse r26,r27 + rjmp 307b + mov r26,r1 + eor r2,r18 + eor r3,r18 + eor r4,r18 + eor r5,r18 + rjmp 307b +727: +#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_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 + 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+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 + 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+13,r26 + std Y+14,r27 + std Y+15,r16 + std Y+16,r17 + ldi r30,lo8(table_0) + ldi r31,hi8(table_0) +#if defined(RAMPZ) + ldi r26,hh8(table_0) + 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 diff --git a/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-full-avr.S b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-full-avr.S new file mode 100644 index 0000000..3a7e6fb --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/internal-gift128n-small-avr.S b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-small-avr.S new file mode 100644 index 0000000..6f2d68b --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/internal-gift128n-tiny-avr.S b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-gift128n-tiny-avr.S new file mode 100644 index 0000000..dd1f7b9 --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyenav1/rhys-avr/internal-util.h b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/internal-util.h new file mode 100644 index 0000000..e30166d --- /dev/null +++ b/hyena/Implementations/crypto_aead/hyenav1/rhys-avr/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/hyena/Implementations/crypto_aead/hyenav2/LWC_AEAD_KAT_128_96.txt b/hyena/Implementations/crypto_aead/hyenav2/LWC_AEAD_KAT_128_96.txt deleted file mode 100644 index dee108b..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/LWC_AEAD_KAT_128_96.txt +++ /dev/null @@ -1,7623 +0,0 @@ -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-avr/aead-common.c b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/aead-common.c deleted file mode 100644 index 84fc53a..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/aead-common.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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-avr/aead-common.h b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/aead-common.h deleted file mode 100644 index 2be95eb..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/aead-common.h +++ /dev/null @@ -1,256 +0,0 @@ -/* - * 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-avr/api.h b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/api.h deleted file mode 100644 index c3c0a27..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/api.h +++ /dev/null @@ -1,5 +0,0 @@ -#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-avr/encrypt.c b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/encrypt.c deleted file mode 100644 index db50784..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/encrypt.c +++ /dev/null @@ -1,26 +0,0 @@ - -#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-avr/hyena.c b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/hyena.c deleted file mode 100644 index db5ba2b..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/hyena.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - * 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-avr/hyena.h b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/hyena.h deleted file mode 100644 index ee9bb9c..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/hyena.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * 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-avr/internal-gift128-config.h b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128-config.h deleted file mode 100644 index 62131ba..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128-config.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * 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-avr/internal-gift128.c b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128.c deleted file mode 100644 index c6ac5ec..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128.c +++ /dev/null @@ -1,1498 +0,0 @@ -/* - * 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-avr/internal-gift128.h b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128.h deleted file mode 100644 index f57d143..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128.h +++ /dev/null @@ -1,246 +0,0 @@ -/* - * 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-avr/internal-gift128n-avr.S b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-avr.S deleted file mode 100644 index 2aae304..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-avr.S +++ /dev/null @@ -1,4712 +0,0 @@ -#if defined(__AVR__) -#include -/* Automatically generated - do not edit */ - - .section .progmem.data,"a",@progbits - .p2align 8 - .type table_0, @object - .size table_0, 40 -table_0: - .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_init - .type gift128n_init, @function -gift128n_init: - movw r30,r24 - movw r26,r22 -.L__stack_usage = 2 - ld r18,X+ - ld r19,X+ - ld r20,X+ - ld r21,X+ - std Z+12,r18 - std Z+13,r19 - std Z+14,r20 - std Z+15,r21 - ld r18,X+ - ld r19,X+ - ld r20,X+ - ld r21,X+ - std Z+8,r18 - std Z+9,r19 - std Z+10,r20 - std Z+11,r21 - ld r18,X+ - ld r19,X+ - ld r20,X+ - ld r21,X+ - std Z+4,r18 - std Z+5,r19 - std Z+6,r20 - std Z+7,r21 - ld r18,X+ - ld r19,X+ - ld r20,X+ - ld r21,X+ - st Z,r18 - std Z+1,r19 - std Z+2,r20 - std Z+3,r21 - 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 - sbiw r28,16 - in r0,0x3f - cli - out 0x3e,r29 - out 0x3f,r0 - out 0x3d,r28 -.L__stack_usage = 36 - 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 - ld r26,Z - ldd r27,Z+1 - ldd r24,Z+2 - ldd r25,Z+3 - 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 - 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 - std Y+9,r26 - std Y+10,r27 - std Y+11,r24 - std Y+12,r25 - ldd r26,Z+12 - ldd r27,Z+13 - ldd r24,Z+14 - ldd r25,Z+15 - ldi r30,lo8(table_0) - ldi r31,hi8(table_0) -#if defined(RAMPZ) - ldi r17,hh8(table_0) - in r0,_SFR_IO_ADDR(RAMPZ) - push r0 - out _SFR_IO_ADDR(RAMPZ),r17 -#endif - mov r16,r1 -302: - rcall 455f - 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 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - mov r0,r1 - lsr r25 - ror r24 - ror r0 - lsr r25 - ror r24 - ror r0 - or r25,r0 - std Y+13,r26 - std Y+14,r27 - std Y+15,r24 - std Y+16,r25 - ldd r26,Y+9 - ldd r27,Y+10 - ldd r24,Y+11 - ldd r25,Y+12 - rcall 455f - 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 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - mov r0,r1 - 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 - ldd r26,Y+5 - ldd r27,Y+6 - ldd r24,Y+7 - ldd r25,Y+8 - rcall 455f - 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 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - mov r0,r1 - 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,Y+1 - ldd r27,Y+2 - ldd r24,Y+3 - ldd r25,Y+4 - rcall 455f - 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 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - lsl r26 - rol r27 - adc r26,r1 - mov r0,r1 - 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,Y+13 - ldd r27,Y+14 - ldd r24,Y+15 - ldd r25,Y+16 - ldi r17,40 - cpse r16,r17 - rjmp 302b - rjmp 804f -455: - 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 - movw r18,r22 - movw r20,r2 - mov r0,r4 - and r0,r18 - eor r8,r0 - mov r0,r5 - and r0,r19 - eor r9,r0 - mov r0,r6 - and r0,r20 - eor r10,r0 - mov r0,r7 - and r0,r21 - eor r11,r0 - movw r22,r12 - movw r2,r14 - movw r12,r18 - movw r14,r20 - bst r22,1 - bld r0,0 - bst r22,4 - bld r22,1 - bst r2,0 - bld r22,4 - bst r22,2 - bld r2,0 - bst r23,0 - bld r22,2 - bst r22,3 - bld r23,0 - bst r23,4 - bld r22,3 - bst r2,3 - bld r23,4 - bst r23,6 - bld r2,3 - bst r3,3 - bld r23,6 - bst r23,5 - bld r3,3 - bst r2,7 - bld r23,5 - bst r3,6 - bld r2,7 - bst r3,1 - bld r3,6 - bst r22,5 - bld r3,1 - bst r2,4 - bld r22,5 - bst r2,2 - bld r2,4 - bst r23,2 - bld r2,2 - bst r23,3 - bld r23,2 - bst r23,7 - bld r23,3 - bst r3,7 - bld r23,7 - bst r3,5 - bld r3,7 - bst r2,5 - bld r3,5 - bst r2,6 - bld r2,5 - bst r3,2 - bld r2,6 - bst r23,1 - bld r3,2 - bst r22,7 - bld r23,1 - bst r3,4 - bld r22,7 - bst r2,1 - bld r3,4 - bst r22,6 - bld r2,1 - bst r3,0 - bld r22,6 - bst r0,0 - bld r3,0 - bst r4,0 - bld r0,0 - bst r4,1 - bld r4,0 - bst r4,5 - bld r4,1 - bst r6,5 - bld r4,5 - bst r6,7 - bld r6,5 - bst r7,7 - bld r6,7 - bst r7,6 - bld r7,7 - bst r7,2 - bld r7,6 - bst r5,2 - bld r7,2 - bst r5,0 - bld r5,2 - bst r0,0 - bld r5,0 - bst r4,2 - bld r0,0 - bst r5,1 - bld r4,2 - bst r4,4 - bld r5,1 - bst r6,1 - bld r4,4 - bst r4,7 - bld r6,1 - bst r7,5 - bld r4,7 - bst r6,6 - bld r7,5 - bst r7,3 - bld r6,6 - bst r5,6 - bld r7,3 - bst r7,0 - bld r5,6 - bst r0,0 - bld r7,0 - bst r4,3 - bld r0,0 - bst r5,5 - bld r4,3 - bst r6,4 - bld r5,5 - bst r6,3 - bld r6,4 - bst r5,7 - bld r6,3 - bst r7,4 - bld r5,7 - bst r6,2 - bld r7,4 - bst r5,3 - bld r6,2 - bst r5,4 - bld r5,3 - bst r6,0 - bld r5,4 - bst r0,0 - bld r6,0 - 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 r8,2 - bld r8,0 - bst r9,2 - bld r8,2 - bst r9,1 - bld r9,2 - bst r8,5 - bld r9,1 - bst r10,6 - bld r8,5 - bst r11,0 - bld r10,6 - bst r8,3 - bld r11,0 - bst r9,6 - bld r8,3 - bst r11,1 - bld r9,6 - bst r8,7 - bld r11,1 - bst r11,6 - bld r8,7 - bst r11,3 - bld r11,6 - bst r9,7 - bld r11,3 - bst r11,5 - bld r9,7 - bst r10,7 - bld r11,5 - bst r11,4 - bld r10,7 - bst r10,3 - bld r11,4 - bst r9,4 - bld r10,3 - bst r10,1 - bld r9,4 - bst r8,4 - bld r10,1 - bst r10,2 - bld r8,4 - bst r9,0 - bld r10,2 - bst r8,1 - bld r9,0 - bst r8,6 - bld r8,1 - bst r11,2 - bld r8,6 - bst r9,3 - bld r11,2 - bst r9,5 - bld r9,3 - bst r10,5 - bld r9,5 - bst r10,4 - bld r10,5 - bst r10,0 - bld r10,4 - bst r0,0 - bld r10,0 - bst r12,0 - bld r0,0 - bst r12,3 - bld r12,0 - bst r13,7 - bld r12,3 - bst r15,6 - bld r13,7 - bst r15,0 - bld r15,6 - bst r0,0 - bld r15,0 - bst r12,1 - bld r0,0 - bst r12,7 - bld r12,1 - bst r15,7 - bld r12,7 - bst r15,4 - bld r15,7 - bst r14,0 - bld r15,4 - bst r0,0 - bld r14,0 - bst r12,2 - bld r0,0 - bst r13,3 - bld r12,2 - bst r13,6 - bld r13,3 - bst r15,2 - bld r13,6 - bst r13,0 - bld r15,2 - bst r0,0 - bld r13,0 - bst r12,4 - bld r0,0 - bst r14,3 - bld r12,4 - bst r13,5 - bld r14,3 - bst r14,6 - bld r13,5 - bst r15,1 - bld r14,6 - bst r0,0 - bld r15,1 - bst r12,5 - bld r0,0 - bst r14,7 - bld r12,5 - bst r15,5 - bld r14,7 - bst r14,4 - bld r15,5 - bst r14,1 - bld r14,4 - bst r0,0 - bld r14,1 - bst r12,6 - bld r0,0 - bst r15,3 - bld r12,6 - bst r13,4 - bld r15,3 - bst r14,2 - bld r13,4 - bst r13,1 - bld r14,2 - bst r0,0 - bld r13,1 - eor r4,r26 - eor r5,r27 - eor r6,r24 - eor r7,r25 - ldi r18,128 - eor r15,r18 - 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 - inc r16 - ret -804: -#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 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 - - .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 - 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 - 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 - 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 - ldi r30,lo8(table_0) - ldi r31,hi8(table_0) -#if defined(RAMPZ) - ldi r17,hh8(table_0) - 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 - 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 - ld r26,Z - ldd r27,Z+1 - ldd r16,Z+2 - ldd r17,Z+3 - 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 - 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 - std Y+9,r26 - std Y+10,r27 - std Y+11,r16 - std Y+12,r17 - ldd r26,Z+12 - ldd r27,Z+13 - ldd r16,Z+14 - ldd r17,Z+15 - std Y+13,r26 - std Y+14,r27 - std Y+15,r16 - std Y+16,r17 - ldi r30,lo8(table_0) - ldi r31,hi8(table_0) -#if defined(RAMPZ) - ldi r26,hh8(table_0) - in r0,_SFR_IO_ADDR(RAMPZ) - push r0 - out _SFR_IO_ADDR(RAMPZ),r26 -#endif - mov r19,r1 - mov r26,r1 -307: - 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 - movw r20,r2 - movw r22,r4 - mov r0,r6 - and r0,r20 - eor r10,r0 - mov r0,r7 - and r0,r21 - eor r11,r0 - mov r0,r8 - and r0,r22 - eor r12,r0 - mov r0,r9 - and r0,r23 - eor r13,r0 - movw r2,r14 - movw r4,r24 - movw r14,r20 - movw r24,r22 - bst r2,1 - bld r0,0 - bst r2,4 - bld r2,1 - bst r4,0 - bld r2,4 - bst r2,2 - bld r4,0 - bst r3,0 - bld r2,2 - bst r2,3 - bld r3,0 - bst r3,4 - bld r2,3 - bst r4,3 - bld r3,4 - bst r3,6 - bld r4,3 - bst r5,3 - bld r3,6 - bst r3,5 - bld r5,3 - bst r4,7 - bld r3,5 - bst r5,6 - bld r4,7 - bst r5,1 - bld r5,6 - bst r2,5 - bld r5,1 - bst r4,4 - bld r2,5 - bst r4,2 - bld r4,4 - bst r3,2 - bld r4,2 - bst r3,3 - bld r3,2 - bst r3,7 - bld r3,3 - bst r5,7 - bld r3,7 - bst r5,5 - bld r5,7 - bst r4,5 - bld r5,5 - bst r4,6 - bld r4,5 - bst r5,2 - bld r4,6 - bst r3,1 - bld r5,2 - bst r2,7 - bld r3,1 - bst r5,4 - bld r2,7 - bst r4,1 - bld r5,4 - bst r2,6 - bld r4,1 - bst r5,0 - bld r2,6 - bst r0,0 - bld r5,0 - bst r6,0 - bld r0,0 - bst r6,1 - bld r6,0 - bst r6,5 - bld r6,1 - bst r8,5 - bld r6,5 - bst r8,7 - bld r8,5 - bst r9,7 - bld r8,7 - bst r9,6 - bld r9,7 - bst r9,2 - bld r9,6 - bst r7,2 - bld r9,2 - bst r7,0 - bld r7,2 - bst r0,0 - bld r7,0 - bst r6,2 - bld r0,0 - bst r7,1 - bld r6,2 - bst r6,4 - bld r7,1 - bst r8,1 - bld r6,4 - bst r6,7 - bld r8,1 - bst r9,5 - bld r6,7 - bst r8,6 - bld r9,5 - bst r9,3 - bld r8,6 - bst r7,6 - bld r9,3 - bst r9,0 - bld r7,6 - bst r0,0 - bld r9,0 - bst r6,3 - bld r0,0 - bst r7,5 - bld r6,3 - bst r8,4 - bld r7,5 - bst r8,3 - bld r8,4 - bst r7,7 - bld r8,3 - bst r9,4 - bld r7,7 - bst r8,2 - bld r9,4 - bst r7,3 - bld r8,2 - bst r7,4 - bld r7,3 - bst r8,0 - bld r7,4 - bst r0,0 - bld r8,0 - 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 r10,2 - bld r10,0 - bst r11,2 - bld r10,2 - bst r11,1 - bld r11,2 - bst r10,5 - bld r11,1 - bst r12,6 - bld r10,5 - bst r13,0 - bld r12,6 - bst r10,3 - bld r13,0 - bst r11,6 - bld r10,3 - bst r13,1 - bld r11,6 - bst r10,7 - bld r13,1 - bst r13,6 - bld r10,7 - bst r13,3 - bld r13,6 - bst r11,7 - bld r13,3 - bst r13,5 - bld r11,7 - bst r12,7 - bld r13,5 - bst r13,4 - bld r12,7 - bst r12,3 - bld r13,4 - bst r11,4 - bld r12,3 - bst r12,1 - bld r11,4 - bst r10,4 - bld r12,1 - bst r12,2 - bld r10,4 - bst r11,0 - bld r12,2 - bst r10,1 - bld r11,0 - bst r10,6 - bld r10,1 - bst r13,2 - bld r10,6 - bst r11,3 - bld r13,2 - bst r11,5 - bld r11,3 - bst r12,5 - bld r11,5 - bst r12,4 - bld r12,5 - bst r12,0 - bld r12,4 - bst r0,0 - bld r12,0 - bst r14,0 - bld r0,0 - bst r14,3 - bld r14,0 - bst r15,7 - bld r14,3 - bst r25,6 - bld r15,7 - bst r25,0 - bld r25,6 - bst r0,0 - bld r25,0 - bst r14,1 - bld r0,0 - bst r14,7 - bld r14,1 - bst r25,7 - bld r14,7 - bst r25,4 - bld r25,7 - bst r24,0 - bld r25,4 - bst r0,0 - bld r24,0 - bst r14,2 - bld r0,0 - bst r15,3 - bld r14,2 - bst r15,6 - bld r15,3 - bst r25,2 - bld r15,6 - bst r15,0 - bld r25,2 - bst r0,0 - bld r15,0 - bst r14,4 - bld r0,0 - bst r24,3 - bld r14,4 - bst r15,5 - bld r24,3 - bst r24,6 - bld r15,5 - bst r25,1 - bld r24,6 - bst r0,0 - bld r25,1 - bst r14,5 - bld r0,0 - bst r24,7 - bld r14,5 - bst r25,5 - bld r24,7 - bst r24,4 - bld r25,5 - bst r24,1 - bld r24,4 - bst r0,0 - bld r24,1 - bst r14,6 - bld r0,0 - bst r25,3 - bld r14,6 - bst r15,4 - bld r25,3 - bst r24,2 - bld r15,4 - bst r15,1 - bld r24,2 - bst r0,0 - bld r15,1 - 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 - ldd r20,Y+13 - ldd r21,Y+14 - ldd r22,Y+15 - ldd r23,Y+16 - eor r6,r20 - eor r7,r21 - eor r8,r22 - eor r9,r23 - lsl r20 - rol r21 - adc r20,r1 - lsl r20 - rol r21 - adc r20,r1 - lsl r20 - rol r21 - adc r20,r1 - lsl r20 - rol r21 - adc r20,r1 - mov r0,r1 - lsr r23 - ror r22 - ror r0 - lsr r23 - ror r22 - ror r0 - or r23,r0 - ldd r0,Y+1 - std Y+1,r20 - ldd r20,Y+5 - std Y+5,r0 - ldd r0,Y+9 - std Y+9,r20 - std Y+13,r0 - ldd r0,Y+2 - std Y+2,r21 - ldd r21,Y+6 - std Y+6,r0 - ldd r0,Y+10 - std Y+10,r21 - std Y+14,r0 - ldd r0,Y+3 - std Y+3,r22 - ldd r22,Y+7 - std Y+7,r0 - ldd r0,Y+11 - std Y+11,r22 - std Y+15,r0 - ldd r0,Y+4 - std Y+4,r23 - ldd r23,Y+8 - std Y+8,r0 - ldd r0,Y+12 - std Y+12,r23 - std Y+16,r0 - ldi r20,128 - eor r25,r20 - 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 - inc r19 - cpi r19,40 - breq 727f - inc r26 - ldi r27,5 - cpse r26,r27 - rjmp 307b - mov r26,r1 - eor r2,r18 - eor r3,r18 - eor r4,r18 - eor r5,r18 - rjmp 307b -727: -#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_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 - 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+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 - 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+13,r26 - std Y+14,r27 - std Y+15,r16 - std Y+16,r17 - ldi r30,lo8(table_0) - ldi r31,hi8(table_0) -#if defined(RAMPZ) - ldi r26,hh8(table_0) - 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 diff --git a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-full-avr.S b/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-full-avr.S deleted file mode 100644 index 3a7e6fb..0000000 --- a/hyena/Implementations/crypto_aead/hyenav2/rhys-avr/internal-gift128n-full-avr.S +++ /dev/null @@ -1,8173 +0,0 @@ -#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(__